mirror of
https://github.com/radareorg/radare2.git
synced 2024-11-23 21:29:49 +00:00
670 lines
12 KiB
Plaintext
670 lines
12 KiB
Plaintext
NAME=?e ~$! invert tac
|
|
FILE=bins/elf/crackme
|
|
CMDS=<<EOF
|
|
iS
|
|
?e --
|
|
iS~$!!
|
|
EOF
|
|
EXPECT=<<EOF
|
|
[Sections]
|
|
|
|
nth paddr size vaddr vsize perm type name
|
|
-------------------------------------------------------------
|
|
0 0x00000000 0x0 0x00000000 0x0 ---- NULL
|
|
1 0x00000200 0x1c 0x00400200 0x1c -r-- PROGBITS .interp
|
|
2 0x0000021c 0x20 0x0040021c 0x20 -r-- NOTE .note.ABI-tag
|
|
3 0x0000023c 0x24 0x0040023c 0x24 -r-- NOTE .note.gnu.build-id
|
|
4 0x00000260 0x3c 0x00400260 0x3c -r-- HASH .hash
|
|
5 0x000002a0 0x28 0x004002a0 0x28 -r-- GNU_HASH .gnu.hash
|
|
6 0x000002c8 0xf0 0x004002c8 0xf0 -r-- DYNSYM .dynsym
|
|
7 0x000003b8 0x65 0x004003b8 0x65 -r-- STRTAB .dynstr
|
|
8 0x0000041e 0x14 0x0040041e 0x14 -r-- GNU_VERSYM .gnu.version
|
|
9 0x00000438 0x20 0x00400438 0x20 -r-- GNU_VERNEED .gnu.version_r
|
|
10 0x00000458 0x48 0x00400458 0x48 -r-- RELA .rela.dyn
|
|
11 0x000004a0 0x90 0x004004a0 0x90 -r-- RELA .rela.plt
|
|
12 0x00000530 0x18 0x00400530 0x18 -r-x PROGBITS .init
|
|
13 0x00000548 0x70 0x00400548 0x70 -r-x PROGBITS .plt
|
|
14 0x000005c0 0x248 0x004005c0 0x248 -r-x PROGBITS .text
|
|
15 0x00000808 0xe 0x00400808 0xe -r-x PROGBITS .fini
|
|
16 0x00000818 0x3a 0x00400818 0x3a -r-- PROGBITS .rodata
|
|
17 0x00000854 0x24 0x00400854 0x24 -r-- PROGBITS .eh_frame_hdr
|
|
18 0x00000878 0x7c 0x00400878 0x7c -r-- PROGBITS .eh_frame
|
|
19 0x000008f8 0x10 0x006008f8 0x10 -rw- PROGBITS .ctors
|
|
20 0x00000908 0x10 0x00600908 0x10 -rw- PROGBITS .dtors
|
|
21 0x00000918 0x8 0x00600918 0x8 -rw- PROGBITS .jcr
|
|
22 0x00000920 0x1a0 0x00600920 0x1a0 -rw- DYNAMIC .dynamic
|
|
23 0x00000ac0 0x8 0x00600ac0 0x8 -rw- PROGBITS .got
|
|
24 0x00000ac8 0x48 0x00600ac8 0x48 -rw- PROGBITS .got.plt
|
|
25 0x00000b10 0x10 0x00600b10 0x10 -rw- PROGBITS .data
|
|
26 0x00000b20 0x0 0x00600b20 0x28 -rw- NOBITS .bss
|
|
27 0x00000b20 0x1c 0x00000000 0x1c ---- PROGBITS .comment
|
|
28 0x00000b3c 0xfe 0x00000000 0xfe ---- STRTAB .shstrtab
|
|
29 0x00001400 0x6a8 0x00000000 0x6a8 ---- SYMTAB .symtab
|
|
30 0x00001aa8 0x269 0x00000000 0x269 ---- STRTAB .strtab
|
|
|
|
--
|
|
30 0x00001aa8 0x269 0x00000000 0x269 ---- STRTAB .strtab
|
|
29 0x00001400 0x6a8 0x00000000 0x6a8 ---- SYMTAB .symtab
|
|
28 0x00000b3c 0xfe 0x00000000 0xfe ---- STRTAB .shstrtab
|
|
27 0x00000b20 0x1c 0x00000000 0x1c ---- PROGBITS .comment
|
|
26 0x00000b20 0x0 0x00600b20 0x28 -rw- NOBITS .bss
|
|
25 0x00000b10 0x10 0x00600b10 0x10 -rw- PROGBITS .data
|
|
24 0x00000ac8 0x48 0x00600ac8 0x48 -rw- PROGBITS .got.plt
|
|
23 0x00000ac0 0x8 0x00600ac0 0x8 -rw- PROGBITS .got
|
|
22 0x00000920 0x1a0 0x00600920 0x1a0 -rw- DYNAMIC .dynamic
|
|
21 0x00000918 0x8 0x00600918 0x8 -rw- PROGBITS .jcr
|
|
20 0x00000908 0x10 0x00600908 0x10 -rw- PROGBITS .dtors
|
|
19 0x000008f8 0x10 0x006008f8 0x10 -rw- PROGBITS .ctors
|
|
18 0x00000878 0x7c 0x00400878 0x7c -r-- PROGBITS .eh_frame
|
|
17 0x00000854 0x24 0x00400854 0x24 -r-- PROGBITS .eh_frame_hdr
|
|
16 0x00000818 0x3a 0x00400818 0x3a -r-- PROGBITS .rodata
|
|
15 0x00000808 0xe 0x00400808 0xe -r-x PROGBITS .fini
|
|
14 0x000005c0 0x248 0x004005c0 0x248 -r-x PROGBITS .text
|
|
13 0x00000548 0x70 0x00400548 0x70 -r-x PROGBITS .plt
|
|
12 0x00000530 0x18 0x00400530 0x18 -r-x PROGBITS .init
|
|
11 0x000004a0 0x90 0x004004a0 0x90 -r-- RELA .rela.plt
|
|
10 0x00000458 0x48 0x00400458 0x48 -r-- RELA .rela.dyn
|
|
9 0x00000438 0x20 0x00400438 0x20 -r-- GNU_VERNEED .gnu.version_r
|
|
8 0x0000041e 0x14 0x0040041e 0x14 -r-- GNU_VERSYM .gnu.version
|
|
7 0x000003b8 0x65 0x004003b8 0x65 -r-- STRTAB .dynstr
|
|
6 0x000002c8 0xf0 0x004002c8 0xf0 -r-- DYNSYM .dynsym
|
|
5 0x000002a0 0x28 0x004002a0 0x28 -r-- GNU_HASH .gnu.hash
|
|
4 0x00000260 0x3c 0x00400260 0x3c -r-- HASH .hash
|
|
3 0x0000023c 0x24 0x0040023c 0x24 -r-- NOTE .note.gnu.build-id
|
|
2 0x0000021c 0x20 0x0040021c 0x20 -r-- NOTE .note.ABI-tag
|
|
1 0x00000200 0x1c 0x00400200 0x1c -r-- PROGBITS .interp
|
|
0 0x00000000 0x0 0x00000000 0x0 ---- NULL
|
|
-------------------------------------------------------------
|
|
nth paddr size vaddr vsize perm type name
|
|
[Sections]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=?e ~
|
|
FILE=malloc://1024
|
|
CMDS=?e jeje~jojo
|
|
EXPECT=<<EOF
|
|
EOF
|
|
RUN
|
|
|
|
NAME=quote grep
|
|
FILE=malloc://1024
|
|
BROKEN=1
|
|
CMDS=<<EOF
|
|
e asm.arch=x86
|
|
e asm.bits=32
|
|
wx 90cc90cc
|
|
"pd 4"~nop
|
|
EOF
|
|
EXPECT=<<EOF
|
|
0x00000000 90 nop
|
|
0x00000002 90 nop
|
|
EOF
|
|
RUN
|
|
|
|
NAME=grep and/or
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=x86
|
|
e asm.bits=32
|
|
wx 90cc90cc
|
|
pd 4~nop
|
|
?e ==
|
|
pd 4~&90,nop
|
|
?e ==
|
|
pd 4~&90,404
|
|
?e ==
|
|
pd 4~90,404
|
|
EOF
|
|
EXPECT=<<EOF
|
|
0x00000000 90 nop
|
|
0x00000002 90 nop
|
|
==
|
|
0x00000000 90 nop
|
|
0x00000002 90 nop
|
|
==
|
|
==
|
|
0x00000000 90 nop
|
|
0x00000002 90 nop
|
|
EOF
|
|
RUN
|
|
|
|
NAME=?e \~
|
|
FILE=malloc://1024
|
|
CMDS=?e jeje\~jojo
|
|
EXPECT=<<EOF
|
|
jeje~jojo
|
|
EOF
|
|
RUN
|
|
|
|
# Basic grep.
|
|
NAME=px~:1[1]
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
wx 10203040
|
|
px~:1[1]
|
|
EOF
|
|
EXPECT=<<EOF
|
|
1020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=px~:1[1-3]
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
wx 102030405060708090
|
|
px~:1[1-3]
|
|
EOF
|
|
EXPECT=<<EOF
|
|
1020 3040 5060
|
|
EOF
|
|
RUN
|
|
|
|
NAME=px~:1[1-]
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
wx 10203040506070809010203040506070
|
|
px~:1[1-]
|
|
EOF
|
|
EXPECT=<<EOF
|
|
1020 3040 5060 7080 9010 2030 4050 6070 . 0@P`p... 0@P`p
|
|
EOF
|
|
RUN
|
|
|
|
NAME=px~?
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
wx 10203040
|
|
b 128
|
|
px~?
|
|
EOF
|
|
EXPECT=<<EOF
|
|
9
|
|
EOF
|
|
RUN
|
|
|
|
NAME=grep begin
|
|
FILE=malloc://1024
|
|
CMDS=i~^size
|
|
EXPECT=<<EOF
|
|
size 0x400
|
|
EOF
|
|
RUN
|
|
|
|
NAME=grep neg begin
|
|
FILE=malloc://1024
|
|
ARGS=-a x86 -b 64
|
|
CMDS=i~!^size
|
|
EXPECT=<<EOF
|
|
fd 3
|
|
file malloc://1024
|
|
humansz 1K
|
|
mode rwx
|
|
format any
|
|
iorw true
|
|
block 0x100
|
|
EOF
|
|
RUN
|
|
|
|
NAME=grep neg begin
|
|
FILE=malloc://1024
|
|
ARGS=-a x86 -b 64
|
|
CMDS=i~!^size
|
|
EXPECT=<<EOF
|
|
fd 3
|
|
file malloc://1024
|
|
humansz 1K
|
|
mode rwx
|
|
format any
|
|
iorw true
|
|
block 0x100
|
|
EOF
|
|
RUN
|
|
|
|
NAME=grep neg
|
|
FILE=malloc://1024
|
|
ARGS=-a x86 -b 64
|
|
CMDS=i~!fd
|
|
EXPECT=<<EOF
|
|
file malloc://1024
|
|
size 0x400
|
|
humansz 1K
|
|
mode rwx
|
|
format any
|
|
iorw true
|
|
block 0x100
|
|
EOF
|
|
RUN
|
|
|
|
NAME=double grep
|
|
FILE=malloc://1024
|
|
CMDS=i~f~d
|
|
EXPECT=<<EOF
|
|
fd 3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=double grep neg
|
|
FILE=malloc://1024
|
|
CMDS=i~f~!file
|
|
EXPECT=<<EOF
|
|
fd 3
|
|
format any
|
|
EOF
|
|
RUN
|
|
|
|
NAME=i;$s
|
|
FILE=malloc://1024
|
|
CMDS=?v `i~size[1]`-$s;?! ?e works
|
|
EXPECT=<<EOF
|
|
0x0
|
|
works
|
|
EOF
|
|
RUN
|
|
|
|
NAME=?e~[0]
|
|
FILE=malloc://1024
|
|
CMDS=?e 0x3~[0];?e 0x999~[0]
|
|
EXPECT=<<EOF
|
|
0x3
|
|
0x999
|
|
EOF
|
|
RUN
|
|
|
|
NAME=?e~[0]
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
?e hello world~[0]
|
|
?e hello world~[1]
|
|
EOF
|
|
EXPECT=<<EOF
|
|
hello
|
|
world
|
|
EOF
|
|
RUN
|
|
|
|
NAME=px~:1[3,5,0-1]
|
|
FILE=malloc://1024
|
|
CMDS=wx 102030405060708090;px~:1[3,5,0-1]
|
|
EXPECT=<<EOF
|
|
0x00000000 1020 5060 9000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=px~[3,5,0-1]:1
|
|
FILE=malloc://1024
|
|
CMDS=wx 102030405060708090;px~[3,5,0-1]:1
|
|
EXPECT=<<EOF
|
|
0x00000000 1020 5060 9000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=px~[3,5,0-1]:0..3
|
|
FILE=malloc://1024
|
|
CMDS=wx 102030405060708090;px~[3,5,0-1]:0..3
|
|
EXPECT=<<EOF
|
|
- offset 0 2
|
|
0x00000000 1020 5060 9000
|
|
0x00000010 0000 0000 0000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=px~[3,5,0-1]:-16
|
|
FILE=malloc://1024
|
|
CMDS=wx 102030405060708090;px~[3,5,0-1]:-16
|
|
EXPECT=<<EOF
|
|
0x00000000 1020 5060 9000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=range
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
i~:0
|
|
i~:1
|
|
i~:2
|
|
i~:..3
|
|
i~:1..2
|
|
i~:-2
|
|
i~:-1
|
|
?e 0\n1\n2\n3\n4~:-2
|
|
?e 0\n1\n2\n3\n4~:-2..
|
|
?e 0\n1\n2~:0..
|
|
?e 0\n1\n2~:..
|
|
EOF
|
|
EXPECT=<<EOF
|
|
fd 3
|
|
file malloc://1024
|
|
size 0x400
|
|
fd 3
|
|
file malloc://1024
|
|
size 0x400
|
|
file malloc://1024
|
|
iorw true
|
|
block 0x100
|
|
3
|
|
3
|
|
4
|
|
0
|
|
1
|
|
2
|
|
0
|
|
1
|
|
2
|
|
EOF
|
|
RUN
|
|
|
|
NAME=multigrep
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
i~size~?
|
|
i~nosuchstring~?
|
|
i~^f~or~?
|
|
i~?&f,or
|
|
i~or~true
|
|
i~&or,true
|
|
i~or~ny[0]
|
|
i~&or,ny[0]
|
|
i~or[1]~any
|
|
i~or[1]~:1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
1
|
|
0
|
|
1
|
|
1
|
|
iorw true
|
|
iorw true
|
|
format
|
|
format
|
|
any
|
|
true
|
|
EOF
|
|
RUN
|
|
|
|
NAME=multigrep2
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
?e hello world~hello~!boing
|
|
?e hello world~hello~world
|
|
?e hello world~!boing~world
|
|
?e hello world~!boing~!pongo
|
|
EOF
|
|
EXPECT=<<EOF
|
|
hello world
|
|
hello world
|
|
hello world
|
|
hello world
|
|
EOF
|
|
RUN
|
|
|
|
NAME=colgrep
|
|
CMDS=<<EOF
|
|
?e 0x3~[0]
|
|
?e 0x999~[0]'
|
|
EOF
|
|
EXPECT=<<EOF
|
|
0x3
|
|
0x999
|
|
EOF
|
|
RUN
|
|
|
|
NAME=colgrep
|
|
CMDS=<<EOF
|
|
?e hello world~[0]
|
|
?e hello world~[1]
|
|
EOF
|
|
EXPECT=<<EOF
|
|
hello
|
|
world
|
|
EOF
|
|
RUN
|
|
|
|
NAME=colgrep
|
|
CMDS=<<EOF
|
|
?e a\na b\na b c~[0]
|
|
?e a\na b\na b c~[1]
|
|
?e a\na b\na b c~[2]
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a
|
|
a
|
|
a
|
|
b
|
|
b
|
|
c
|
|
EOF
|
|
RUN
|
|
|
|
NAME=colgrep
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
wx 10203040
|
|
px~:1[1]
|
|
EOF
|
|
EXPECT=<<EOF
|
|
1020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=count grep
|
|
CMDS=<<EOF
|
|
wx 10203040
|
|
b 128
|
|
px~?
|
|
EOF
|
|
EXPECT=<<EOF
|
|
9
|
|
EOF
|
|
RUN
|
|
|
|
NAME=escaped grep
|
|
FILE=bins/elf/crackme
|
|
CMDS=pd 40~0x004005fe
|
|
EXPECT=<<EOF
|
|
`-> 0x004005fe 4883c408 add rsp, 8
|
|
EOF
|
|
RUN
|
|
|
|
NAME=sort lines
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
?e -- alphabetical sort --
|
|
?e 3\n2\n4\n1~$
|
|
?e -- inverted alphabetical sort --
|
|
?e 3\n2\n4\n1~$!
|
|
?e -- invert (like tac) --
|
|
?e 3\n2\n4\n1~$!!
|
|
EOF
|
|
EXPECT=<<EOF
|
|
-- alphabetical sort --
|
|
1
|
|
2
|
|
3
|
|
4
|
|
-- inverted alphabetical sort --
|
|
4
|
|
3
|
|
2
|
|
1
|
|
-- invert (like tac) --
|
|
1
|
|
4
|
|
2
|
|
3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=escaped chars
|
|
CMDS=<<EOF
|
|
?e Hello\x40World~Hello\@
|
|
?e Hello\x24World~Hello\@
|
|
?e Hello\n\x23World~\#
|
|
EOF
|
|
EXPECT=<<EOF
|
|
Hello@World
|
|
#World
|
|
EOF
|
|
RUN
|
|
|
|
NAME=escaped chars 2
|
|
CMDS=?e Hello\n\x3bWorld~\;
|
|
EXPECT=<<EOF
|
|
;World
|
|
EOF
|
|
RUN
|
|
|
|
NAME=multi-command single-line grep
|
|
CMDS=<<EOF
|
|
?e Hello World; ?e 4e2420~4e2420
|
|
EOF
|
|
EXPECT=<<EOF
|
|
Hello World
|
|
4e2420
|
|
EOF
|
|
RUN
|
|
|
|
NAME=highlight grep with empty string
|
|
ARGS=-escr.highlight.grep=true
|
|
TIMEOUT=2
|
|
CMDS=<<EOF
|
|
i~[0]:0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
fd
|
|
EOF
|
|
RUN
|
|
|
|
NAME=ij.gron
|
|
FILE=bins/elf/crackme
|
|
CMDS=<<EOF
|
|
ij~{=}
|
|
EOF
|
|
EXPECT=<<EOF
|
|
json = {};
|
|
json.core = {};
|
|
json.core.type = "EXEC (Executable file)";
|
|
json.core.file = "bins/elf/crackme";
|
|
json.core.fd = 3;
|
|
json.core.size = 7441;
|
|
json.core.humansz = "7.3K";
|
|
json.core.iorw = false;
|
|
json.core.mode = "r-x";
|
|
json.core.block = 256;
|
|
json.core.format = "elf64";
|
|
json.bin = {};
|
|
json.bin.arch = "x86";
|
|
json.bin.baddr = 4194304;
|
|
json.bin.binsz = 7441;
|
|
json.bin.bintype = "elf";
|
|
json.bin.bits = 64;
|
|
json.bin.canary = false;
|
|
json.bin.injprot = false;
|
|
json.bin.class = "ELF64";
|
|
json.bin.compiled = "";
|
|
json.bin.compiler = "GCC: (Debian 4.4.5-8) 4.4.5";
|
|
json.bin.crypto = false;
|
|
json.bin.dbg_file = "";
|
|
json.bin.endian = "little";
|
|
json.bin.havecode = true;
|
|
json.bin.guid = "";
|
|
json.bin.intrp = "/lib64/ld-linux-x86-64.so.2";
|
|
json.bin.laddr = 0;
|
|
json.bin.lang = "c";
|
|
json.bin.linenum = true;
|
|
json.bin.lsyms = true;
|
|
json.bin.machine = "AMD x86-64 architecture";
|
|
json.bin.nx = true;
|
|
json.bin.os = "linux";
|
|
json.bin.cc = "";
|
|
json.bin.pic = false;
|
|
json.bin.relocs = true;
|
|
json.bin.relro = "no";
|
|
json.bin.rpath = "NONE";
|
|
json.bin.sanitize = false;
|
|
json.bin.static = false;
|
|
json.bin.stripped = false;
|
|
json.bin.subsys = "linux";
|
|
json.bin.va = true;
|
|
json.bin.checksums = {};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=ij.gron.grep
|
|
FILE=bins/elf/crackme
|
|
CMDS=<<EOF
|
|
aiaj~{=}opsz
|
|
EOF
|
|
EXPECT=<<EOF
|
|
json.minopsz = 1;
|
|
json.maxopsz = 16;
|
|
json.invopsz = 1;
|
|
EOF
|
|
RUN
|
|
|
|
NAME=ij.gron.grep.two
|
|
FILE=bins/elf/crackme
|
|
CMDS=<<EOF
|
|
aiaj~{=}~opsz
|
|
EOF
|
|
EXPECT=<<EOF
|
|
json.minopsz = 1;
|
|
json.maxopsz = 16;
|
|
json.invopsz = 1;
|
|
EOF
|
|
RUN
|
|
|
|
NAME=ij.json.grep.inv
|
|
FILE=-
|
|
CMDS=<<EOF
|
|
ij~{}~fo
|
|
EOF
|
|
EXPECT=<<EOF
|
|
"format": "any"
|
|
EOF
|
|
RUN
|
|
|
|
NAME=xml indent
|
|
FILE=malloc://128
|
|
CMDS=<<EOF
|
|
'w <html><body>heh</body><a>bold</a></html>
|
|
psz~<>
|
|
EOF
|
|
EXPECT=<<EOF
|
|
|
|
<html>
|
|
|
|
<body>
|
|
heh
|
|
</body>
|
|
|
|
<a>
|
|
bold
|
|
</a>
|
|
|
|
</html>
|
|
|
|
EOF
|
|
RUN
|
|
|
|
NAME=sort + uniq
|
|
FILE=--
|
|
CMDS=<<EOF
|
|
cat bins/src/sortuniq.txt
|
|
?e --
|
|
cat bins/src/sortuniq.txt~$$
|
|
psz~<>
|
|
EOF
|
|
EXPECT=<<EOF
|
|
hello
|
|
world
|
|
hello
|
|
heheh
|
|
world
|
|
--
|
|
heheh
|
|
hello
|
|
world
|
|
EOF
|
|
RUN
|