rizin/test/db/cmd/cmd_open
Rot127 bdd913ab5e
Fix definition of alignment
* Fix definition of alignment.

Alignments for code and data is not defind for 0, bubt nonetheless it
was assigned this value everytwhere. This changes the default value to 1.

* Enforce an alignment of at least 1.

* Fix alignment checks (default is now 1).

* Fix alignment check. 1 was assumed to be valid.

* Fix places where an alignment of 0 is considered still a valid value.

* Fix integration test with invalid alignment

* Remove debug printf

* Remove addrmod member.

It was pressumingly used to indicate aligned addresses in print mode.
But it wasn't documented and the usefulness is dubious.
Since it is easy to spot for users to see if addresses are aligned or not anyways.

* Fix tests after cherry-pick

* Fix rz-find test which consumed the '-X' as number value for '-a'.

* Fix case of arch module not defining value alignments.
2025-02-14 01:27:47 +08:00

709 lines
11 KiB
Text

NAME=oon
FILE=bins/mach0/mac-ls2
CMDS=<<EOF
oon
ol
EOF
EXPECT=<<EOF
4 * r-- 0x00009730 bins/mach0/mac-ls2
EOF
RUN
NAME=oonn
FILE=bins/mach0/mac-ls2
CMDS=<<EOF
pfn~?
oonn
pfn~?
ol~?
EOF
EXPECT=<<EOF
79
137
1
EOF
RUN
NAME=oml=
FILE=bins/mach0/mac-ls2
BROKEN=1
CMDS=oml=
EXPECT=<<EOF
0* 0x100000000 ################-------------- 0x100005000 r-x 3 fmap.TEXT
1 0x100005000 ---------------####----------- 0x100006000 r-- 3 fmap.DATA
2 0x100006000 ------------------############ 0x10000a000 r-- 3 fmap.LINKEDIT
=> 0x1000011e8 ------------------------------ 0x1000012e8
EOF
RUN
NAME=obo baddrs
FILE=bins/mach0/mac-ls2
ARGS=-B0x50000
CMDS=<<EOF
s
o bins/mach0/mac-ls
s
obo 3
s
obo 4
s
EOF
EXPECT=<<EOF
0x511e8
0x100001058
0x511e8
0x100001058
EOF
RUN
NAME=oom
FILE=bins/elf/libmagic.so
CMDS=<<EOF
ol~?
oom
ol~malloc?
EOF
EXPECT=<<EOF
4
1
EOF
RUN
NAME=o-[0]
FILE=malloc://1024
CMDS=o- `o~[0]`;o
EXPECT=
RUN
NAME=oj-
FILE=malloc://1024
CMDS=o- `oj~{[0].fd}`;o
EXPECT=
RUN
NAME=o =
FILE=malloc://1024
CMDS=<<EOF
o =;ol~?
EOF
EXPECT=<<EOF
2
EOF
RUN
NAME=om
FILE=malloc://1024
CMDS=<<EOF
om `ol~[0]` 0x4000
oml~?
EOF
EXPECT=<<EOF
2
EOF
RUN
NAME=om2
FILE=malloc://1024
CMDS=<<EOF
om `ol~[0]` 0x4000
om `ol~[0]` 0x4000
oml~?
EOF
EXPECT=<<EOF
3
EOF
RUN
NAME=omn - crash
FILE==
CMDS=omn
EXPECT=
RUN
NAME=oob 10
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=<<EOF
10oob
pi 1
EOF
EXPECT=<<EOF
xor ebp, ebp
EOF
RUN
NAME=oo+ 10
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=<<EOF
10oo+
pi 1
EOF
EXPECT=<<EOF
xor ebp, ebp
EOF
RUN
NAME=oob consider baddr
FILE=bins/mach0/mac-ls
CMDS=<<EOF
e bin.baddr=0xf00000
k old_v=`ieq`
oob
iI~baddr[1]
ie:vaddr:quiet
p8 10 @ entry0
p8 10 @ `k old_v`
EOF
EXPECT=<<EOF
0x00f00000
0x00f01058
554889e5415741564155
ffffffffffffffffffff
EOF
RUN
NAME=oob consider laddr 32bit
FILE=bins/mach0/fatmach0-3true
ARGS=-a x86 -b 32
CMDS=<<EOF
e bin.laddr=0x5000
e bin.baddr=-1
oob
iI~laddr[1]
iI~baddr[1]
EOF
EXPECT=<<EOF
0x00000000
0x00001000
EOF
RUN
NAME=oob consider laddr 64bit
FILE=bins/mach0/fatmach0-3true
ARGS=-a x86 -b 64
CMDS=<<EOF
e bin.laddr=0x5000
e bin.baddr=-1
oob
iI~laddr[1]
iI~baddr[1]
EOF
EXPECT=<<EOF
0x00000000
0x100000000
EOF
RUN
NAME=oob from malloc
FILE=malloc://1024
CMDS=<<EOF
wx 7f454c4601010100b32ae9310000000002000300010000000800200020000000010000000000000000002000010000001b0300001b0300000700000000100000e901000000b0e8a502000049e7551ff1c2a03ff17995d4f3f241adf35954d7a87b543f48e7551ff1c3a03ff179bc17f3795487eb79543fc0b0ddf14b78543ff1b4d41632fc944be0c0563ed179e60b197f563ff190273df179bf3e412aeda9f3595485f579543f1987553ff1914c3df1796722677b743f856aeddaf159548dec91813ef179bd7df379544dc722d1e48491ed09f05954859979543f19c3553ff190733df1795e1fa60b3b519659245e820a2350831d781f8216264d88577a11fb73546c9e0b2646d11b214bd10d3c5ad1092650921c274cd10a315a9c0a744b9e59365ad10d265e921c3011df57747d881c7a11df735412cf59074a921a314c8259751ed13a3b51960b354b8415354b98163a4cdf577a35d1597901d1203b4ad11a3551d10a31519559395ad1003b4a835927509d0c20569e177b5c9e14395a9f0d271f900d744b991c745e9316225ad11435569d59355b950b7a11df7354c511b6cac511c2838b48c9899750f5818854b6c7c55fff99915eb199c552e48b865afb8fc512a4e0c511b6cac511bbc7c81cbbc7c81cbbc7c81cbbc7c81cbbc7c81cbbc7c81cbbc7c81cbbc7c81cbbe0ef65fe839611f9848011fe8b9611f7ca9550e49e8c52e3868443fa93c542fb8b895db6998c4bf3c4cb1f9ca28a41f3ca9016fa86c556f39ec542f9878011f09f8b11e1839159b683911f9ce0bc5ee3ca8650f8ca8f5eff84c55cf3ca8445b693845fff99915ed6849049f38ecb5ee48dc55ee4ca8a5fb6c99654f58e8047d68c9754f3848a55f3c48b54e2e0ef74f89e8043b69e8d54b6ba8442e59d8a43f2cadf11b6cae53196ea3ff17954d6f079543f414894b632c950f271bae4d6f079543fd24894b63287978ff2b4d4fc41f092b606f08d92c0a9ffdd0bbabd3cf179548f393a65ff78baede0f37954fe187bea37f1595492f0bab6c4708a3f3bf92c972d2390b84b00200089c689f7b9a5020000c1e902ad35f179543fabe2f7c3e9010000003231c089c3fec0cd80c3
oba
i~bintype[1]
.ie*
p8 10 @ entry0
EOF
EXPECT=<<EOF
elf
b32ae931000000000200
EOF
RUN
NAME=ob select files
FILE=malloc://1024
CMDS=<<EOF
e scr.null=true
o malloc://512
e scr.null=false
i~file[1]
obo 3
i~file[1]
obo 4
i~file[1]
obo 3
i~file[1]
EOF
EXPECT=<<EOF
malloc://512
malloc://1024
malloc://512
malloc://1024
EOF
RUN
NAME=ob select files binobj
FILE=bins/elf/libmagic.so
CMDS=<<EOF
iiq~?
e scr.null=true
o malloc://1024
e scr.null=false
iiq~?
EOF
EXPECT=<<EOF
38
0
EOF
RUN
NAME=ob select files binobj2
FILE=bins/elf/libmagic.so
CMDS=<<EOF
isq~?
e scr.null=true
o bins/elf/true32
e scr.null=false
isq~?
# raise back
op `ol~:0[0]`
isq~?
EOF
EXPECT=<<EOF
408
46
408
EOF
RUN
NAME=ob 0 fix
FILE=<<EOF
bins/elf/_Exit (42)
bins/elf/libverifyPass.so
bins/elf/libc.so.6
EOF
CMDS=<<EOF
obl~[0-1]
echo
ob 1; i~^fd
ob 2; i~^fd
ob 0; i~^fd
EOF
EXPECT=<<EOF
0 3
1 5
2 9
fd 5
fd 9
fd 3
EOF
RUN
NAME=oC
FILE==
CMDS=<<EOF
wx 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
s 0x10
px 16~:1
echo
oC $b
px 16~:1
echo
oml
echo
omp 1
px 16~:1
EOF
EXPECT=<<EOF
0x00000010 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f ................
0x00000010 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f !"#$%&'()*+,-./
1 fd: 3 +0x00000000 0x00000000 - 0x000001ff rwx
2 fd: 4 +0x00000000 0x00000000 * 0x000000ff rwx
0x00000010 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f ................
EOF
RUN
NAME=malloc ob fix
FILE=--
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
o malloc://1024
obl
EOF
EXPECT=<<EOF
0 3 x86-64 ba:0x00000000 sz:1024 malloc://1024
EOF
RUN
NAME=oblj
FILE==
ARGS=-a x86 -b 64
CMDS=<<EOF
oblj~{}
EOF
EXPECT=<<EOF
[
{
"name": "malloc://512",
"iofd": 3,
"bfid": 0,
"size": 512,
"obj": {
"arch": "x86",
"bits": 64,
"binoffset": 0,
"objsize": 512
}
}
]
EOF
RUN
NAME=o+ writable maps fix
FILE=--
CMDS=<<EOF
o+ bins/elf/ls
oml
# Possible parallelism problem
# echo
# pv1
# $old=`pv1`
# wx 0x90
# pv1
# wx `$old?`
# pv1
EOF
EXPECT=<<EOF
1 fd: 4 +0x00000000 0x00023560 - 0x00023f17 rwx vmap.reloc-targets
2 fd: 3 +0x00000000 0x00000000 - 0x0000347f rwx fmap.LOAD0
3 fd: 3 +0x00004000 0x00004000 * 0x00016790 rwx fmap.LOAD1
4 fd: 3 +0x00017000 0x00017000 - 0x0001f7bf rwx fmap.LOAD2
5 fd: 5 +0x00000000 0x00022268 - 0x00023557 rwx mmap.LOAD3
6 fd: 6 +0x00020050 0x00021050 - 0x00022267 rwx vmap.LOAD3
EOF
RUN
NAME=o--
FILE==
ARGS=-a x86 -b 64
CMDS=<<EOF
o =
ol~?
obl
echo --
o--
ol~?
obl
EOF
EXPECT=<<EOF
2
0 3 x86-64 ba:0x00000000 sz:512 malloc://512
1 4 x86-64 ba:0x00000000 sz:512 malloc://512
--
0
EOF
RUN
NAME=o- 3
FILE==
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
o =
o- 3
ol~?
obl
EOF
EXPECT=<<EOF
1
1 4 x86-64 ba:0x00000000 sz:512 malloc://512
EOF
RUN
NAME=oc
FILE=bins/elf/true32
CMDS=<<EOF
obl~?
i
oc =
echo --
obl~?
i
EOF
EXPECT=<<EOF
1
fd 3
file bins/elf/true32
size 0x560c
humansz 21.5K
mode r-x
format elf
iorw false
block 0x100
type EXEC (Executable file)
arch x86
cpu N/A
features N/A
baddr 0x08048000
binsz 0x000050bc
bintype elf
bits 32
class ELF32
compiler N/A
dbg_file N/A
endian LE
hdr.csum N/A
guid N/A
intrp /lib/ld-linux.so.2
laddr 0x00000000
lang c
machine Intel 80386
maxopsz 16
minopsz 1
os linux
cc N/A
pcalign 1
relro partial
rpath NONE
subsys linux
stripped true
crypto false
havecode true
va true
sanitiz false
static false
linenum false
lsyms false
canary true
PIE false
RELROCS false
NX true
--
1
fd 3
file malloc://512
size 0x200
humansz 512
mode rwx
format any
iorw true
block 0x100
type
EOF
RUN
NAME=ob
FILE=bins/elf/true32
CMDS=<<EOF
ob.
obf bins/elf/ls
ob.
ob 0
ob.
EOF
EXPECT=<<EOF
0
1
0
EOF
RUN
NAME=ox
FILE=bins/elf/true32
CMDS=<<EOF
ol
oml
ox 3 4
ol
oml
EOF
EXPECT=<<EOF
3 * r-x 0x0000560c bins/elf/true32
4 - r-x 0x000000b0 vfile://0/reloc-targets
5 - rw- 0x00000184 null://388
1 fd: 4 +0x00000000 0x0804e248 - 0x0804e2f7 r-- vmap.reloc-targets
2 fd: 3 +0x00000000 0x08048000 * 0x0804c657 r-x fmap.LOAD0
3 fd: 5 +0x00000000 0x0804e0bc - 0x0804e23f rw- mmap.LOAD1
4 fd: 3 +0x00004ef0 0x0804def0 - 0x0804e0bb r-- fmap.LOAD1
3 - r-x 0x000000b0 vfile://0/reloc-targets
4 * r-x 0x0000560c bins/elf/true32
5 - rw- 0x00000184 null://388
1 fd: 4 +0x00000000 0x0804e248 - 0x0804e2f7 r-- vmap.reloc-targets
2 fd: 3 +0x00000000 0x08048000 * 0x0804c657 r-x fmap.LOAD0
3 fd: 5 +0x00000000 0x0804e0bc - 0x0804e23f rw- mmap.LOAD1
4 fd: 3 +0x00004ef0 0x0804def0 - 0x0804e0bb r-- fmap.LOAD1
EOF
RUN
NAME=ol quiet
FILE=bins/elf/true32
CMDS=<<EOF
olq
ol.
ol.q
EOF
EXPECT=<<EOF
3
4
5
3 * r-x 0x0000560c bins/elf/true32
3
EOF
RUN
NAME=on+
FILE=bins/elf/true32
ARGS=-n
CMDS=<<EOF
cp `ol.t:uri:quiet` .true32-copy
on+ .true32-copy
p8 2
wx 9090
p8 2
o--
rm .true32-copy
EOF
EXPECT=<<EOF
7f45
9090
EOF
RUN
NAME=o=
FILE=bins/elf/true32
CMDS=<<EOF
o=
EOF
EXPECT=<<EOF
3 * r-x 0x0000560c [#########################] bins/elf/true32
4 - r-x 0x000000b0 [-------------------------] vfile://0/reloc-targets
5 - rw- 0x00000184 [-------------------------] null://388
EOF
RUN
NAME=oa
FILE=bins/elf/true32
BROKEN=1
CMDS=<<EOF
pd 3
oa arm 64
pd 3
EOF
EXPECT=
RUN
NAME=open priority
FILE=bins/elf/true32
CMDS=<<EOF
o bins/elf/true
op 3
ol~*
opn
opn
ol~*
opp
ol~*
opr
opr
ol~*
opr
ol~*
EOF
EXPECT=<<EOF
3 * r-x 0x0000560c bins/elf/true32
5 * rw- 0x00000184 null://388
4 * r-x 0x000000b0 vfile://0/reloc-targets
11 * r-x 0x000087c0 vfile://1/patched
3 * r-x 0x0000560c bins/elf/true32
EOF
RUN
NAME=open maps all VA
FILE=bins/elf/true32
CMDS=<<EOF
oml~true32
oma 3
oml~true32
EOF
EXPECT=<<EOF
5 fd: 3 +0x00000000 0x00000000 * 0xfffffffffffffffe r-x bins/elf/true32
EOF
RUN
NAME=maps relocation
FILE==
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
wx 9090
pi 2
oml
omb 1 0x3000
oml
pi 2
pi 2 @ 0x3000
EOF
EXPECT=<<EOF
nop
nop
1 fd: 3 +0x00000000 0x00000000 * 0x000001ff rwx
1 fd: 3 +0x00000000 0x00003000 - 0x000031ff rwx
invalid
invalid
nop
nop
EOF
RUN
NAME=maps cur relocation and priority
FILE==
CMDS=<<EOF
o malloc://512
o malloc://512
o malloc://512
e asm.arch=x86
e asm.bits=64
omp 1
wx 9090
omp 2
wx c3c3
ompd 2
pi 2
oml
omb. 0x3000
omp 2
oml
pi 2
pi 2 @ 0x3000
EOF
EXPECT=<<EOF
nop
nop
2 fd: 4 +0x00000000 0x00000000 - 0x000001ff rw-
3 fd: 5 +0x00000000 0x00000000 - 0x000001ff rw-
4 fd: 6 +0x00000000 0x00000000 - 0x000001ff rw-
1 fd: 3 +0x00000000 0x00000000 * 0x000001ff rwx
3 fd: 5 +0x00000000 0x00000000 - 0x000001ff rw-
4 fd: 6 +0x00000000 0x00000000 - 0x000001ff rw-
1 fd: 3 +0x00000000 0x00003000 - 0x000031ff rwx
2 fd: 4 +0x00000000 0x00000000 * 0x000001ff rw-
ret
ret
nop
nop
EOF
RUN
NAME=maps_names
FILE==
CMDS=<<EOF
omn HelloMap
oml
omn-
oml
omni 1 HelloMap1
oml
omni- 1
oml
EOF
EXPECT=<<EOF
1 fd: 3 +0x00000000 0x00000000 * 0x000001ff rwx HelloMap
1 fd: 3 +0x00000000 0x00000000 * 0x000001ff rwx
1 fd: 3 +0x00000000 0x00000000 * 0x000001ff rwx HelloMap1
1 fd: 3 +0x00000000 0x00000000 * 0x000001ff rwx
EOF
RUN