rizin/test/db/rzil/ppc32
2024-02-19 19:39:00 +08:00

230 lines
No EOL
5.1 KiB
Text

NAME=Printing il statements in various formats
FILE=bins/elf/ppc/emulateme-ppc32be
CMDS=<<EOF
echo -- oneline
aoi 5
echo -- pretty
aoip 5
echo -- graph
agI
EOF
EXPECT=<<EOF
-- oneline
0x100278 (seq (set res (| (var r1) (var r1))) (set r9 (var res)) empty)
0x10027c (seq (set mstart (bv 8 0x20)) (set mstop (bv 8 0x3b)) (set m (bv 64 0x0)) (repeat (! (== (var mstart) (var mstop))) (seq (set m (| (var m) (>> (>> (bv 64 0x0) (bv 8 0x1) true) (var mstart) false))) (set mstart (mod (+ (var mstart) (bv 8 0x1)) (bv 8 0x40))))) (set m (| (var m) (>> (>> (bv 64 0x0) (bv 8 0x1) true) (var mstop) false))) (set mask (cast 32 false (var m))) empty (set result (& (let rotl32_x (cast 32 false (var r1)) (let rotl32_y (bv 8 0x0) (| (<< (var rotl32_x) (var rotl32_y) false) (>> (var rotl32_x) (- (bv 8 0x20) (cast 8 false (var rotl32_y))) false)))) (var mask))) (set r1 (var result)) empty)
0x100280 (set r0 (let v (bv 16 0x0) (ite (msb (var v)) (cast 32 (msb (var v)) (var v)) (cast 32 false (var v)))))
0x100284 (seq (storew 0 (+ (var r1) (let v (bv 16 0xfff0) (ite (msb (var v)) (cast 32 (msb (var v)) (var v)) (cast 32 false (var v))))) (cast 32 false (var r1))) (set r1 (+ (var r1) (let v (bv 16 0xfff0) (ite (msb (var v)) (cast 32 (msb (var v)) (var v)) (cast 32 false (var v)))))))
0x100288 (set lr (cast 32 false (var r0)))
-- pretty
0x100278
(seq
(set res
(|
(var r1)
(var r1)))
(set r9
(var res))
empty)
0x10027c
(seq
(set mstart
(bv 8 0x20))
(set mstop
(bv 8 0x3b))
(set m
(bv 64 0x0))
(repeat
(!
(==
(var mstart)
(var mstop)))
(seq
(set m
(|
(var m)
(>>
(>>
(bv 64 0x0)
(bv 8 0x1)
true)
(var mstart)
false)))
(set mstart
(mod
(+
(var mstart)
(bv 8 0x1))
(bv 8 0x40)))))
(set m
(|
(var m)
(>>
(>>
(bv 64 0x0)
(bv 8 0x1)
true)
(var mstop)
false)))
(set mask
(cast 32
false
(var m)))
empty
(set result
(&
(let rotl32_x
(cast 32
false
(var r1))
(let rotl32_y
(bv 8 0x0)
(|
(<<
(var rotl32_x)
(var rotl32_y)
false)
(>>
(var rotl32_x)
(-
(bv 8 0x20)
(cast 8
false
(var rotl32_y)))
false))))
(var mask)))
(set r1
(var result))
empty)
0x100280
(set r0
(let v
(bv 16 0x0)
(ite
(msb
(var v))
(cast 32
(msb
(var v))
(var v))
(cast 32
false
(var v)))))
0x100284
(seq
(storew 0
(+
(var r1)
(let v
(bv 16 0xfff0)
(ite
(msb
(var v))
(cast 32
(msb
(var v))
(var v))
(cast 32
false
(var v)))))
(cast 32
false
(var r1)))
(set r1
(+
(var r1)
(let v
(bv 16 0xfff0)
(ite
(msb
(var v))
(cast 32
(msb
(var v))
(var v))
(cast 32
false
(var v)))))))
0x100288
(set lr
(cast 32
false
(var r0)))
-- graph
.-------------.
| mr |
`-------------'
v v v
| | |
| | '--------------.
.--------------' '. |
| | |
| | |
.------------. .-----------. .----------.
| set: res | | set: r9 | | empty |
`------------' `-----------' `----------'
v v
| |
'. |
| .'
| |
.-----------. .------------.
| or | | var: res |
`-----------' `------------'
v v
| |
.---------' |
| '---.
| |
.-----------. .-----------.
| var: r1 | | var: r1 |
`-----------' `-----------'
EOF
RUN
NAME=emulateme-big-endian
FILE=bins/elf/ppc/emulateme-ppc32be
TIMEOUT=30
CMDS=<<EOF
s sym.decrypt
e str.search.encoding=utf8
ps @ obj.seckrit
aezi
o malloc://0x1000 0x400000
o malloc://0x10 0x500000
e io.cache=1
e cfg.bigendian=1
w AnyColourYouLike @ 0x500000
ar r1=0x400000
ar r3=0x500000
aezsu 0x0010057c
ps @ obj.seckrit
EOF
EXPECT=<<EOF
QSMwX\x14Q_El\x17\x7fnx\x7f\x1c
Hello from RzIL!
EOF
EXPECT_ERR=
RUN
NAME=emulateme-little-endian
FILE=bins/elf/ppc/emulateme-ppc32le
TIMEOUT=30
CMDS=<<EOF
s sym.decrypt
e str.search.encoding=utf8
ps @ obj.seckrit
aezi
o malloc://0x1000 0x400000
o malloc://0x10 0x500000
e io.cache=1
w AnyColourYouLike @ 0x500000
ar r1=0x400000
ar r3=0x500000
aezsu 0x00100504
ps @ obj.seckrit
EOF
EXPECT=<<EOF
QSMwX\x14Q_El\x17\x7fnx\x7f\x1c
Hello from RzIL!
EOF
RUN