rizin/test/db/cmd/cmd_i
seanachao a2f8631b6c
Change -, --, = argument and = command meaning (#930)
* Swap = & - R (#615)&(#616)
* Fix R replace =
2021-04-21 16:20:24 +08:00

4913 lines
126 KiB
Text

NAME=iS query
FILE=bins/elf/analysis/main
CMDS=iS size/sort,vaddr/cols/name
EXPECT=<<EOF
[Sections]
vaddr name
---------------
0x00000000
0x00600910 .bss
0x006006e0 .init_array
0x006006e8 .fini_array
0x006006f0 .jcr
0x006008c8 .got
0x0040031e .gnu.version
0x004005b4 .fini
0x00600900 .data
0x004005c0 .rodata
0x00400348 .rela.dyn
0x004003a8 .init
0x00400260 .gnu.hash
0x00400200 .interp
0x0040021c .note.ABI-tag
0x00400328 .gnu.version_r
0x00000000 .comment
0x0040023c .note.gnu.build-id
0x006008d0 .got.plt
0x004005d0 .eh_frame_hdr
0x004002e0 .dynstr
0x004003d0 .plt
0x00400360 .rela.plt
0x00400280 .dynsym
0x00000000 .debug_abbrev
0x00000000 .debug_ranges
0x00000000 .debug_str
0x00000000 .debug_aranges
0x00400608 .eh_frame
0x00000000 .debug_line
0x00000000 .shstrtab
0x00000000 .debug_info
0x00400410 .text
0x006006f8 .dynamic
0x00000000 .strtab
0x00000000 .symtab
EOF
RUN
NAME=ib
FILE=bins/elf/analysis/main
CMDS=<<EOF
e bin.baddr=0
e asm.calls=false
ib
op 3
e io.va=0
s entry0
pi 1
?p
EOF
EXPECT=<<EOF
xor ebp, ebp
0x00000410
EOF
RUN
NAME=ibib
FILE=bins/elf/analysis/main
CMDS=<<EOF
?e works
ib;ib
EOF
EXPECT=<<EOF
works
EOF
RUN
NAME=ibib2
FILE=bins/elf/analysis/main
CMDS=<<EOF
ib;ib
?e works
EOF
EXPECT=<<EOF
works
EOF
RUN
NAME=ih (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ihq
EXPECT=<<EOF
[Header fields]
0x00000000 0x00000000 ELF; 0x464c457f
0x00000010 0x00000010 Type; 0x00000002
0x00000012 0x00000012 Machine; 0x00000003
0x00000014 0x00000014 Version; 0x00000001
0x00000018 0x00000018 Entry point; 0x08048300
0x0000001c 0x0000001c PhOff; 0x00000034
0x00000020 0x00000020 ShOff; 0x000007cc
0x00000024 0x00000024 Flags; 0x00000000
0x00000028 0x00000028 EhSize; 0x00000034
0x0000002a 0x0000002a PhentSize; 0x00000020
0x0000002c 0x0000002c PhNum; 0x00000008
0x0000002e 0x0000002e ShentSize; 0x00000028
0x00000030 0x00000030 ShNum; 0x0000001e
0x00000032 0x00000032 ShrStrndx; 0x0000001b
14 fields
EOF
RUN
NAME=ih* (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ih*
EXPECT=<<EOF
fs header
"f header.ELF 1 0x00000000"
CCu MHg0NjRjNDU3Zg== @ 0x0
Cf 4 x @ 0x0
pf.ELF x
"f header.Type 1 0x00000010"
CCu MHgwMDAwMDAwMg== @ 0x10
Cf 2 x @ 0x10
pf.Type x
"f header.Machine 1 0x00000012"
CCu MHgwMDAwMDAwMw== @ 0x12
Cf 2 x @ 0x12
pf.Machine x
"f header.Version 1 0x00000014"
CCu MHgwMDAwMDAwMQ== @ 0x14
Cf 4 x @ 0x14
pf.Version x
"f header.Entrypoint 1 0x00000018"
CCu MHgwODA0ODMwMA== @ 0x18
Cf 4 x @ 0x18
pf.Entrypoint x
"f header.PhOff 1 0x0000001c"
CCu MHgwMDAwMDAzNA== @ 0x1c
Cf 4 x @ 0x1c
pf.PhOff x
"f header.ShOff 1 0x00000020"
CCu MHgwMDAwMDdjYw== @ 0x20
Cf 4 x @ 0x20
pf.ShOff x
"f header.Flags 1 0x00000024"
CCu MHgwMDAwMDAwMA== @ 0x24
Cf 4 x @ 0x24
pf.Flags x
"f header.EhSize 1 0x00000028"
CCu MHgwMDAwMDAzNA== @ 0x28
Cf 2 x @ 0x28
pf.EhSize x
"f header.PhentSize 1 0x0000002a"
CCu MHgwMDAwMDAyMA== @ 0x2a
Cf 2 x @ 0x2a
pf.PhentSize x
"f header.PhNum 1 0x0000002c"
CCu MHgwMDAwMDAwOA== @ 0x2c
Cf 2 x @ 0x2c
pf.PhNum x
"f header.ShentSize 1 0x0000002e"
CCu MHgwMDAwMDAyOA== @ 0x2e
Cf 2 x @ 0x2e
pf.ShentSize x
"f header.ShNum 1 0x00000030"
CCu MHgwMDAwMDAxZQ== @ 0x30
Cf 2 x @ 0x30
pf.ShNum x
"f header.ShrStrndx 1 0x00000032"
CCu MHgwMDAwMDAxYg== @ 0x32
Cf 2 x @ 0x32
pf.ShrStrndx x
EOF
RUN
NAME=iZ
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iZ
EXPECT=<<EOF
4899
EOF
RUN
NAME=iZ*
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iZ*
EXPECT=<<EOF
f bin_size @ 4899
EOF
RUN
NAME=i (all) (malloc)
FILE=malloc://1025
ARGS=-a x86 -b 64
CMDS=<<EOF
i
ia
ia*
ii
ii*
ie
ie*
is
is*
iS
iS*
iz
iz*
EOF
EXPECT=<<EOF
fd 3
file malloc://1025
size 0x401
humansz 1.0K
mode rwx
format any
iorw true
block 0x100
baddr 0x0
binsz 1025
bits 64
canary false
crypto false
endian little
havecode false
laddr 0x0
linenum false
lsyms false
maxopsz 16
minopsz 1
nx false
pcalign 0
pic false
relocs false
sanitiz false
static true
stripped false
va false
[Imports]
nth vaddr bind type lib name
----------------------------
[Exports]
nth paddr vaddr bind type size lib name
---------------------------------------
e cfg.bigendian=false
e asm.bits=64
e asm.dwarf=false
e asm.pcalign=0
fs imports
fs symbols
fs exports
[Imports]
nth vaddr bind type lib name
----------------------------
fs imports
[Entrypoints]
0 entrypoints
fs symbols
[Symbols]
nth paddr vaddr bind type size lib name
---------------------------------------
fs symbols
[Sections]
nth paddr size vaddr vsize perm name
--------------------------------------
fs sections
[Strings]
nth paddr vaddr len size section type string
--------------------------------------------
fs strings
EOF
RUN
NAME=i (all) (malloc) iI*
FILE=malloc://1024
ARGS=-a x86 -b 64
CMDS=<<EOF
i
i*
iI
iI*
EOF
EXPECT=<<EOF
fd 3
file malloc://1024
size 0x400
humansz 1K
mode rwx
format any
iorw true
block 0x100
e cfg.bigendian=false
e asm.bits=64
e asm.dwarf=false
e asm.pcalign=0
baddr 0x0
binsz 1024
bits 64
canary false
crypto false
endian little
havecode false
laddr 0x0
linenum false
lsyms false
maxopsz 16
minopsz 1
nx false
pcalign 0
pic false
relocs false
sanitiz false
static true
stripped false
va false
e cfg.bigendian=false
e asm.bits=64
e asm.dwarf=false
e asm.pcalign=0
EOF
RUN
NAME=i (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=i~!file
EXPECT=<<EOF
fd 3
size 0x1323
humansz 4.8K
mode r-x
format elf
iorw false
block 0x100
arch x86
baddr 0x8048000
binsz 4899
bintype elf
bits 32
canary false
class ELF32
compiler GCC: (GNU) 4.8.2
crypto false
endian little
havecode true
intrp /lib/ld-linux.so.2
laddr 0x0
lang c
linenum true
lsyms true
machine Intel 80386
maxopsz 16
minopsz 1
nx true
os linux
pcalign 0
pic false
relocs true
relro no
rpath NONE
sanitiz false
static false
stripped false
subsys linux
va true
EOF
RUN
NAME=iA (file mips I)
FILE=bins/elf/mips-mozi
CMDS=<<EOF
iA
iAj
EOF
EXPECT=<<EOF
0 0x00000000 266108 mips_32 mips1 o32
{"bins":[{"arch":"mips","bits":32,"offset":0,"size":266108,"isa":"mips1","features":"o32","machine":"MIPS R3000"}]}
EOF
RUN
NAME=iA (file mips 64r2)
FILE=bins/elf/analysis/mips64r2-busybox-loongson
CMDS=<<EOF
iA
iAj
EOF
EXPECT=<<EOF
0 0x00000000 1039368 mips_64 mips64r2 n64
{"bins":[{"arch":"mips","bits":64,"offset":0,"size":1039368,"isa":"mips64r2","features":"n64","machine":"MIPS R3000"}]}
EOF
RUN
NAME=iA (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iA
EXPECT=<<EOF
0 0x00000000 4899 x86_32
EOF
RUN
NAME=ib java class file
FILE=malloc://1024
CMDS=<<EOF
e asm.calls=false
e asm.bytes=true
e asm.comments=false
e asm.cmtflgrefs=false
e scr.color=false
e asm.lines.bb=false
e asm.xrefs=false
wx cafebabe00000032003a070002010014546573745661726961626c6553776974636855700700040100106a6176612f6c616e672f4f626a6563740100063c696e69743e010003282956010004436f64650a000300090c0005000601000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100164c546573745661726961626c6553776974636855703b010014546573744d756c7469706c655661726961626c650a001000120700110100116a6176612f6c616e672f496e74656765720c0013001401000776616c75654f660100162849294c6a6176612f6c616e672f496e74656765723b0800160100067472796f6e65090018001a0700190100106a6176612f6c616e672f53797374656d0c001b001c0100036f75740100154c6a6176612f696f2f5072696e7453747265616d3b07001e0100176a6176612f6c616e672f537472696e674275696c646572080020010011417474656d7074696e67207072696e74200a001d00220c00050023010015284c6a6176612f6c616e672f537472696e673b29560a001d00250c00260027010006617070656e6401002d284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f537472696e674275696c6465723b0a001d00290c002a002b010008746f537472696e6701001428294c6a6176612f6c616e672f537472696e673b0a002d002f07002e0100136a6176612f696f2f5072696e7453747265616d0c003000230100057072696e74010001690100134c6a6176612f6c616e672f496e74656765723b01000170010001490100016b0100124c6a6176612f6c616e672f537472696e673b0100016a01000a536f7572636546696c65010019546573745661726961626c6553776974636855702e6a617661002100010003000000000002000100050006000100070000002f00010001000000052ab70008b100000002000a00000006000100000002000b0000000c000100000005000c000d00000008000e0006000100070000008100040004000000251064b8000f4b10643c12154d033eb20017bb001d59121fb700212cb60024b60028b6002cb100000002000a0000001a0006000000040006000500090006000c0007000e000800240009000b0000002a00040006001f0031003200000009001c003300340001000c0019003500360002000e001700370034000300010038000000020039
ib
if
af
pdf
EOF
EXPECT=<<EOF
fd 3
file malloc://1024
size 0x400
humansz 1K
mode rwx
format java
iorw true
block 0x100
type JAVA CLASS
arch java
baddr 0x0
binsz 1024
bintype class
bits 32
canary false
retguard false
class Java SE 1.6
crypto false
endian big
havecode true
laddr 0x0
lang java
linenum true
lsyms true
machine jvm
maxopsz 16
minopsz 1
nx false
os any
pcalign 0
pic false
relocs false
sanitiz false
static false
stripped false
subsys any
va false
;-- entry1:
;-- section.class.methods.TestMultipleVariable.attr.0.code:
;-- sym.TestVariableSwitchUp.TestVariableSwitchUp.TestMultipleVariable:
/ method.TestVariableSwitchUp.TestVariableSwitchUp.TestMultipleVariable ();
| 0x000002fd 1064 bipush 100
| 0x000002ff b8000f invokestatic java.lang.Integer java.lang.Integer:valueOf: (int, int)
| 0x00000302 4b astore_0
| 0x00000303 1064 bipush 100
| 0x00000305 3c istore_1
| 0x00000306 1215 ldc "tryone"
| 0x00000308 4d astore_2
| 0x00000309 03 iconst_0
| 0x0000030a 3e istore_3
| 0x0000030b b20017 getstatic java.lang.System:out:Ljava.io.PrintStream;
| 0x0000030e bb001d new java.lang.StringBuilder
| 0x00000311 59 dup
| 0x00000312 121f ldc "Attempting print "
| 0x00000314 b70021 invokespecial void java.lang.StringBuilder:<init>: (short, byte, java.lang.String)
| 0x00000317 2c aload_2
| 0x00000318 b60024 invokevirtual java.lang.StringBuilder java.lang.StringBuilder:append: (short, byte, java.lang.String)
| 0x0000031b b60028 invokevirtual java.lang.String java.lang.StringBuilder:toString: (short, byte, short)
| 0x0000031e b6002c invokevirtual void java.io.PrintStream:print: (short, java.lang.String)
\ 0x00000321 b1 return
EOF
RUN
NAME=ic cpp classes
FILE=bins/elf/libmagic.so
CMDS=<<EOF
ic~_JNIEnv
ic~FindClass
EOF
EXPECT=<<EOF
0x00000000 [0x00006060 - 0x0000697c] 2332 class 0 _JNIEnv
0x000074f8 method 0 inject(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x0000699c method 1 findBaseDexClassloader(_JNIEnv*, _jobject*)
0x00006a2c method 2 getField(_JNIEnv*, _jobject*, _jobject*, _jstring*)
0x00006abc method 3 getPathList(_JNIEnv*, _jobject*)
0x00006af4 method 4 getDexElements(_JNIEnv*, _jobject*)
0x00006b1c method 5 setField(_JNIEnv*, _jobject*, _jobject*, _jstring*, _jobject*)
0x00006bb0 method 6 combineArray(_JNIEnv*, _jobject*, _jobject*)
0x00006d00 method 7 injectAboveEqualApiLevel14(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x00006e5c method 8 appendArray(_JNIEnv*, _jobject*, _jobject*)
0x00006f68 method 9 injectInAliyunOs(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x0000720c method 10 injectBelowApiLevel14(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x00006060 method 0 FindClass(char const*)
EOF
RUN
NAME=ic?
BROKEN=1
FILE=bins/elf/libmagic.so
CMDS=ic?~?Usage
EXPECT=<<EOF
1
EOF
RUN
NAME=icl
FILE=bins/elf/libmagic.so
CMDS=icl
EXPECT=<<EOF
0x24672 0x24682 0x24692 0x24718 0x24728 0x24740 0x24768 0x24796 0x24810 0x26974 0x27004
0x29944 0x27036 0x27180 0x27324 0x27380 0x27420 0x27568 0x27904 0x28252 0x28520 0x29196
0x38000 0x34924 0x38036 0x38060 0x38088
0x34948 0x35060
0x34972 0x35076
0x35012
0x35036
0x35204
0x37948 0x38024
0x38116
0x38844 0x38868 0x38876 0x38996 0x38884 0x38920
0x38184 0x38192 0x38260
0x40432 0x40500 0x40400
0x38388 0x38456 0x38556 0x38780
0x39128 0x39196 0x39240 0x39016 0x39108 0x39308
0x40644 0x75648 0x75720
0x75440 0x75512
0x75456 0x75472
0x76760 0x76744
0x76844 0x76828
EOF
RUN
NAME=icj
FILE=bins/elf/libmagic.so
CMDS=icj~{}
EXPECT=<<EOF
[
{
"classname": "_JNIEnv",
"addr": 0,
"index": 0,
"methods": [
{
"name": "FindClass(char const*)",
"addr": 24672
},
{
"name": "DeleteLocalRef(_jobject*)",
"addr": 24682
},
{
"name": "NewObject(_jclass*, _jmethodID*, ...)",
"addr": 24692
},
{
"name": "GetObjectClass(_jobject*)",
"addr": 24718
},
{
"name": "GetMethodID(_jclass*, char const*, char const*)",
"addr": 24728
},
{
"name": "CallObjectMethod(_jobject*, _jmethodID*, ...)",
"addr": 24740
},
{
"name": "CallVoidMethod(_jobject*, _jmethodID*, ...)",
"addr": 24768
},
{
"name": "GetStaticMethodID(_jclass*, char const*, char const*)",
"addr": 24796
},
{
"name": "CallStaticObjectMethod(_jclass*, _jmethodID*, ...)",
"addr": 24810
},
{
"name": "CallStaticIntMethod(_jclass*, _jmethodID*, ...)",
"addr": 26974
},
{
"name": "CallStaticVoidMethod(_jclass*, _jmethodID*, ...)",
"addr": 27004
}
],
"fields": [
]
},
{
"classname": "SystemClassLoaderInjector",
"addr": 0,
"index": 1,
"methods": [
{
"name": "inject(_JNIEnv*, _jobject*, _jstring*, _jstring*)",
"addr": 29944
},
{
"name": "findBaseDexClassloader(_JNIEnv*, _jobject*)",
"addr": 27036
},
{
"name": "getField(_JNIEnv*, _jobject*, _jobject*, _jstring*)",
"addr": 27180
},
{
"name": "getPathList(_JNIEnv*, _jobject*)",
"addr": 27324
},
{
"name": "getDexElements(_JNIEnv*, _jobject*)",
"addr": 27380
},
{
"name": "setField(_JNIEnv*, _jobject*, _jobject*, _jstring*, _jobject*)",
"addr": 27420
},
{
"name": "combineArray(_JNIEnv*, _jobject*, _jobject*)",
"addr": 27568
},
{
"name": "injectAboveEqualApiLevel14(_JNIEnv*, _jobject*, _jstring*, _jstring*)",
"addr": 27904
},
{
"name": "appendArray(_JNIEnv*, _jobject*, _jobject*)",
"addr": 28252
},
{
"name": "injectInAliyunOs(_JNIEnv*, _jobject*, _jstring*, _jstring*)",
"addr": 28520
},
{
"name": "injectBelowApiLevel14(_JNIEnv*, _jobject*, _jstring*, _jstring*)",
"addr": 29196
}
],
"fields": [
]
},
{
"classname": "std",
"addr": 0,
"index": 2,
"methods": [
{
"name": "terminate()",
"addr": 38000
},
{
"name": "uncaught_exception()",
"addr": 34924
},
{
"name": "unexpected()",
"addr": 38036
},
{
"name": "set_terminate(void (*)())",
"addr": 38060
},
{
"name": "set_unexpected(void (*)())",
"addr": 38088
}
],
"fields": [
]
},
{
"classname": "std::exception",
"addr": 0,
"index": 3,
"methods": [
{
"name": "~exception()",
"addr": 34948
},
{
"name": "what() const",
"addr": 35060
}
],
"fields": [
]
},
{
"classname": "std::bad_exception",
"addr": 0,
"index": 4,
"methods": [
{
"name": "~bad_exception()",
"addr": 34972
},
{
"name": "what() const",
"addr": 35076
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1::__forced_unwind",
"addr": 0,
"index": 5,
"methods": [
{
"name": "~__forced_unwind()",
"addr": 35012
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1::__foreign_exception",
"addr": 0,
"index": 6,
"methods": [
{
"name": "~__foreign_exception()",
"addr": 35036
}
],
"fields": [
]
},
{
"classname": "__eh_globals_init",
"addr": 0,
"index": 7,
"methods": [
{
"name": "~__eh_globals_init()",
"addr": 35204
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1",
"addr": 0,
"index": 8,
"methods": [
{
"name": "__terminate(void (*)())",
"addr": 37948
},
{
"name": "__unexpected(void (*)())",
"addr": 38024
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1::__fundamental_type_info",
"addr": 0,
"index": 9,
"methods": [
{
"name": "~__fundamental_type_info()",
"addr": 38116
}
],
"fields": [
]
},
{
"classname": "std::type_info",
"addr": 0,
"index": 10,
"methods": [
{
"name": "~type_info()",
"addr": 38844
},
{
"name": "__is_pointer_p() const",
"addr": 38868
},
{
"name": "__is_function_p() const",
"addr": 38876
},
{
"name": "__do_catch(std::type_info const*, void**, unsigned int) const",
"addr": 38996
},
{
"name": "__do_upcast(__cxxabiv1::__class_type_info const*, void**) const",
"addr": 38884
},
{
"name": "operator==(std::type_info const&) const",
"addr": 38920
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1::__pointer_type_info",
"addr": 0,
"index": 11,
"methods": [
{
"name": "__is_pointer_p() const",
"addr": 38184
},
{
"name": "~__pointer_type_info()",
"addr": 38192
},
{
"name": "__pointer_catch(__cxxabiv1::__pbase_type_info const*, void**, unsigned int) const",
"addr": 38260
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1::__pbase_type_info",
"addr": 0,
"index": 12,
"methods": [
{
"name": "~__pbase_type_info()",
"addr": 40432
},
{
"name": "__do_catch(std::type_info const*, void**, unsigned int) const",
"addr": 40500
},
{
"name": "__pointer_catch(__cxxabiv1::__pbase_type_info const*, void**, unsigned int) const",
"addr": 40400
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1::__si_class_type_info",
"addr": 0,
"index": 13,
"methods": [
{
"name": "~__si_class_type_info()",
"addr": 38388
},
{
"name": "__do_find_public_src(int, void const*, __cxxabiv1::__class_type_info const*, void const*) const",
"addr": 38456
},
{
"name": "__do_dyncast(int, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const",
"addr": 38556
},
{
"name": "__do_upcast(__cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__upcast_result&) const",
"addr": 38780
}
],
"fields": [
]
},
{
"classname": "__cxxabiv1::__class_type_info",
"addr": 0,
"index": 14,
"methods": [
{
"name": "~__class_type_info()",
"addr": 39128
},
{
"name": "__do_upcast(__cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__upcast_result&) const",
"addr": 39196
},
{
"name": "__do_catch(std::type_info const*, void**, unsigned int) const",
"addr": 39240
},
{
"name": "__do_upcast(__cxxabiv1::__class_type_info const*, void**) const",
"addr": 39016
},
{
"name": "__do_find_public_src(int, void const*, __cxxabiv1::__class_type_info const*, void const*) const",
"addr": 39108
},
{
"name": "__do_dyncast(int, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const",
"addr": 39308
}
],
"fields": [
]
},
{
"classname": "__gnu_cxx",
"addr": 0,
"index": 15,
"methods": [
{
"name": "__verbose_terminate_handler()",
"addr": 40644
},
{
"name": "__throw_concurrence_lock_error()",
"addr": 75648
},
{
"name": "__throw_concurrence_unlock_error()",
"addr": 75720
}
],
"fields": [
]
},
{
"classname": "__gnu_cxx::__concurrence_lock_error",
"addr": 0,
"index": 16,
"methods": [
{
"name": "what() const",
"addr": 75440
},
{
"name": "~__concurrence_lock_error()",
"addr": 75512
}
],
"fields": [
]
},
{
"classname": "__gnu_cxx::__concurrence_unlock_error",
"addr": 0,
"index": 17,
"methods": [
{
"name": "what() const",
"addr": 75456
},
{
"name": "~__concurrence_unlock_error()",
"addr": 75472
}
],
"fields": [
]
},
{
"classname": "std::bad_cast",
"addr": 0,
"index": 18,
"methods": [
{
"name": "~bad_cast()",
"addr": 76760
},
{
"name": "what() const",
"addr": 76744
}
],
"fields": [
]
},
{
"classname": "std::bad_typeid",
"addr": 0,
"index": 19,
"methods": [
{
"name": "~bad_typeid()",
"addr": 76844
},
{
"name": "what() const",
"addr": 76828
}
],
"fields": [
]
}
]
EOF
RUN
NAME=ic*
FILE=bins/elf/libmagic.so
CMDS=ic*
EXPECT=<<EOF
fs classes
"f class.JNIEnv = 0x6060"
"f method._JNIEnv.FindClass_char_const = 0x6060"
"f method._JNIEnv.DeleteLocalRef__jobject = 0x606a"
"f method._JNIEnv.NewObject__jclass____jmethodID___... = 0x6074"
"f method._JNIEnv.GetObjectClass__jobject = 0x608e"
"f method._JNIEnv.GetMethodID__jclass___char_const___char_const = 0x6098"
"f method._JNIEnv.CallObjectMethod__jobject____jmethodID___... = 0x60a4"
"f method._JNIEnv.CallVoidMethod__jobject____jmethodID___... = 0x60c0"
"f method._JNIEnv.GetStaticMethodID__jclass___char_const___char_const = 0x60dc"
"f method._JNIEnv.CallStaticObjectMethod__jclass____jmethodID___... = 0x60ea"
"f method._JNIEnv.CallStaticIntMethod__jclass____jmethodID___... = 0x695e"
"f method._JNIEnv.CallStaticVoidMethod__jclass____jmethodID___... = 0x697c"
td "struct _JNIEnv { char empty[0];};"
"f class.SystemClassLoaderInjector = 0x699c"
"f method.SystemClassLoaderInjector.inject__JNIEnv____jobject____jstring____jstring = 0x74f8"
"f method.SystemClassLoaderInjector.findBaseDexClassloader__JNIEnv____jobject = 0x699c"
"f method.SystemClassLoaderInjector.getField__JNIEnv____jobject____jobject____jstring = 0x6a2c"
"f method.SystemClassLoaderInjector.getPathList__JNIEnv____jobject = 0x6abc"
"f method.SystemClassLoaderInjector.getDexElements__JNIEnv____jobject = 0x6af4"
"f method.SystemClassLoaderInjector.setField__JNIEnv____jobject____jobject____jstring____jobject = 0x6b1c"
"f method.SystemClassLoaderInjector.combineArray__JNIEnv____jobject____jobject = 0x6bb0"
"f method.SystemClassLoaderInjector.injectAboveEqualApiLevel14__JNIEnv____jobject____jstring____jstring = 0x6d00"
"f method.SystemClassLoaderInjector.appendArray__JNIEnv____jobject____jobject = 0x6e5c"
"f method.SystemClassLoaderInjector.injectInAliyunOs__JNIEnv____jobject____jstring____jstring = 0x6f68"
"f method.SystemClassLoaderInjector.injectBelowApiLevel14__JNIEnv____jobject____jstring____jstring = 0x720c"
td "struct SystemClassLoaderInjector { char empty[0];};"
"f class.std = 0x886c"
"f method.std.terminate = 0x9470"
"f method.std.uncaught_exception = 0x886c"
"f method.std.unexpected = 0x9494"
"f method.std.set_terminate_void = 0x94ac"
"f method.std.set_unexpected_void = 0x94c8"
td "struct std { char empty[0];};"
"f class.std::exception = 0x8884"
"f method.std::exception._exception = 0x8884"
"f method.std::exception.what___const = 0x88f4"
td "struct std::exception { char empty[0];};"
"f class.std::bad_exception = 0x889c"
"f method.std::bad_exception._bad_exception = 0x889c"
"f method.std::bad_exception.what___const = 0x8904"
td "struct std::bad_exception { char empty[0];};"
"f class.cxxabiv1::__forced_unwind = 0x88c4"
"f method.__cxxabiv1::__forced_unwind.___forced_unwind = 0x88c4"
td "struct __cxxabiv1::__forced_unwind { char empty[0];};"
"f class.cxxabiv1::__foreign_exception = 0x88dc"
"f method.__cxxabiv1::__foreign_exception.___foreign_exception = 0x88dc"
td "struct __cxxabiv1::__foreign_exception { char empty[0];};"
"f class.eh_globals_init = 0x8984"
"f method.__eh_globals_init.___eh_globals_init = 0x8984"
td "struct __eh_globals_init { char empty[0];};"
"f class.cxxabiv1 = 0x943c"
"f method.__cxxabiv1.__terminate_void = 0x943c"
"f method.__cxxabiv1.__unexpected_void = 0x9488"
td "struct __cxxabiv1 { char empty[0];};"
"f class.cxxabiv1::__fundamental_type_info = 0x94e4"
"f method.__cxxabiv1::__fundamental_type_info.___fundamental_type_info = 0x94e4"
td "struct __cxxabiv1::__fundamental_type_info { char empty[0];};"
"f class.std::type_info = 0x97bc"
"f method.std::type_info._type_info = 0x97bc"
"f method.std::type_info.__is_pointer_p___const = 0x97d4"
"f method.std::type_info.__is_function_p___const = 0x97dc"
"f method.std::type_info.__do_catch_std::type_info_const___void____unsigned_int__const = 0x9854"
"f method.std::type_info.__do_upcast___cxxabiv1::__class_type_info_const___void____const = 0x97e4"
"f method.std::type_info.operator___std::type_info_const___const = 0x9808"
td "struct std::type_info { char empty[0];};"
"f class.cxxabiv1::__pointer_type_info = 0x9528"
"f method.__cxxabiv1::__pointer_type_info.__is_pointer_p___const = 0x9528"
"f method.__cxxabiv1::__pointer_type_info.___pointer_type_info = 0x9530"
"f method.__cxxabiv1::__pointer_type_info.__pointer_catch___cxxabiv1::__pbase_type_info_const___void____unsigned_int__const = 0x9574"
td "struct __cxxabiv1::__pointer_type_info { char empty[0];};"
"f class.cxxabiv1::__pbase_type_info = 0x9dd0"
"f method.__cxxabiv1::__pbase_type_info.___pbase_type_info = 0x9df0"
"f method.__cxxabiv1::__pbase_type_info.__do_catch_std::type_info_const___void____unsigned_int__const = 0x9e34"
"f method.__cxxabiv1::__pbase_type_info.__pointer_catch___cxxabiv1::__pbase_type_info_const___void____unsigned_int__const = 0x9dd0"
td "struct __cxxabiv1::__pbase_type_info { char empty[0];};"
"f class.cxxabiv1::__si_class_type_info = 0x95f4"
"f method.__cxxabiv1::__si_class_type_info.___si_class_type_info = 0x95f4"
"f method.__cxxabiv1::__si_class_type_info.__do_find_public_src_int__void_const_____cxxabiv1::__class_type_info_const___void_const___const = 0x9638"
"f method.__cxxabiv1::__si_class_type_info.__do_dyncast_int____cxxabiv1::__class_type_info::__sub_kind____cxxabiv1::__class_type_info_const___void_const_____cxxabiv1::__class_type_info_const___void_const_____cxxabiv1::__class_type_info::__dyncast_result___const = 0x969c"
"f method.__cxxabiv1::__si_class_type_info.__do_upcast___cxxabiv1::__class_type_info_const___void_const_____cxxabiv1::__class_type_info::__upcast_result___const = 0x977c"
td "struct __cxxabiv1::__si_class_type_info { char empty[0];};"
"f class.cxxabiv1::__class_type_info = 0x9868"
"f method.__cxxabiv1::__class_type_info.___class_type_info = 0x98d8"
"f method.__cxxabiv1::__class_type_info.__do_upcast___cxxabiv1::__class_type_info_const___void_const_____cxxabiv1::__class_type_info::__upcast_result___const = 0x991c"
"f method.__cxxabiv1::__class_type_info.__do_catch_std::type_info_const___void____unsigned_int__const = 0x9948"
"f method.__cxxabiv1::__class_type_info.__do_upcast___cxxabiv1::__class_type_info_const___void____const = 0x9868"
"f method.__cxxabiv1::__class_type_info.__do_find_public_src_int__void_const_____cxxabiv1::__class_type_info_const___void_const___const = 0x98c4"
"f method.__cxxabiv1::__class_type_info.__do_dyncast_int____cxxabiv1::__class_type_info::__sub_kind____cxxabiv1::__class_type_info_const___void_const_____cxxabiv1::__class_type_info_const___void_const_____cxxabiv1::__class_type_info::__dyncast_result___const = 0x998c"
td "struct __cxxabiv1::__class_type_info { char empty[0];};"
"f class.gnu_cxx = 0x9ec4"
"f method.__gnu_cxx.__verbose_terminate_handler = 0x9ec4"
"f method.__gnu_cxx.__throw_concurrence_lock_error = 0x12780"
"f method.__gnu_cxx.__throw_concurrence_unlock_error = 0x127c8"
td "struct __gnu_cxx { char empty[0];};"
"f class.gnu_cxx::__concurrence_lock_error = 0x126b0"
"f method.__gnu_cxx::__concurrence_lock_error.what___const = 0x126b0"
"f method.__gnu_cxx::__concurrence_lock_error.___concurrence_lock_error = 0x126f8"
td "struct __gnu_cxx::__concurrence_lock_error { char empty[0];};"
"f class.gnu_cxx::__concurrence_unlock_error = 0x126c0"
"f method.__gnu_cxx::__concurrence_unlock_error.what___const = 0x126c0"
"f method.__gnu_cxx::__concurrence_unlock_error.___concurrence_unlock_error = 0x126d0"
td "struct __gnu_cxx::__concurrence_unlock_error { char empty[0];};"
"f class.std::bad_cast = 0x12bc8"
"f method.std::bad_cast._bad_cast = 0x12bd8"
"f method.std::bad_cast.what___const = 0x12bc8"
td "struct std::bad_cast { char empty[0];};"
"f class.std::bad_typeid = 0x12c1c"
"f method.std::bad_typeid._bad_typeid = 0x12c2c"
"f method.std::bad_typeid.what___const = 0x12c1c"
td "struct std::bad_typeid { char empty[0];};"
EOF
RUN
NAME=icc
FILE=bins/elf/libmagic.so
CMDS=icc
EXPECT=<<EOF
@interface _JNIEnv
{
}
@end
@interface SystemClassLoaderInjector
{
}
@end
@interface std
{
}
@end
@interface std::exception
{
}
@end
@interface std::bad_exception
{
}
@end
@interface __cxxabiv1::__forced_unwind
{
}
@end
@interface __cxxabiv1::__foreign_exception
{
}
@end
@interface __eh_globals_init
{
}
@end
@interface __cxxabiv1
{
}
@end
@interface __cxxabiv1::__fundamental_type_info
{
}
@end
@interface std::type_info
{
}
@end
@interface __cxxabiv1::__pointer_type_info
{
}
@end
@interface __cxxabiv1::__pbase_type_info
{
}
@end
@interface __cxxabiv1::__si_class_type_info
{
}
@end
@interface __cxxabiv1::__class_type_info
{
}
@end
@interface __gnu_cxx
{
}
@end
@interface __gnu_cxx::__concurrence_lock_error
{
}
@end
@interface __gnu_cxx::__concurrence_unlock_error
{
}
@end
@interface std::bad_cast
{
}
@end
@interface std::bad_typeid
{
}
@end
EOF
RUN
NAME=iq
FILE=bins/elf/libmagic.so
CMDS=iq
EXPECT=<<EOF
arch arm
bits 16
os linux
endian little
minopsz 2
maxopsz 4
pcalign 2
EOF
RUN
NAME=iaq
FILE=bins/elf/libmagic.so
CMDS=iaq
EXPECT=<<EOF
arch arm
bits 16
os linux
endian little
minopsz 2
maxopsz 4
pcalign 2
__cxa_finalize
__cxa_atexit
malloc
memcpy
strlen
strdup
strstr
free
fopen
fread
fwrite
fflush
fclose
strrchr
memset
strcat
strncpy
remove
__stack_chk_fail
__stack_chk_guard
__gnu_Unwind_Find_exidx
abort
sym.imp.operator delete(void*)
__cxa_pure_virtual
pthread_key_delete
pthread_getspecific
pthread_setspecific
pthread_key_create
strcmp
fputs
fputc
__sF
memcmp
realloc
sprintf
strncmp
pthread_mutex_lock
pthread_mutex_unlock
0x00005fa8
0x00007c70 10 __aeabi_unwind_cpp_pr0
0x00006108 48 getPackageName(_JNIEnv*, _jobject*)
0x00006138 164 JstringToString(_JNIEnv*, _jstring*)
0x000061dc 136 CharTojstring(_JNIEnv*, char const*)
0x00006264 196 invokeStaticMethodss(_JNIEnv*, _jstring*, _jstring*)
0x00006328 148 getFieldOjbectEx(_JNIEnv*, _jclass*, _jobject*, _jstring*)
0x000063bc 84 getFieldOjbect(_JNIEnv*, _jstring*, _jobject*, _jstring*)
0x00006410 152 setFieldOjbectEx(_JNIEnv*, _jclass*, _jstring*, _jobject*, _jobject*)
0x000064a8 92 setFieldOjbect(_JNIEnv*, _jstring*, _jstring*, _jobject*, _jobject*)
0x00006504 34 checkException(_JNIEnv*)
0x00006528 76 forName(_JNIEnv*, _jstring*)
0x00006574 32 GetFileName(char*)
0x00006594 216 replaceAll(char const*, char const*, char const*)
0x0000666c 152 decode(_JNIEnv*, _jstring*, _jstring*)
0x00006704 12 sub_444(_JNIEnv*, _jobject*, _jobject*, _jstring*, _jstring*)
0x00006710 476 sub_333(_JNIEnv*, _jobject*, _jobject*, _jstring*, _jstring*)
0x000074f8 100 SystemClassLoaderInjector::inject(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x000068ec 42 registerNativeMethods(_JNIEnv*, char const*, JNINativeMethod*, int)
0x00006918 28 register_ndk_load(_JNIEnv*)
0x00006934 40 JNI_OnLoad
0x0000695c 2 decodeFile()
0x0000699c 144 SystemClassLoaderInjector::findBaseDexClassloader(_JNIEnv*, _jobject*)
0x00006a2c 144 SystemClassLoaderInjector::getField(_JNIEnv*, _jobject*, _jobject*, _jstring*)
0x00006abc 56 SystemClassLoaderInjector::getPathList(_JNIEnv*, _jobject*)
0x00006af4 40 SystemClassLoaderInjector::getDexElements(_JNIEnv*, _jobject*)
0x00006b1c 148 SystemClassLoaderInjector::setField(_JNIEnv*, _jobject*, _jobject*, _jstring*, _jobject*)
0x00006bb0 336 SystemClassLoaderInjector::combineArray(_JNIEnv*, _jobject*, _jobject*)
0x00006d00 348 SystemClassLoaderInjector::injectAboveEqualApiLevel14(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x00008dd4 1640 __gxx_personality_v0
0x000083f0 0 __cxa_end_cleanup
0x000086b4 224 __cxa_begin_catch
0x00008794 216 __cxa_end_catch
0x00006e5c 268 SystemClassLoaderInjector::appendArray(_JNIEnv*, _jobject*, _jobject*)
0x00006f68 676 SystemClassLoaderInjector::injectInAliyunOs(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x0000720c 748 SystemClassLoaderInjector::injectBelowApiLevel14(_JNIEnv*, _jobject*, _jstring*, _jstring*)
0x00007f00 0 __gnu_Unwind_Restore_VFP_D
0x00007ef0 0 __gnu_Unwind_Restore_VFP
0x00007f10 0 __gnu_Unwind_Restore_VFP_D_16_to_31
0x00007f20 0 __gnu_Unwind_Restore_WMMXD
0x00007fa8 0 __gnu_Unwind_Restore_WMMXC
0x00007edc 20 restore_core_regs
0x00007814 4 _Unwind_GetCFA
0x00007818 78 __gnu_Unwind_RaiseException
0x00007866 20 __gnu_Unwind_ForcedUnwind
0x0000787a 68 __gnu_Unwind_Resume
0x000078be 26 __gnu_Unwind_Resume_or_Rethrow
0x000078d8 2 _Unwind_Complete
0x000078da 16 _Unwind_DeleteException
0x000078ea 52 _Unwind_VRS_Get
0x000083dc 18 __gnu_thumb1_case_uqi
0x00007934 52 _Unwind_VRS_Set
0x00007980 112 __gnu_Unwind_Backtrace
0x00008544 180 __cxa_begin_cleanup
0x00008400 324 __cxa_type_match
0x000080fc 656 __gnu_unwind_execute
0x00009a78 436 __cxa_call_unexpected
0x00007c8e 590 _Unwind_VRS_Pop
0x00007f64 0 __gnu_Unwind_Save_WMMXD
0x00007fbc 0 __gnu_Unwind_Save_WMMXC
0x00007f08 0 __gnu_Unwind_Save_VFP_D
0x00007ef8 0 __gnu_Unwind_Save_VFP
0x00007f18 0 __gnu_Unwind_Save_VFP_D_16_to_31
0x00007edc 20 __restore_core_regs
0x00007fd0 42 ___Unwind_RaiseException
0x00007fd0 42 _Unwind_RaiseException
0x00007ffc 42 ___Unwind_Resume
0x00007ffc 42 _Unwind_Resume
0x00008028 42 ___Unwind_Resume_or_Rethrow
0x00008028 42 _Unwind_Resume_or_Rethrow
0x00008054 42 ___Unwind_ForcedUnwind
0x00008054 42 _Unwind_ForcedUnwind
0x00008080 42 ___Unwind_Backtrace
0x00008080 42 _Unwind_Backtrace
0x0000838c 38 __gnu_unwind_frame
0x000083b2 10 _Unwind_GetRegionStart
0x000083bc 20 _Unwind_GetLanguageSpecificData
0x000083d0 6 _Unwind_GetDataRelBase
0x000083d6 6 _Unwind_GetTextRelBase
0x00017024 0 _edata
0x00017024 0 __bss_start
0x0001bf58 0 _end
0x000085f8 180 __gnu_end_cleanup
0x000167f4 8 typeinfo for __cxxabiv1::__foreign_exception
0x000167c0 8 typeinfo for __cxxabiv1::__forced_unwind
0x00008a3c 144 __cxa_get_globals
0x00009470 24 std::terminate()
0x000086ac 8 __cxa_get_exception_ptr
0x000089f4 72 __cxa_get_globals_fast
0x0000886c 24 std::uncaught_exception()
0x00008884 24 std::exception::~exception()
0x00016830 20 vtable for std::exception
0x00008884 24 std::exception::~exception()
0x0000889c 40 std::bad_exception::~bad_exception()
0x000167d0 20 vtable for std::bad_exception
0x0000889c 40 std::bad_exception::~bad_exception()
0x000088c4 24 __cxxabiv1::__forced_unwind::~__forced_unwind()
0x00016800 20 vtable for __cxxabiv1::__forced_unwind
0x000088c4 24 __cxxabiv1::__forced_unwind::~__forced_unwind()
0x000088dc 24 __cxxabiv1::__foreign_exception::~__foreign_exception()
0x00016818 20 vtable for __cxxabiv1::__foreign_exception
0x000088dc 24 __cxxabiv1::__foreign_exception::~__foreign_exception()
0x000088f4 16 std::exception::what() const
0x00008904 16 std::bad_exception::what() const
0x00008914 28 std::exception::~exception()
0x00008930 28 std::bad_exception::~bad_exception()
0x0000894c 28 __cxxabiv1::__forced_unwind::~__forced_unwind()
0x00008968 28 __cxxabiv1::__foreign_exception::~__foreign_exception()
0x000148dc 13 typeinfo name for std::exception
0x000167c8 8 typeinfo for std::exception
0x000148ec 18 typeinfo name for std::bad_exception
0x000167e8 12 typeinfo for std::bad_exception
0x00013f34 32 typeinfo name for __cxxabiv1::__forced_unwind
0x00013f54 36 typeinfo name for __cxxabiv1::__foreign_exception
0x00016ca8 44 vtable for __cxxabiv1::__class_type_info
0x00016c40 44 vtable for __cxxabiv1::__si_class_type_info
0x00009858 16 __aeabi_atexit
0x000099fc 124 __cxa_call_terminate
0x00009494 24 std::unexpected()
0x0000943c 52 __cxxabiv1::__terminate(void (*)())
0x00017020 4 __cxxabiv1::__terminate_handler
0x00009488 12 __cxxabiv1::__unexpected(void (*)())
0x0001701c 4 __cxxabiv1::__unexpected_handler
0x000094ac 28 std::set_terminate(void (*)())
0x000094c8 28 std::set_unexpected(void (*)())
0x000094e4 40 __cxxabiv1::__fundamental_type_info::~__fundamental_type_info()
0x000097bc 24 std::type_info::~type_info()
0x00016be0 32 vtable for __cxxabiv1::__fundamental_type_info
0x000094e4 40 __cxxabiv1::__fundamental_type_info::~__fundamental_type_info()
0x0000950c 28 __cxxabiv1::__fundamental_type_info::~__fundamental_type_info()
0x00014a2c 40 typeinfo name for __cxxabiv1::__fundamental_type_info
0x00016c00 12 typeinfo for __cxxabiv1::__fundamental_type_info
0x00016c18 36 vtable for __cxxabiv1::__pointer_type_info
0x000097d4 8 std::type_info::__is_pointer_p() const
0x000097dc 8 std::type_info::__is_function_p() const
0x00009854 4 std::type_info::__do_catch(std::type_info const*, void**, unsigned int) const
0x000097e4 8 std::type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**) const
0x00016ca0 8 typeinfo for std::type_info
0x00009528 8 __cxxabiv1::__pointer_type_info::__is_pointer_p() const
0x00009530 40 __cxxabiv1::__pointer_type_info::~__pointer_type_info()
0x00009df0 40 __cxxabiv1::__pbase_type_info::~__pbase_type_info()
0x00009530 40 __cxxabiv1::__pointer_type_info::~__pointer_type_info()
0x00009558 28 __cxxabiv1::__pointer_type_info::~__pointer_type_info()
0x00009574 128 __cxxabiv1::__pointer_type_info::__pointer_catch(__cxxabiv1::__pbase_type_info const*, void**, unsigned int) const
0x00009808 76 std::type_info::operator==(std::type_info const&) const
0x00014a54 36 typeinfo name for __cxxabiv1::__pointer_type_info
0x00016c0c 12 typeinfo for __cxxabiv1::__pointer_type_info
0x00016d10 12 typeinfo for __cxxabiv1::__pbase_type_info
0x00009e34 144 __cxxabiv1::__pbase_type_info::__do_catch(std::type_info const*, void**, unsigned int) const
0x000095f4 40 __cxxabiv1::__si_class_type_info::~__si_class_type_info()
0x000098d8 40 __cxxabiv1::__class_type_info::~__class_type_info()
0x000095f4 40 __cxxabiv1::__si_class_type_info::~__si_class_type_info()
0x0000961c 28 __cxxabiv1::__si_class_type_info::~__si_class_type_info()
0x00009638 100 __cxxabiv1::__si_class_type_info::__do_find_public_src(int, void const*, __cxxabiv1::__class_type_info const*, void const*) const
0x0000969c 224 __cxxabiv1::__si_class_type_info::__do_dyncast(int, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const
0x0000977c 64 __cxxabiv1::__si_class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__upcast_result&) const
0x0000991c 44 __cxxabiv1::__class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__upcast_result&) const
0x00014a78 37 typeinfo name for __cxxabiv1::__si_class_type_info
0x00016c70 12 typeinfo for __cxxabiv1::__si_class_type_info
0x00009948 68 __cxxabiv1::__class_type_info::__do_catch(std::type_info const*, void**, unsigned int) const
0x00009868 92 __cxxabiv1::__class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**) const
0x00016cd8 12 typeinfo for __cxxabiv1::__class_type_info
0x00016c80 32 vtable for std::type_info
0x000097bc 24 std::type_info::~type_info()
0x000097ec 28 std::type_info::~type_info()
0x00014aa0 13 typeinfo name for std::type_info
0x000098c4 20 __cxxabiv1::__class_type_info::__do_find_public_src(int, void const*, __cxxabiv1::__class_type_info const*, void const*) const
0x000098d8 40 __cxxabiv1::__class_type_info::~__class_type_info()
0x00009900 28 __cxxabiv1::__class_type_info::~__class_type_info()
0x0000998c 112 __cxxabiv1::__class_type_info::__do_dyncast(int, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const
0x00014ab0 34 typeinfo name for __cxxabiv1::__class_type_info
0x00012810 224 __cxa_allocate_exception
0x00009c64 188 __cxa_throw
0x00009d20 176 __cxa_rethrow
0x00009ec4 436 __gnu_cxx::__verbose_terminate_handler()
0x000128f0 160 __cxa_free_exception
0x00016ce8 36 vtable for __cxxabiv1::__pbase_type_info
0x00009df0 40 __cxxabiv1::__pbase_type_info::~__pbase_type_info()
0x00009e18 28 __cxxabiv1::__pbase_type_info::~__pbase_type_info()
0x00012b54 72 __cxa_bad_typeid
0x00014ad4 34 typeinfo name for __cxxabiv1::__pbase_type_info
0x00012b9c 44 __cxa_current_exception_type
0x00012538 332 __cxa_demangle
0x00012684 44 __gcclibcxx_demangle_callback
0x00012990 212 __cxa_allocate_dependent_exception
0x00012a64 168 __cxa_free_dependent_exception
0x00012b0c 72 __cxa_bad_cast
0x00016d78 20 vtable for std::bad_cast
0x00016d68 12 typeinfo for std::bad_cast
0x00012bd8 40 std::bad_cast::~bad_cast()
0x00016d90 20 vtable for std::bad_typeid
0x00016da8 12 typeinfo for std::bad_typeid
0x00012c2c 40 std::bad_typeid::~bad_typeid()
0x00012bc8 16 std::bad_cast::what() const
0x00012bd8 40 std::bad_cast::~bad_cast()
0x00012c00 28 std::bad_cast::~bad_cast()
0x00014b4c 12 typeinfo name for std::bad_cast
0x00012c1c 16 std::bad_typeid::what() const
0x00012c2c 40 std::bad_typeid::~bad_typeid()
0x00012c54 28 std::bad_typeid::~bad_typeid()
0x00014b58 15 typeinfo name for std::bad_typeid
EOF
RUN
NAME=iD
FILE=bins/elf/libmagic.so
BROKEN=1
CMDS=iD swift _TFSSCfT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS
EXPECT=<<EOF
Swift.String.init (_builtinStringLiteral(Builtin.RawPointer byteSize__Builtin.Word isASCII__Builtin.Int1 _) -> String
EOF
RUN
NAME=ie (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ie
EXPECT=<<EOF
[Entrypoints]
vaddr=0x08048300 paddr=0x00000300 haddr=0x00000018 hvaddr=0x08048018 type=program
1 entrypoints
EOF
RUN
NAME=iej (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iej
EXPECT=<<EOF
[{"vaddr":134513408,"paddr":768,"baddr":134512640,"laddr":0,"hvaddr":134512664,"haddr":24,"type":"program"}]
EOF
RUN
NAME=ii (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ii
EXPECT=<<EOF
[Imports]
nth vaddr bind type lib name
-------------------------------------
1 0x080482d0 GLOBAL FUNC puts
2 0x080482e0 WEAK NOTYPE __gmon_start__
3 0x080482f0 GLOBAL FUNC __libc_start_main
EOF
RUN
NAME=iI (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iI
EXPECT=<<EOF
arch x86
baddr 0x8048000
binsz 4899
bintype elf
bits 32
canary false
class ELF32
compiler GCC: (GNU) 4.8.2
crypto false
endian little
havecode true
intrp /lib/ld-linux.so.2
laddr 0x0
lang c
linenum true
lsyms true
machine Intel 80386
maxopsz 16
minopsz 1
nx true
os linux
pcalign 0
pic false
relocs true
relro no
rpath NONE
sanitiz false
static false
stripped false
subsys linux
va true
EOF
RUN
NAME=iIj
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iIj~{}
EXPECT=<<EOF
{
"arch": "x86",
"baddr": 134512640,
"binsz": 4899,
"bintype": "elf",
"bits": 32,
"canary": false,
"class": "ELF32",
"compiled": "",
"compiler": "GCC: (GNU) 4.8.2",
"crypto": false,
"dbg_file": "",
"endian": "little",
"havecode": true,
"guid": "",
"intrp": "/lib/ld-linux.so.2",
"laddr": 0,
"lang": "c",
"linenum": true,
"lsyms": true,
"machine": "Intel 80386",
"maxopsz": 16,
"minopsz": 1,
"nx": true,
"os": "linux",
"cc": "",
"pcalign": 0,
"pic": false,
"relocs": true,
"relro": "no",
"rpath": "NONE",
"sanitiz": false,
"static": false,
"stripped": false,
"subsys": "linux",
"va": true,
"checksums": {
}
}
EOF
RUN
NAME=iI-rust
FILE=bins/elf/analysis/rust_full
CMDS=iI~lang
EXPECT=<<EOF
lang rust
EOF
RUN
NAME=iI-msvc
FILE=bins/pe/libzmq-v100-mt-4_0_4.dll
CMDS=iI~lang
EXPECT=<<EOF
lang msvc
EOF
RUN
NAME=im
FILE=bins/nes/Pong.nes
CMDS=im~?SRAM
EXPECT=<<EOF
1
EOF
RUN
NAME=imj
FILE=bins/nes/Pong.nes
CMDS=imj~?SRAM
EXPECT=<<EOF
1
EOF
RUN
NAME=imq
FILE=bins/nes/Pong.nes
CMDS=imq
EXPECT=<<EOF
[Memory]
0x00000000
0x00001000
0x00001800
0x00002000
0x00002008
0x00002010
0x00002018
0x00002020
0x00002028
0x00002030
0x00002038
0x00002040
0x00002048
0x00002050
0x00002058
0x00002060
0x00002068
0x00002070
0x00002078
0x00002080
0x00002088
0x00002090
0x00002098
0x000020a0
0x000020a8
0x000020b0
0x000020b8
0x000020c0
0x000020c8
0x000020d0
0x000020d8
0x000020e0
0x000020e8
0x000020f0
0x000020f8
0x00002100
0x00002108
0x00002110
0x00002118
0x00002120
0x00002128
0x00002130
0x00002138
0x00002140
0x00002148
0x00002150
0x00002158
0x00002160
0x00002168
0x00002170
0x00002178
0x00002180
0x00002188
0x00002190
0x00002198
0x000021a0
0x000021a8
0x000021b0
0x000021b8
0x000021c0
0x000021c8
0x000021d0
0x000021d8
0x000021e0
0x000021e8
0x000021f0
0x000021f8
0x00002200
0x00002208
0x00002210
0x00002218
0x00002220
0x00002228
0x00002230
0x00002238
0x00002240
0x00002248
0x00002250
0x00002258
0x00002260
0x00002268
0x00002270
0x00002278
0x00002280
0x00002288
0x00002290
0x00002298
0x000022a0
0x000022a8
0x000022b0
0x000022b8
0x000022c0
0x000022c8
0x000022d0
0x000022d8
0x000022e0
0x000022e8
0x000022f0
0x000022f8
0x00002300
0x00002308
0x00002310
0x00002318
0x00002320
0x00002328
0x00002330
0x00002338
0x00002340
0x00002348
0x00002350
0x00002358
0x00002360
0x00002368
0x00002370
0x00002378
0x00002380
0x00002388
0x00002390
0x00002398
0x000023a0
0x000023a8
0x000023b0
0x000023b8
0x000023c0
0x000023c8
0x000023d0
0x000023d8
0x000023e0
0x000023e8
0x000023f0
0x000023f8
0x00002400
0x00002408
0x00002410
0x00002418
0x00002420
0x00002428
0x00002430
0x00002438
0x00002440
0x00002448
0x00002450
0x00002458
0x00002460
0x00002468
0x00002470
0x00002478
0x00002480
0x00002488
0x00002490
0x00002498
0x000024a0
0x000024a8
0x000024b0
0x000024b8
0x000024c0
0x000024c8
0x000024d0
0x000024d8
0x000024e0
0x000024e8
0x000024f0
0x000024f8
0x00002500
0x00002508
0x00002510
0x00002518
0x00002520
0x00002528
0x00002530
0x00002538
0x00002540
0x00002548
0x00002550
0x00002558
0x00002560
0x00002568
0x00002570
0x00002578
0x00002580
0x00002588
0x00002590
0x00002598
0x000025a0
0x000025a8
0x000025b0
0x000025b8
0x000025c0
0x000025c8
0x000025d0
0x000025d8
0x000025e0
0x000025e8
0x000025f0
0x000025f8
0x00002600
0x00002608
0x00002610
0x00002618
0x00002620
0x00002628
0x00002630
0x00002638
0x00002640
0x00002648
0x00002650
0x00002658
0x00002660
0x00002668
0x00002670
0x00002678
0x00002680
0x00002688
0x00002690
0x00002698
0x000026a0
0x000026a8
0x000026b0
0x000026b8
0x000026c0
0x000026c8
0x000026d0
0x000026d8
0x000026e0
0x000026e8
0x000026f0
0x000026f8
0x00002700
0x00002708
0x00002710
0x00002718
0x00002720
0x00002728
0x00002730
0x00002738
0x00002740
0x00002748
0x00002750
0x00002758
0x00002760
0x00002768
0x00002770
0x00002778
0x00002780
0x00002788
0x00002790
0x00002798
0x000027a0
0x000027a8
0x000027b0
0x000027b8
0x000027c0
0x000027c8
0x000027d0
0x000027d8
0x000027e0
0x000027e8
0x000027f0
0x000027f8
0x00002800
0x00002808
0x00002810
0x00002818
0x00002820
0x00002828
0x00002830
0x00002838
0x00002840
0x00002848
0x00002850
0x00002858
0x00002860
0x00002868
0x00002870
0x00002878
0x00002880
0x00002888
0x00002890
0x00002898
0x000028a0
0x000028a8
0x000028b0
0x000028b8
0x000028c0
0x000028c8
0x000028d0
0x000028d8
0x000028e0
0x000028e8
0x000028f0
0x000028f8
0x00002900
0x00002908
0x00002910
0x00002918
0x00002920
0x00002928
0x00002930
0x00002938
0x00002940
0x00002948
0x00002950
0x00002958
0x00002960
0x00002968
0x00002970
0x00002978
0x00002980
0x00002988
0x00002990
0x00002998
0x000029a0
0x000029a8
0x000029b0
0x000029b8
0x000029c0
0x000029c8
0x000029d0
0x000029d8
0x000029e0
0x000029e8
0x000029f0
0x000029f8
0x00002a00
0x00002a08
0x00002a10
0x00002a18
0x00002a20
0x00002a28
0x00002a30
0x00002a38
0x00002a40
0x00002a48
0x00002a50
0x00002a58
0x00002a60
0x00002a68
0x00002a70
0x00002a78
0x00002a80
0x00002a88
0x00002a90
0x00002a98
0x00002aa0
0x00002aa8
0x00002ab0
0x00002ab8
0x00002ac0
0x00002ac8
0x00002ad0
0x00002ad8
0x00002ae0
0x00002ae8
0x00002af0
0x00002af8
0x00002b00
0x00002b08
0x00002b10
0x00002b18
0x00002b20
0x00002b28
0x00002b30
0x00002b38
0x00002b40
0x00002b48
0x00002b50
0x00002b58
0x00002b60
0x00002b68
0x00002b70
0x00002b78
0x00002b80
0x00002b88
0x00002b90
0x00002b98
0x00002ba0
0x00002ba8
0x00002bb0
0x00002bb8
0x00002bc0
0x00002bc8
0x00002bd0
0x00002bd8
0x00002be0
0x00002be8
0x00002bf0
0x00002bf8
0x00002c00
0x00002c08
0x00002c10
0x00002c18
0x00002c20
0x00002c28
0x00002c30
0x00002c38
0x00002c40
0x00002c48
0x00002c50
0x00002c58
0x00002c60
0x00002c68
0x00002c70
0x00002c78
0x00002c80
0x00002c88
0x00002c90
0x00002c98
0x00002ca0
0x00002ca8
0x00002cb0
0x00002cb8
0x00002cc0
0x00002cc8
0x00002cd0
0x00002cd8
0x00002ce0
0x00002ce8
0x00002cf0
0x00002cf8
0x00002d00
0x00002d08
0x00002d10
0x00002d18
0x00002d20
0x00002d28
0x00002d30
0x00002d38
0x00002d40
0x00002d48
0x00002d50
0x00002d58
0x00002d60
0x00002d68
0x00002d70
0x00002d78
0x00002d80
0x00002d88
0x00002d90
0x00002d98
0x00002da0
0x00002da8
0x00002db0
0x00002db8
0x00002dc0
0x00002dc8
0x00002dd0
0x00002dd8
0x00002de0
0x00002de8
0x00002df0
0x00002df8
0x00002e00
0x00002e08
0x00002e10
0x00002e18
0x00002e20
0x00002e28
0x00002e30
0x00002e38
0x00002e40
0x00002e48
0x00002e50
0x00002e58
0x00002e60
0x00002e68
0x00002e70
0x00002e78
0x00002e80
0x00002e88
0x00002e90
0x00002e98
0x00002ea0
0x00002ea8
0x00002eb0
0x00002eb8
0x00002ec0
0x00002ec8
0x00002ed0
0x00002ed8
0x00002ee0
0x00002ee8
0x00002ef0
0x00002ef8
0x00002f00
0x00002f08
0x00002f10
0x00002f18
0x00002f20
0x00002f28
0x00002f30
0x00002f38
0x00002f40
0x00002f48
0x00002f50
0x00002f58
0x00002f60
0x00002f68
0x00002f70
0x00002f78
0x00002f80
0x00002f88
0x00002f90
0x00002f98
0x00002fa0
0x00002fa8
0x00002fb0
0x00002fb8
0x00002fc0
0x00002fc8
0x00002fd0
0x00002fd8
0x00002fe0
0x00002fe8
0x00002ff0
0x00002ff8
0x00003000
0x00003008
0x00003010
0x00003018
0x00003020
0x00003028
0x00003030
0x00003038
0x00003040
0x00003048
0x00003050
0x00003058
0x00003060
0x00003068
0x00003070
0x00003078
0x00003080
0x00003088
0x00003090
0x00003098
0x000030a0
0x000030a8
0x000030b0
0x000030b8
0x000030c0
0x000030c8
0x000030d0
0x000030d8
0x000030e0
0x000030e8
0x000030f0
0x000030f8
0x00003100
0x00003108
0x00003110
0x00003118
0x00003120
0x00003128
0x00003130
0x00003138
0x00003140
0x00003148
0x00003150
0x00003158
0x00003160
0x00003168
0x00003170
0x00003178
0x00003180
0x00003188
0x00003190
0x00003198
0x000031a0
0x000031a8
0x000031b0
0x000031b8
0x000031c0
0x000031c8
0x000031d0
0x000031d8
0x000031e0
0x000031e8
0x000031f0
0x000031f8
0x00003200
0x00003208
0x00003210
0x00003218
0x00003220
0x00003228
0x00003230
0x00003238
0x00003240
0x00003248
0x00003250
0x00003258
0x00003260
0x00003268
0x00003270
0x00003278
0x00003280
0x00003288
0x00003290
0x00003298
0x000032a0
0x000032a8
0x000032b0
0x000032b8
0x000032c0
0x000032c8
0x000032d0
0x000032d8
0x000032e0
0x000032e8
0x000032f0
0x000032f8
0x00003300
0x00003308
0x00003310
0x00003318
0x00003320
0x00003328
0x00003330
0x00003338
0x00003340
0x00003348
0x00003350
0x00003358
0x00003360
0x00003368
0x00003370
0x00003378
0x00003380
0x00003388
0x00003390
0x00003398
0x000033a0
0x000033a8
0x000033b0
0x000033b8
0x000033c0
0x000033c8
0x000033d0
0x000033d8
0x000033e0
0x000033e8
0x000033f0
0x000033f8
0x00003400
0x00003408
0x00003410
0x00003418
0x00003420
0x00003428
0x00003430
0x00003438
0x00003440
0x00003448
0x00003450
0x00003458
0x00003460
0x00003468
0x00003470
0x00003478
0x00003480
0x00003488
0x00003490
0x00003498
0x000034a0
0x000034a8
0x000034b0
0x000034b8
0x000034c0
0x000034c8
0x000034d0
0x000034d8
0x000034e0
0x000034e8
0x000034f0
0x000034f8
0x00003500
0x00003508
0x00003510
0x00003518
0x00003520
0x00003528
0x00003530
0x00003538
0x00003540
0x00003548
0x00003550
0x00003558
0x00003560
0x00003568
0x00003570
0x00003578
0x00003580
0x00003588
0x00003590
0x00003598
0x000035a0
0x000035a8
0x000035b0
0x000035b8
0x000035c0
0x000035c8
0x000035d0
0x000035d8
0x000035e0
0x000035e8
0x000035f0
0x000035f8
0x00003600
0x00003608
0x00003610
0x00003618
0x00003620
0x00003628
0x00003630
0x00003638
0x00003640
0x00003648
0x00003650
0x00003658
0x00003660
0x00003668
0x00003670
0x00003678
0x00003680
0x00003688
0x00003690
0x00003698
0x000036a0
0x000036a8
0x000036b0
0x000036b8
0x000036c0
0x000036c8
0x000036d0
0x000036d8
0x000036e0
0x000036e8
0x000036f0
0x000036f8
0x00003700
0x00003708
0x00003710
0x00003718
0x00003720
0x00003728
0x00003730
0x00003738
0x00003740
0x00003748
0x00003750
0x00003758
0x00003760
0x00003768
0x00003770
0x00003778
0x00003780
0x00003788
0x00003790
0x00003798
0x000037a0
0x000037a8
0x000037b0
0x000037b8
0x000037c0
0x000037c8
0x000037d0
0x000037d8
0x000037e0
0x000037e8
0x000037f0
0x000037f8
0x00003800
0x00003808
0x00003810
0x00003818
0x00003820
0x00003828
0x00003830
0x00003838
0x00003840
0x00003848
0x00003850
0x00003858
0x00003860
0x00003868
0x00003870
0x00003878
0x00003880
0x00003888
0x00003890
0x00003898
0x000038a0
0x000038a8
0x000038b0
0x000038b8
0x000038c0
0x000038c8
0x000038d0
0x000038d8
0x000038e0
0x000038e8
0x000038f0
0x000038f8
0x00003900
0x00003908
0x00003910
0x00003918
0x00003920
0x00003928
0x00003930
0x00003938
0x00003940
0x00003948
0x00003950
0x00003958
0x00003960
0x00003968
0x00003970
0x00003978
0x00003980
0x00003988
0x00003990
0x00003998
0x000039a0
0x000039a8
0x000039b0
0x000039b8
0x000039c0
0x000039c8
0x000039d0
0x000039d8
0x000039e0
0x000039e8
0x000039f0
0x000039f8
0x00003a00
0x00003a08
0x00003a10
0x00003a18
0x00003a20
0x00003a28
0x00003a30
0x00003a38
0x00003a40
0x00003a48
0x00003a50
0x00003a58
0x00003a60
0x00003a68
0x00003a70
0x00003a78
0x00003a80
0x00003a88
0x00003a90
0x00003a98
0x00003aa0
0x00003aa8
0x00003ab0
0x00003ab8
0x00003ac0
0x00003ac8
0x00003ad0
0x00003ad8
0x00003ae0
0x00003ae8
0x00003af0
0x00003af8
0x00003b00
0x00003b08
0x00003b10
0x00003b18
0x00003b20
0x00003b28
0x00003b30
0x00003b38
0x00003b40
0x00003b48
0x00003b50
0x00003b58
0x00003b60
0x00003b68
0x00003b70
0x00003b78
0x00003b80
0x00003b88
0x00003b90
0x00003b98
0x00003ba0
0x00003ba8
0x00003bb0
0x00003bb8
0x00003bc0
0x00003bc8
0x00003bd0
0x00003bd8
0x00003be0
0x00003be8
0x00003bf0
0x00003bf8
0x00003c00
0x00003c08
0x00003c10
0x00003c18
0x00003c20
0x00003c28
0x00003c30
0x00003c38
0x00003c40
0x00003c48
0x00003c50
0x00003c58
0x00003c60
0x00003c68
0x00003c70
0x00003c78
0x00003c80
0x00003c88
0x00003c90
0x00003c98
0x00003ca0
0x00003ca8
0x00003cb0
0x00003cb8
0x00003cc0
0x00003cc8
0x00003cd0
0x00003cd8
0x00003ce0
0x00003ce8
0x00003cf0
0x00003cf8
0x00003d00
0x00003d08
0x00003d10
0x00003d18
0x00003d20
0x00003d28
0x00003d30
0x00003d38
0x00003d40
0x00003d48
0x00003d50
0x00003d58
0x00003d60
0x00003d68
0x00003d70
0x00003d78
0x00003d80
0x00003d88
0x00003d90
0x00003d98
0x00003da0
0x00003da8
0x00003db0
0x00003db8
0x00003dc0
0x00003dc8
0x00003dd0
0x00003dd8
0x00003de0
0x00003de8
0x00003df0
0x00003df8
0x00003e00
0x00003e08
0x00003e10
0x00003e18
0x00003e20
0x00003e28
0x00003e30
0x00003e38
0x00003e40
0x00003e48
0x00003e50
0x00003e58
0x00003e60
0x00003e68
0x00003e70
0x00003e78
0x00003e80
0x00003e88
0x00003e90
0x00003e98
0x00003ea0
0x00003ea8
0x00003eb0
0x00003eb8
0x00003ec0
0x00003ec8
0x00003ed0
0x00003ed8
0x00003ee0
0x00003ee8
0x00003ef0
0x00003ef8
0x00003f00
0x00003f08
0x00003f10
0x00003f18
0x00003f20
0x00003f28
0x00003f30
0x00003f38
0x00003f40
0x00003f48
0x00003f50
0x00003f58
0x00003f60
0x00003f68
0x00003f70
0x00003f78
0x00003f80
0x00003f88
0x00003f90
0x00003f98
0x00003fa0
0x00003fa8
0x00003fb0
0x00003fb8
0x00003fc0
0x00003fc8
0x00003fd0
0x00003fd8
0x00003fe0
0x00003fe8
0x00003ff0
0x00003ff8
0x00004000
0x00006000
EOF
RUN
NAME=iS (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iS
EXPECT=<<EOF
[Sections]
nth paddr size vaddr vsize perm name type flags
--------------------------------------------------------------------------------
0 0x00000000 0x0 0x00000000 0x0 ---- NULL
1 0x00000134 0x13 0x08048134 0x13 -r-- .interp PROGBITS alloc
2 0x00000148 0x20 0x08048148 0x20 -r-- .note.ABI-tag NOTE alloc
3 0x00000168 0x24 0x08048168 0x24 -r-- .note.gnu.build-id NOTE alloc
4 0x0000018c 0x20 0x0804818c 0x20 -r-- .gnu.hash GNU_HASH alloc
5 0x000001ac 0x50 0x080481ac 0x50 -r-- .dynsym DYNSYM alloc
6 0x000001fc 0x4a 0x080481fc 0x4a -r-- .dynstr STRTAB alloc
7 0x00000246 0xa 0x08048246 0xa -r-- .gnu.version VERSYM alloc
8 0x00000250 0x20 0x08048250 0x20 -r-- .gnu.version_r VERNEED alloc
9 0x00000270 0x8 0x08048270 0x8 -r-- .rel.dyn REL alloc
10 0x00000278 0x18 0x08048278 0x18 -r-- .rel.plt REL alloc
11 0x00000290 0x23 0x08048290 0x23 -r-x .init PROGBITS alloc,execute
12 0x000002c0 0x40 0x080482c0 0x40 -r-x .plt PROGBITS alloc,execute
13 0x00000300 0x194 0x08048300 0x194 -r-x .text PROGBITS alloc,execute
14 0x00000494 0x14 0x08048494 0x14 -r-x .fini PROGBITS alloc,execute
15 0x000004a8 0x15 0x080484a8 0x15 -r-- .rodata PROGBITS alloc
16 0x000004c0 0x2c 0x080484c0 0x2c -r-- .eh_frame_hdr PROGBITS alloc
17 0x000004ec 0xb0 0x080484ec 0xb0 -r-- .eh_frame PROGBITS alloc
18 0x0000059c 0x4 0x0804959c 0x4 -rw- .init_array INIT_ARRAY write,alloc
19 0x000005a0 0x4 0x080495a0 0x4 -rw- .fini_array FINI_ARRAY write,alloc
20 0x000005a4 0x4 0x080495a4 0x4 -rw- .jcr PROGBITS write,alloc
21 0x000005a8 0xe8 0x080495a8 0xe8 -rw- .dynamic DYNAMIC write,alloc
22 0x00000690 0x4 0x08049690 0x4 -rw- .got PROGBITS write,alloc
23 0x00000694 0x18 0x08049694 0x18 -rw- .got.plt PROGBITS write,alloc
24 0x000006ac 0x8 0x080496ac 0x8 -rw- .data PROGBITS write,alloc
25 0x000006b4 0x0 0x080496b4 0x4 -rw- .bss NOBITS write,alloc
26 0x000006b4 0x11 0x00000000 0x11 ---- .comment PROGBITS merge,strings
27 0x000006c5 0x106 0x00000000 0x106 ---- .shstrtab STRTAB
28 0x00000c7c 0x450 0x00000000 0x450 ---- .symtab SYMTAB
29 0x000010cc 0x257 0x00000000 0x257 ---- .strtab STRTAB
EOF
RUN
NAME=iSS (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iSS
EXPECT=<<EOF
[Segments]
nth paddr size vaddr vsize perm name
-------------------------------------------------
0 0x00000034 0x100 0x08048034 0x100 -r-x PHDR
1 0x00000134 0x13 0x08048134 0x13 -r-- INTERP
2 0x00000000 0x59c 0x08048000 0x59c -r-x LOAD0
3 0x0000059c 0x118 0x0804959c 0x11c -rw- LOAD1
4 0x000005a8 0xe8 0x080495a8 0xe8 -rw- DYNAMIC
5 0x00000148 0x44 0x08048148 0x44 -r-- NOTE
6 0x000004c0 0x2c 0x080484c0 0x2c -r-- GNU_EH_FRAME
7 0x00000000 0x0 0x00000000 0x0 -rw- GNU_STACK
8 0x00000000 0x34 0x08048000 0x34 -rw- ehdr
EOF
RUN
NAME=iSj
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iSj
EXPECT=<<EOF
[{"name":"","size":0,"vsize":0,"perm":"----","type":"NULL","flags":[],"paddr":0,"vaddr":0},{"name":".interp","size":19,"vsize":19,"perm":"-r--","type":"PROGBITS","flags":["alloc"],"paddr":308,"vaddr":134512948},{"name":".note.ABI-tag","size":32,"vsize":32,"perm":"-r--","type":"NOTE","flags":["alloc"],"paddr":328,"vaddr":134512968},{"name":".note.gnu.build-id","size":36,"vsize":36,"perm":"-r--","type":"NOTE","flags":["alloc"],"paddr":360,"vaddr":134513000},{"name":".gnu.hash","size":32,"vsize":32,"perm":"-r--","type":"GNU_HASH","flags":["alloc"],"paddr":396,"vaddr":134513036},{"name":".dynsym","size":80,"vsize":80,"perm":"-r--","type":"DYNSYM","flags":["alloc"],"paddr":428,"vaddr":134513068},{"name":".dynstr","size":74,"vsize":74,"perm":"-r--","type":"STRTAB","flags":["alloc"],"paddr":508,"vaddr":134513148},{"name":".gnu.version","size":10,"vsize":10,"perm":"-r--","type":"VERSYM","flags":["alloc"],"paddr":582,"vaddr":134513222},{"name":".gnu.version_r","size":32,"vsize":32,"perm":"-r--","type":"VERNEED","flags":["alloc"],"paddr":592,"vaddr":134513232},{"name":".rel.dyn","size":8,"vsize":8,"perm":"-r--","type":"REL","flags":["alloc"],"paddr":624,"vaddr":134513264},{"name":".rel.plt","size":24,"vsize":24,"perm":"-r--","type":"REL","flags":["alloc"],"paddr":632,"vaddr":134513272},{"name":".init","size":35,"vsize":35,"perm":"-r-x","type":"PROGBITS","flags":["alloc","execute"],"paddr":656,"vaddr":134513296},{"name":".plt","size":64,"vsize":64,"perm":"-r-x","type":"PROGBITS","flags":["alloc","execute"],"paddr":704,"vaddr":134513344},{"name":".text","size":404,"vsize":404,"perm":"-r-x","type":"PROGBITS","flags":["alloc","execute"],"paddr":768,"vaddr":134513408},{"name":".fini","size":20,"vsize":20,"perm":"-r-x","type":"PROGBITS","flags":["alloc","execute"],"paddr":1172,"vaddr":134513812},{"name":".rodata","size":21,"vsize":21,"perm":"-r--","type":"PROGBITS","flags":["alloc"],"paddr":1192,"vaddr":134513832},{"name":".eh_frame_hdr","size":44,"vsize":44,"perm":"-r--","type":"PROGBITS","flags":["alloc"],"paddr":1216,"vaddr":134513856},{"name":".eh_frame","size":176,"vsize":176,"perm":"-r--","type":"PROGBITS","flags":["alloc"],"paddr":1260,"vaddr":134513900},{"name":".init_array","size":4,"vsize":4,"perm":"-rw-","type":"INIT_ARRAY","flags":["write","alloc"],"paddr":1436,"vaddr":134518172},{"name":".fini_array","size":4,"vsize":4,"perm":"-rw-","type":"FINI_ARRAY","flags":["write","alloc"],"paddr":1440,"vaddr":134518176},{"name":".jcr","size":4,"vsize":4,"perm":"-rw-","type":"PROGBITS","flags":["write","alloc"],"paddr":1444,"vaddr":134518180},{"name":".dynamic","size":232,"vsize":232,"perm":"-rw-","type":"DYNAMIC","flags":["write","alloc"],"paddr":1448,"vaddr":134518184},{"name":".got","size":4,"vsize":4,"perm":"-rw-","type":"PROGBITS","flags":["write","alloc"],"paddr":1680,"vaddr":134518416},{"name":".got.plt","size":24,"vsize":24,"perm":"-rw-","type":"PROGBITS","flags":["write","alloc"],"paddr":1684,"vaddr":134518420},{"name":".data","size":8,"vsize":8,"perm":"-rw-","type":"PROGBITS","flags":["write","alloc"],"paddr":1708,"vaddr":134518444},{"name":".bss","size":0,"vsize":4,"perm":"-rw-","type":"NOBITS","flags":["write","alloc"],"paddr":1716,"vaddr":134518452},{"name":".comment","size":17,"vsize":17,"perm":"----","type":"PROGBITS","flags":["merge","strings"],"paddr":1716,"vaddr":0},{"name":".shstrtab","size":262,"vsize":262,"perm":"----","type":"STRTAB","flags":[],"paddr":1733,"vaddr":0},{"name":".symtab","size":1104,"vsize":1104,"perm":"----","type":"SYMTAB","flags":[],"paddr":3196,"vaddr":0},{"name":".strtab","size":599,"vsize":599,"perm":"----","type":"STRTAB","flags":[],"paddr":4300,"vaddr":0}]
EOF
RUN
NAME=iSSj
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iSSj
EXPECT=<<EOF
[{"name":"PHDR","size":256,"vsize":256,"perm":"-r-x","paddr":52,"vaddr":134512692},{"name":"INTERP","size":19,"vsize":19,"perm":"-r--","paddr":308,"vaddr":134512948},{"name":"LOAD0","size":1436,"vsize":1436,"perm":"-r-x","paddr":0,"vaddr":134512640},{"name":"LOAD1","size":280,"vsize":284,"perm":"-rw-","paddr":1436,"vaddr":134518172},{"name":"DYNAMIC","size":232,"vsize":232,"perm":"-rw-","paddr":1448,"vaddr":134518184},{"name":"NOTE","size":68,"vsize":68,"perm":"-r--","paddr":328,"vaddr":134512968},{"name":"GNU_EH_FRAME","size":44,"vsize":44,"perm":"-r--","paddr":1216,"vaddr":134513856},{"name":"GNU_STACK","size":0,"vsize":0,"perm":"-rw-","paddr":0,"vaddr":0},{"name":"ehdr","size":52,"vsize":52,"perm":"-rw-","paddr":0,"vaddr":134512640}]
EOF
RUN
NAME=iSq
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iSq
EXPECT=<<EOF
0x0 0x0 ----
0x8048134 0x8048147 -r-- .interp
0x8048148 0x8048168 -r-- .note.ABI-tag
0x8048168 0x804818c -r-- .note.gnu.build-id
0x804818c 0x80481ac -r-- .gnu.hash
0x80481ac 0x80481fc -r-- .dynsym
0x80481fc 0x8048246 -r-- .dynstr
0x8048246 0x8048250 -r-- .gnu.version
0x8048250 0x8048270 -r-- .gnu.version_r
0x8048270 0x8048278 -r-- .rel.dyn
0x8048278 0x8048290 -r-- .rel.plt
0x8048290 0x80482b3 -r-x .init
0x80482c0 0x8048300 -r-x .plt
0x8048300 0x8048494 -r-x .text
0x8048494 0x80484a8 -r-x .fini
0x80484a8 0x80484bd -r-- .rodata
0x80484c0 0x80484ec -r-- .eh_frame_hdr
0x80484ec 0x804859c -r-- .eh_frame
0x804959c 0x80495a0 -rw- .init_array
0x80495a0 0x80495a4 -rw- .fini_array
0x80495a4 0x80495a8 -rw- .jcr
0x80495a8 0x8049690 -rw- .dynamic
0x8049690 0x8049694 -rw- .got
0x8049694 0x80496ac -rw- .got.plt
0x80496ac 0x80496b4 -rw- .data
0x80496b4 0x80496b4 -rw- .bss
0x0 0x11 ---- .comment
0x0 0x106 ---- .shstrtab
0x0 0x450 ---- .symtab
0x0 0x257 ---- .strtab
EOF
RUN
NAME=iSSq
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=iSSq
EXPECT=<<EOF
0x8048034 0x8048134 -r-x PHDR
0x8048134 0x8048147 -r-- INTERP
0x8048000 0x804859c -r-x LOAD0
0x804959c 0x80496b4 -rw- LOAD1
0x80495a8 0x8049690 -rw- DYNAMIC
0x8048148 0x804818c -r-- NOTE
0x80484c0 0x80484ec -r-- GNU_EH_FRAME
0x0 0x0 -rw- GNU_STACK
0x8048000 0x8048034 -rw- ehdr
EOF
RUN
NAME=section comment
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=<<EOF
e asm.bytes=false
pd 1 @ 0x080495a8
EOF
EXPECT=<<EOF
;-- section..dynamic:
;-- segment.DYNAMIC:
;-- .dynamic:
;-- _DYNAMIC:
0x080495a8 .dword 0x00000001 ; [21] -rw- section size 232 named .dynamic
EOF
RUN
NAME=bss section comment
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=<<EOF
e asm.bytes=true
pd 3 @ section..bss
EOF
EXPECT=<<EOF
;-- section..bss:
;-- .bss:
;-- completed.5979:
;-- _edata:
;-- __bss_start:
;-- __TMC_END__:
0x080496b4 0000 add byte [eax], al ; [25] -rw- section size 4 named .bss
0x080496b6 0000 add byte [eax], al
;-- _end:
0x080496b8 ff invalid
EOF
RUN
NAME=il (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=il
EXPECT=<<EOF
[Linked libraries]
libc.so.6
1 library
EOF
RUN
NAME=il* (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=il*
EXPECT=<<EOF
"CCa entry0 libc.so.6"
EOF
RUN
NAME=ir (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ir
EXPECT=<<EOF
[Relocations]
vaddr paddr type name
---------------------------------
0x08049690 0x00000690 SET_32 __gmon_start__
0x080496a0 0x000006a0 SET_32 puts
0x080496a4 0x000006a4 SET_32 __gmon_start__
0x080496a8 0x000006a8 SET_32 __libc_start_main
4 relocations
EOF
RUN
NAME=ir* (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ir*
EXPECT=<<EOF
fs relocs
"f reloc.__gmon_start__ 4 0x08049690"
Cd 4 @ 0x08049690
"f reloc.puts 4 0x080496a0"
Cd 4 @ 0x080496a0
"f reloc.__gmon_start__ 4 0x080496a4"
Cd 4 @ 0x080496a4
"f reloc.__libc_start_main 4 0x080496a8"
Cd 4 @ 0x080496a8
EOF
RUN
NAME=irq (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=irq
EXPECT=<<EOF
0x08049690 __gmon_start__
0x080496a0 puts
0x080496a4 __gmon_start__
0x080496a8 __libc_start_main
EOF
RUN
NAME=is (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=is
EXPECT=<<EOF
[Symbols]
nth paddr vaddr bind type size lib name
-----------------------------------------------------
4 0x000004ac 0x080484ac GLOBAL OBJ 4 _IO_stdin_used
1 0x00000134 0x08048134 LOCAL SECT 0 .interp
2 0x00000148 0x08048148 LOCAL SECT 0 .note.ABI-tag
3 0x00000168 0x08048168 LOCAL SECT 0 .note.gnu.build-id
4 0x0000018c 0x0804818c LOCAL SECT 0 .gnu.hash
5 0x000001ac 0x080481ac LOCAL SECT 0 .dynsym
6 0x000001fc 0x080481fc LOCAL SECT 0 .dynstr
7 0x00000246 0x08048246 LOCAL SECT 0 .gnu.version
8 0x00000250 0x08048250 LOCAL SECT 0 .gnu.version_r
9 0x00000270 0x08048270 LOCAL SECT 0 .rel.dyn
10 0x00000278 0x08048278 LOCAL SECT 0 .rel.plt
11 0x00000290 0x08048290 LOCAL SECT 0 .init
12 0x000002c0 0x080482c0 LOCAL SECT 0 .plt
13 0x00000300 0x08048300 LOCAL SECT 0 .text
14 0x00000494 0x08048494 LOCAL SECT 0 .fini
15 0x000004a8 0x080484a8 LOCAL SECT 0 .rodata
16 0x000004c0 0x080484c0 LOCAL SECT 0 .eh_frame_hdr
17 0x000004ec 0x080484ec LOCAL SECT 0 .eh_frame
18 0x0000059c 0x0804959c LOCAL SECT 0 .init_array
19 0x000005a0 0x080495a0 LOCAL SECT 0 .fini_array
20 0x000005a4 0x080495a4 LOCAL SECT 0 .jcr
21 0x000005a8 0x080495a8 LOCAL SECT 0 .dynamic
22 0x00000690 0x08049690 LOCAL SECT 0 .got
23 0x00000694 0x08049694 LOCAL SECT 0 .got.plt
24 0x000006ac 0x080496ac LOCAL SECT 0 .data
25 ---------- 0x080496b4 LOCAL SECT 0 .bss
26 ---------- 0x00000000 LOCAL SECT 0 .comment
27 ---------- 0x00000000 LOCAL FILE 0 init.c
28 ---------- 0x00000000 LOCAL FILE 0
29 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
30 0x000005a4 0x080495a4 LOCAL OBJ 0 __JCR_LIST__
31 0x00000340 0x08048340 LOCAL FUNC 0 deregister_tm_clones
32 0x00000370 0x08048370 LOCAL FUNC 0 register_tm_clones
33 0x000003b0 0x080483b0 LOCAL FUNC 0 __do_global_dtors_aux
34 ---------- 0x080496b4 LOCAL OBJ 1 completed.5979
35 0x000005a0 0x080495a0 LOCAL OBJ 0 __do_global_dtors_aux_fini_array_entry
36 0x000003d0 0x080483d0 LOCAL FUNC 0 frame_dummy
37 0x0000059c 0x0804959c LOCAL OBJ 0 __frame_dummy_init_array_entry
38 ---------- 0x00000000 LOCAL FILE 0 hello.c
39 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
40 0x00000598 0x08048598 LOCAL OBJ 0 __FRAME_END__
41 0x000005a4 0x080495a4 LOCAL OBJ 0 __JCR_END__
42 ---------- 0x00000000 LOCAL FILE 0
43 0x000005a0 0x080495a0 LOCAL NOTYPE 0 __init_array_end
44 0x000005a8 0x080495a8 LOCAL OBJ 0 _DYNAMIC
45 0x0000059c 0x0804959c LOCAL NOTYPE 0 __init_array_start
46 0x00000694 0x08049694 LOCAL OBJ 0 _GLOBAL_OFFSET_TABLE_
47 0x00000490 0x08048490 GLOBAL FUNC 2 __libc_csu_fini
49 0x00000330 0x08048330 GLOBAL FUNC 4 __x86.get_pc_thunk.bx
50 0x000006ac 0x080496ac WEAK NOTYPE 0 data_start
51 ---------- 0x080496b4 GLOBAL NOTYPE 0 _edata
52 0x00000494 0x08048494 GLOBAL FUNC 0 _fini
53 0x000006ac 0x080496ac GLOBAL NOTYPE 0 __data_start
56 0x000006b0 0x080496b0 GLOBAL OBJ 0 __dso_handle
59 0x00000420 0x08048420 GLOBAL FUNC 97 __libc_csu_init
60 ---------- 0x080496b8 GLOBAL NOTYPE 0 _end
61 0x00000300 0x08048300 GLOBAL FUNC 0 _start
62 0x000004a8 0x080484a8 GLOBAL OBJ 4 _fp_hw
63 ---------- 0x080496b4 GLOBAL NOTYPE 0 __bss_start
64 0x00000400 0x08048400 GLOBAL FUNC 28 main
66 ---------- 0x080496b4 GLOBAL OBJ 0 __TMC_END__
68 0x00000290 0x08048290 GLOBAL FUNC 0 _init
1 0x000002d0 0x080482d0 GLOBAL FUNC 16 imp.puts
2 0x000002e0 0x080482e0 WEAK NOTYPE 16 imp.__gmon_start__
3 0x000002f0 0x080482f0 GLOBAL FUNC 16 imp.__libc_start_main
EOF
RUN
NAME=iz (file x86)
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=<<EOF
?e -- default --
iz
?e -- geq 12 --
e bin.minstr=12
iz
?e -- geq 13 --
e bin.minstr=13
iz
?e -- geq 0 --
e bin.minstr=0
iz
?e -- leq 12 --
e bin.maxstr=12
iz
?e -- leq 11 --
e bin.maxstr=11
iz
?e -- no limit --
e bin.maxstr=0
iz
EOF
EXPECT=<<EOF
-- default --
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x000004b0 0x080484b0 12 13 .rodata ascii Hello world!
-- geq 12 --
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x000004b0 0x080484b0 12 13 .rodata ascii Hello world!
-- geq 13 --
[Strings]
nth paddr vaddr len size section type string
--------------------------------------------
-- geq 0 --
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x000004b0 0x080484b0 12 13 .rodata ascii Hello world!
-- leq 12 --
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x000004b0 0x080484b0 12 13 .rodata ascii Hello world!
-- leq 11 --
[Strings]
nth paddr vaddr len size section type string
--------------------------------------------
-- no limit --
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x000004b0 0x080484b0 12 13 .rodata ascii Hello world!
EOF
RUN
NAME=iz (__cfstring)
FILE=bins/mach0/hello-objc-osx
CMDS=<<EOF
?e -- default --
iz
?e -- geq 12 --
e bin.minstr=12
iz
?e -- leq 13 --
e bin.maxstr=12
iz
EOF
EXPECT=<<EOF
-- default --
[Strings]
nth paddr vaddr len size section type string
--------------------------------------------------------------------
0 0x00000d58 0x100000d58 9 10 2.__TEXT.__cstring ascii sayHello:
1 0x00000d62 0x100000d62 4 5 2.__TEXT.__cstring ascii init
2 0x00000d67 0x100000d67 5 6 2.__TEXT.__cstring ascii alloc
3 0x00000d6d 0x100000d6d 5 6 2.__TEXT.__cstring ascii Hahha
4 0x00000d73 0x100000d73 12 13 2.__TEXT.__cstring ascii Hello World
5 0x00000d86 0x100000d86 9 10 2.__TEXT.__cstring ascii callMeNot
6 0x00000d90 0x100000d90 7 8 2.__TEXT.__cstring ascii v16@0:8
7 0x00000d98 0x100000d98 9 10 2.__TEXT.__cstring ascii sayHello2
8 0x00000da2 0x100000da2 10 11 2.__TEXT.__cstring ascii v20@0:8i16
9 0x00000dad 0x100000dad 11 12 2.__TEXT.__cstring ascii sayHello3::
10 0x00000db9 0x100000db9 13 14 2.__TEXT.__cstring ascii v24@0:8i16i20
11 0x00000dc7 0x100000dc7 8 9 2.__TEXT.__cstring ascii sayLong:
12 0x00000dd0 0x100000dd0 10 11 2.__TEXT.__cstring ascii v24@0:8Q16
13 0x00000ddb 0x100000ddb 7 8 2.__TEXT.__cstring ascii @16@0:8
14 0x00000de3 0x100000de3 4 5 2.__TEXT.__cstring ascii Test
3 0x100001058 0x100001058 5 6 ascii cstr.Hahha
4 0x100001078 0x100001078 12 13 ascii cstr.Hello World
-- geq 12 --
[Strings]
nth paddr vaddr len size section type string
--------------------------------------------------------------------
0 0x00000d73 0x100000d73 12 13 2.__TEXT.__cstring ascii Hello World
1 0x00000db9 0x100000db9 13 14 2.__TEXT.__cstring ascii v24@0:8i16i20
0 0x100001078 0x100001078 12 13 ascii cstr.Hello World
-- leq 13 --
[Strings]
nth paddr vaddr len size section type string
--------------------------------------------------------------------
0 0x00000d73 0x100000d73 12 13 2.__TEXT.__cstring ascii Hello World
0 0x100001078 0x100001078 12 13 ascii cstr.Hello World
EOF
RUN
NAME=i (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=i~!hello-linux
EXPECT=<<EOF
fd 3
size 0x1a36
humansz 6.6K
mode r-x
format elf64
iorw false
block 0x100
type EXEC (Executable file)
arch x86
baddr 0x400000
binsz 6710
bintype elf
bits 64
canary false
class ELF64
compiler GCC: (GNU) 4.7.2
crypto false
endian little
havecode true
intrp /lib/ld-linux-x86-64.so.2
laddr 0x0
lang c
linenum true
lsyms true
machine AMD x86-64 architecture
maxopsz 16
minopsz 1
nx true
os linux
pcalign 0
pic false
relocs true
relro no
rpath NONE
sanitiz false
static false
stripped false
subsys linux
va true
EOF
RUN
NAME=iA (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=iA
EXPECT=<<EOF
0 0x00000000 6710 x86_64
EOF
RUN
NAME=ie (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=ie
EXPECT=<<EOF
[Entrypoints]
vaddr=0x00400410 paddr=0x00000410 haddr=0x00000018 hvaddr=0x00400018 type=program
1 entrypoints
EOF
RUN
NAME=iH (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=iH
EXPECT=<<EOF
0x00000000 ELF64 0x464c457f
0x00000010 Type 0x0002
0x00000012 Machine 0x003e
0x00000014 Version 0x00000001
0x00000018 Entrypoint 0x00400410
0x00000020 PhOff 0x00000040
0x00000028 ShOff 0x00000a30
0x00000030 Flags 0x00000000
0x00000034 EhSize 64
0x00000036 PhentSize 56
0x00000038 PhNum 8
0x0000003a ShentSize 64
0x0000003c ShNum 30
0x0000003e ShrStrndx 27
EOF
RUN
NAME=ii (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=ii
EXPECT=<<EOF
[Imports]
nth vaddr bind type lib name
-------------------------------------
1 0x004003e0 GLOBAL FUNC puts
2 0x004003f0 GLOBAL FUNC __libc_start_main
3 0x00400400 WEAK NOTYPE __gmon_start__
EOF
RUN
NAME=iI (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=iI
EXPECT=<<EOF
arch x86
baddr 0x400000
binsz 6710
bintype elf
bits 64
canary false
class ELF64
compiler GCC: (GNU) 4.7.2
crypto false
endian little
havecode true
intrp /lib/ld-linux-x86-64.so.2
laddr 0x0
lang c
linenum true
lsyms true
machine AMD x86-64 architecture
maxopsz 16
minopsz 1
nx true
os linux
pcalign 0
pic false
relocs true
relro no
rpath NONE
sanitiz false
static false
stripped false
subsys linux
va true
EOF
RUN
NAME=iS (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=iS
EXPECT=<<EOF
[Sections]
nth paddr size vaddr vsize perm name type flags
--------------------------------------------------------------------------------
0 0x00000000 0x0 0x00000000 0x0 ---- NULL
1 0x00000200 0x1a 0x00400200 0x1a -r-- .interp PROGBITS alloc
2 0x0000021c 0x20 0x0040021c 0x20 -r-- .note.ABI-tag NOTE alloc
3 0x0000023c 0x24 0x0040023c 0x24 -r-- .note.gnu.build-id NOTE alloc
4 0x00000260 0x1c 0x00400260 0x1c -r-- .gnu.hash GNU_HASH alloc
5 0x00000280 0x60 0x00400280 0x60 -r-- .dynsym DYNSYM alloc
6 0x000002e0 0x3d 0x004002e0 0x3d -r-- .dynstr STRTAB alloc
7 0x0000031e 0x8 0x0040031e 0x8 -r-- .gnu.version VERSYM alloc
8 0x00000328 0x20 0x00400328 0x20 -r-- .gnu.version_r VERNEED alloc
9 0x00000348 0x18 0x00400348 0x18 -r-- .rela.dyn RELA alloc
10 0x00000360 0x48 0x00400360 0x48 -r-- .rela.plt RELA alloc
11 0x000003a8 0x1a 0x004003a8 0x1a -r-x .init PROGBITS alloc,execute
12 0x000003d0 0x40 0x004003d0 0x40 -r-x .plt PROGBITS alloc,execute
13 0x00000410 0x1a4 0x00400410 0x1a4 -r-x .text PROGBITS alloc,execute
14 0x000005b4 0x9 0x004005b4 0x9 -r-x .fini PROGBITS alloc,execute
15 0x000005c0 0x10 0x004005c0 0x10 -r-- .rodata PROGBITS alloc
16 0x000005d0 0x34 0x004005d0 0x34 -r-- .eh_frame_hdr PROGBITS alloc
17 0x00000608 0xd4 0x00400608 0xd4 -r-- .eh_frame PROGBITS alloc
18 0x000006e0 0x8 0x006006e0 0x8 -rw- .init_array INIT_ARRAY write,alloc
19 0x000006e8 0x8 0x006006e8 0x8 -rw- .fini_array FINI_ARRAY write,alloc
20 0x000006f0 0x8 0x006006f0 0x8 -rw- .jcr PROGBITS write,alloc
21 0x000006f8 0x1d0 0x006006f8 0x1d0 -rw- .dynamic DYNAMIC write,alloc
22 0x000008c8 0x8 0x006008c8 0x8 -rw- .got PROGBITS write,alloc
23 0x000008d0 0x30 0x006008d0 0x30 -rw- .got.plt PROGBITS write,alloc
24 0x00000900 0x10 0x00600900 0x10 -rw- .data PROGBITS write,alloc
25 0x00000910 0x0 0x00600910 0x8 -rw- .bss NOBITS write,alloc
26 0x00000910 0x11 0x00000000 0x11 ---- .comment PROGBITS merge,strings
27 0x00000921 0x108 0x00000000 0x108 ---- .shstrtab STRTAB
28 0x000011b0 0x648 0x00000000 0x648 ---- .symtab SYMTAB
29 0x000017f8 0x23e 0x00000000 0x23e ---- .strtab STRTAB
EOF
RUN
NAME=iSS (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=iSS
EXPECT=<<EOF
[Segments]
nth paddr size vaddr vsize perm name
-------------------------------------------------
0 0x00000040 0x1c0 0x00400040 0x1c0 -r-x PHDR
1 0x00000200 0x1a 0x00400200 0x1a -r-- INTERP
2 0x00000000 0x6dc 0x00400000 0x6dc -r-x LOAD0
3 0x000006e0 0x230 0x006006e0 0x238 -rw- LOAD1
4 0x000006f8 0x1d0 0x006006f8 0x1d0 -rw- DYNAMIC
5 0x0000021c 0x44 0x0040021c 0x44 -r-- NOTE
6 0x000005d0 0x34 0x004005d0 0x34 -r-- GNU_EH_FRAME
7 0x00000000 0x0 0x00000000 0x0 -rw- GNU_STACK
8 0x00000000 0x40 0x00400000 0x40 -rw- ehdr
EOF
RUN
NAME=il (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=il
EXPECT=<<EOF
[Linked libraries]
libc.so.6
1 library
EOF
RUN
NAME=ir (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=ir
EXPECT=<<EOF
[Relocations]
vaddr paddr type name
---------------------------------
0x006008c8 0x000008c8 SET_64 __gmon_start__
0x006008e8 0x000008e8 SET_64 puts
0x006008f0 0x000008f0 SET_64 __libc_start_main
0x006008f8 0x000008f8 SET_64 __gmon_start__
4 relocations
EOF
RUN
NAME=ir (file x86_64, ifunc)
FILE=bins/elf/ifunc_rel64
CMDS=ir
EXPECT=<<EOF
[Relocations]
vaddr paddr type name
---------------------------------
0x006b17d0 0x000b17d0 SET_64 ifunc_416530 0x00416530 (ifunc)
0x006b17d8 0x000b17d8 SET_64 ifunc_4193a0 0x004193a0 (ifunc)
0x006b17e0 0x000b17e0 SET_64 ifunc_4199b0 0x004199b0 (ifunc)
0x006b17e8 0x000b17e8 SET_64 ifunc_418a50 0x00418a50 (ifunc)
0x006b17f0 0x000b17f0 SET_64 ifunc_418de0 0x00418de0 (ifunc)
0x006b17f8 0x000b17f8 SET_64 ifunc_419ad0 0x00419ad0 (ifunc)
0x006b1800 0x000b1800 SET_64 ifunc_4193f0 0x004193f0 (ifunc)
0x006b1808 0x000b1808 SET_64 ifunc_414300 0x00414300 (ifunc)
0x006b1810 0x000b1810 SET_64 ifunc_479800 0x00479800 (ifunc)
0x006b1818 0x000b1818 SET_64 ifunc_4140b0 0x004140b0 (ifunc)
10 relocations
EOF
RUN
NAME=is (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=is
EXPECT=<<EOF
[Symbols]
nth paddr vaddr bind type size lib name
-----------------------------------------------------
1 0x00000200 0x00400200 LOCAL SECT 0 .interp
2 0x0000021c 0x0040021c LOCAL SECT 0 .note.ABI-tag
3 0x0000023c 0x0040023c LOCAL SECT 0 .note.gnu.build-id
4 0x00000260 0x00400260 LOCAL SECT 0 .gnu.hash
5 0x00000280 0x00400280 LOCAL SECT 0 .dynsym
6 0x000002e0 0x004002e0 LOCAL SECT 0 .dynstr
7 0x0000031e 0x0040031e LOCAL SECT 0 .gnu.version
8 0x00000328 0x00400328 LOCAL SECT 0 .gnu.version_r
9 0x00000348 0x00400348 LOCAL SECT 0 .rela.dyn
10 0x00000360 0x00400360 LOCAL SECT 0 .rela.plt
11 0x000003a8 0x004003a8 LOCAL SECT 0 .init
12 0x000003d0 0x004003d0 LOCAL SECT 0 .plt
13 0x00000410 0x00400410 LOCAL SECT 0 .text
14 0x000005b4 0x004005b4 LOCAL SECT 0 .fini
15 0x000005c0 0x004005c0 LOCAL SECT 0 .rodata
16 0x000005d0 0x004005d0 LOCAL SECT 0 .eh_frame_hdr
17 0x00000608 0x00400608 LOCAL SECT 0 .eh_frame
18 0x000006e0 0x006006e0 LOCAL SECT 0 .init_array
19 0x000006e8 0x006006e8 LOCAL SECT 0 .fini_array
20 0x000006f0 0x006006f0 LOCAL SECT 0 .jcr
21 0x000006f8 0x006006f8 LOCAL SECT 0 .dynamic
22 0x000008c8 0x006008c8 LOCAL SECT 0 .got
23 0x000008d0 0x006008d0 LOCAL SECT 0 .got.plt
24 0x00000900 0x00600900 LOCAL SECT 0 .data
25 ---------- 0x00600910 LOCAL SECT 0 .bss
26 ---------- 0x00000000 LOCAL SECT 0 .comment
27 ---------- 0x00000000 LOCAL FILE 0 init.c
28 ---------- 0x00000000 LOCAL FILE 0
29 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
30 0x000006f0 0x006006f0 LOCAL OBJ 0 __JCR_LIST__
31 0x00000440 0x00400440 LOCAL FUNC 0 deregister_tm_clones
32 0x00000470 0x00400470 LOCAL FUNC 0 register_tm_clones
33 0x000004b0 0x004004b0 LOCAL FUNC 0 __do_global_dtors_aux
34 ---------- 0x00600910 LOCAL OBJ 1 completed.6724
35 0x000006e8 0x006006e8 LOCAL OBJ 0 __do_global_dtors_aux_fini_array_entry
36 0x000004d0 0x004004d0 LOCAL FUNC 0 frame_dummy
37 0x000006e0 0x006006e0 LOCAL OBJ 0 __frame_dummy_init_array_entry
38 ---------- 0x00000000 LOCAL FILE 0 hello.c
39 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
40 0x000006d8 0x004006d8 LOCAL OBJ 0 __FRAME_END__
41 0x000006f0 0x006006f0 LOCAL OBJ 0 __JCR_END__
42 ---------- 0x00000000 LOCAL FILE 0
43 0x000006e8 0x006006e8 LOCAL NOTYPE 0 __init_array_end
44 0x000006f8 0x006006f8 LOCAL OBJ 0 _DYNAMIC
45 0x000006e0 0x006006e0 LOCAL NOTYPE 0 __init_array_start
46 0x000008d0 0x006008d0 LOCAL OBJ 0 _GLOBAL_OFFSET_TABLE_
47 0x000005b0 0x004005b0 GLOBAL FUNC 2 __libc_csu_fini
49 0x00000900 0x00600900 WEAK NOTYPE 0 data_start
51 ---------- 0x00600910 GLOBAL NOTYPE 0 _edata
52 0x000005b4 0x004005b4 GLOBAL FUNC 0 _fini
54 0x00000900 0x00600900 GLOBAL NOTYPE 0 __data_start
56 0x00000908 0x00600908 GLOBAL OBJ 0 __dso_handle
57 0x000005c0 0x004005c0 GLOBAL OBJ 4 _IO_stdin_used
58 0x00000520 0x00400520 GLOBAL FUNC 137 __libc_csu_init
59 ---------- 0x00600918 GLOBAL NOTYPE 0 _end
60 0x00000410 0x00400410 GLOBAL FUNC 0 _start
61 ---------- 0x00600910 GLOBAL NOTYPE 0 __bss_start
62 0x000004fc 0x004004fc GLOBAL FUNC 21 main
64 ---------- 0x00600910 GLOBAL OBJ 0 __TMC_END__
66 0x000003a8 0x004003a8 GLOBAL FUNC 0 _init
1 0x000003e0 0x004003e0 GLOBAL FUNC 16 imp.puts
2 0x000003f0 0x004003f0 GLOBAL FUNC 16 imp.__libc_start_main
3 0x00000400 0x00400400 WEAK NOTYPE 16 imp.__gmon_start__
EOF
RUN
NAME=iz (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=iz
EXPECT=<<EOF
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x000005c4 0x004005c4 11 12 .rodata ascii Hello World
EOF
RUN
NAME=izq (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=izq
EXPECT=<<EOF
0x4005c4 12 11 Hello World
EOF
RUN
NAME=izqq (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=izqq
EXPECT=<<EOF
Hello World
EOF
RUN
NAME=izzq (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=izzq~puts
EXPECT=<<EOF
0x4002fa 5 4 puts
0x15b 18 17 puts@@GLIBC_2.2.5
EOF
RUN
NAME=izzqq (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=izzqq~puts
EXPECT=<<EOF
puts
puts@@GLIBC_2.2.5
EOF
RUN
NAME=izzqq malloc://512
FILE=malloc://512
CMDS=<<EOF
wx 6a0b58995266682d6389e7682f736800682f62696e89e352e8390000006563686f202222203e202f6574632f736861646f77203b206563686f202222203e202f6574632f706173737764203b20726d202d5266202f00575389e1cd80
izzqq
EOF
EXPECT=<<EOF
Rfh-c
h/sh
h/bin
echo "" > /etc/shadow ; echo "" > /etc/passwd ; rm -Rf /
EOF
RUN
NAME=izzz (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=izzz~?
EXPECT=<<EOF
82
EOF
RUN
NAME=izzzq (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=izzzq~puts
EXPECT=<<EOF
0x004002fa puts
0x0000015b puts@@GLIBC_2.2.5
EOF
RUN
NAME=izzz* (file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=<<EOF
izzz*~:0
izzz*~:1
EOF
EXPECT=<<EOF
f str.8 10 @ 0x00000034
Cs 10 @ 0x00000034
EOF
RUN
NAME=izz (no rbin - file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
ARGS=-n
CMDS=izz~puts
EXPECT=<<EOF
4 0x000002fa 0x000002fa 4 5 ascii puts
65 0x00001953 0x00001953 17 18 ascii puts@@GLIBC_2.2.5
EOF
RUN
NAME=izzj (no rbin - file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
ARGS=-n
CMDS=<<EOF
e bin.str.purge=all,!0x2fa,!0x1953
izzj
EOF
EXPECT=<<EOF
[{"vaddr":762,"paddr":762,"ordinal":4,"size":5,"length":4,"section":"","type":"ascii","string":"puts"},{"vaddr":6483,"paddr":6483,"ordinal":65,"size":18,"length":17,"section":"","type":"ascii","string":"puts@@GLIBC_2.2.5"}]
EOF
RUN
NAME=izzj 2 (no rbin - file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=<<EOF
e bin.str.purge=all,!0x4002fa,!0x15b
izzj
EOF
EXPECT=<<EOF
[{"vaddr":4195066,"paddr":762,"ordinal":4,"size":5,"length":4,"section":".dynstr","type":"ascii","string":"puts"},{"vaddr":347,"paddr":6483,"ordinal":65,"size":18,"length":17,"section":".strtab","type":"ascii","string":"puts@@GLIBC_2.2.5"}]
EOF
RUN
NAME=izzzj
FILE==
CMDS=<<EOF
w abcd\00012345\0efghi\0
izzzj
EOF
EXPECT=<<EOF
[{"vaddr":0,"paddr":0,"ordinal":0,"size":5,"length":4,"section":"","type":"ascii","string":"abcd"},{"vaddr":5,"paddr":5,"ordinal":1,"size":6,"length":5,"section":"","type":"ascii","string":"12345"},{"vaddr":11,"paddr":11,"ordinal":2,"size":6,"length":5,"section":"","type":"ascii","string":"efghi"}]
EOF
RUN
NAME=i (no rbin - file x86_64)
FILE=bins/elf/analysis/hello-linux-x86_64
ARGS=-n
CMDS=i~!file
EXPECT=<<EOF
fd 3
size 0x1a36
humansz 6.6K
mode r-x
iorw false
block 0x100
EOF
RUN
NAME=iM command
FILE=bins/elf/redpill
CMDS=iM
EXPECT=<<EOF
[Main]
vaddr=0x0000142e paddr=0x0000142e
EOF
RUN
NAME=iM* command
FILE=bins/elf/redpill
CMDS=iM*
EXPECT=<<EOF
fs symbols
f main @ 0x0000142e
EOF
RUN
NAME=iz utf16le
BROKEN=1
FILE=bins/elf/strenc
CMDS=<<EOF
e str.escbslash=true
iz~green
iz~wall
EOF
EXPECT=<<EOF
005 0x00002248 0x00402248 57 118 (.rodata) utf16le \nutf16le> \\u00a2\\u20ac\\U00010348 in green:\e[32m ¢€𐍈 \e[0m\n blocks=Basic Latin,Latin-1 Supplement,Currency Symbols,Gothic
007 0x000022c8 0x004022c8 33 68 (.rodata) utf16le is a wall with no embedded zeros\n
EOF
RUN
NAME=iz/izz utf32le
FILE=bins/elf/strenc
CMDS=<<EOF
e str.escbslash=true
iz~cyan
iz~Mountain
izz~Linux_wide
EOF
EXPECT=<<EOF
17 0x0000258c 0x0040258c 55 224 .rodata utf32le utf32le> \\u00a2\\u20ac\\U00010348 in cyan:\e[36m ¢€𐍈 \e[0m\n blocks=Basic Latin,Latin-1 Supplement,Currency Symbols,Gothic
18 0x0000266c 0x0040266c 48 196 .rodata utf32le Mountain range with embedded quad zeros: 𐌀A𐌀A𐌀A\n blocks=Basic Latin,Old Italic
136 0x00002528 0x00402528 24 100 .rodata utf32le \tLinux_wide\\esc: \e[0m¡\r\n blocks=Basic Latin,Latin-1 Supplement
EOF
RUN
NAME=str.escbslash and iz
FILE=bins/elf/strenc
CMDS=<<EOF
e str.escbslash=true
iz~Linux_wide
e str.escbslash=false
iz~Linux_wide
EOF
EXPECT=<<EOF
16 0x00002528 0x00402528 24 100 .rodata utf32le \tLinux_wide\\esc: \e[0m¡\r\n blocks=Basic Latin,Latin-1 Supplement
16 0x00002528 0x00402528 24 100 .rodata utf32le \tLinux_wide\esc: \e[0m¡\r\n blocks=Basic Latin,Latin-1 Supplement
EOF
RUN
NAME=iz utf32le partial
FILE=bins/elf/strenc-guess-utf32le
CMDS=<<EOF
iz~ABCDEF
iz~abcdef
iz~123456
EOF
EXPECT=<<EOF
1 0x0000060c 0x0040060c 6 28 .rodata utf32le ABCDEF
2 0x00000650 0x00400650 10 44 .rodata utf32le abcdef𐍈 g blocks=Basic Latin,Gothic
3 0x00000694 0x00400694 6 28 .rodata utf32le 123456
EOF
RUN
NAME=izz escaping backslash
FILE==
CMDS=<<EOF
wz QUVWXWYZ[\\]^_R
px 16
?e
e str.escbslash=false # default
izz
?e
e str.escbslash=true
izz
EOF
EXPECT=<<EOF
- offset - 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
0x00000000 5155 5657 5857 595a 5b5c 5d5e 5f52 0000 QUVWXWYZ[\]^_R..
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x00000000 0x00000000 14 15 ascii QUVWXWYZ[\]^_R
[Strings]
nth paddr vaddr len size section type string
-------------------------------------------------------
0 0x00000000 0x00000000 14 15 ascii QUVWXWYZ[\\]^_R
EOF
RUN
NAME=izz and bin.str.enc
FILE==
CMDS=<<EOF
wz k\0i\0abcdefgh
(izzenc enc; e bin.str.enc=$0; izz~:3..)
.(izzenc guess)
.(izzenc ascii)
.(izzenc utf8)
.(izzenc utf16le)
?e
wx 00250025002500250000
.(izzenc guess)
.(izzenc utf16le)
?e
wx 26252625262526250000
.(izzenc guess)
.(izzenc utf16le)
EOF
EXPECT=<<EOF
0 0x00000004 0x00000004 8 9 ascii abcdefgh
0 0x00000004 0x00000004 8 9 ascii abcdefgh
0 0x00000004 0x00000004 8 9 ascii abcdefgh
0 0x00000000 0x00000000 6 14 utf16le ki扡摣晥桧 blocks=Basic Latin,CJK Unified Ideographs
0 0x00000001 0x00000001 4 9 utf16le %%%%
0 0x00000000 0x00000000 4 10 utf16le ──── blocks=Box Drawing
0 0x00000000 0x00000000 8 9 ascii &%&%&%&%
0 0x00000000 0x00000000 4 10 utf16le ┦┦┦┦ blocks=Box Drawing
EOF
RUN
NAME=bin.str.enc string reset
FILE=--
CMDS=<<EOF
mkdir .tmp
cp bins/elf/analysis/x86-helloworld-gcc .tmp/strenc-bin
o+ .tmp/strenc-bin
iz~:3..
s 0x080484b0
wz k\0i\0abcdefgh
(izenc enc; e bin.str.enc=$0; iz~:3..)
.(izenc guess)
.(izenc utf8)
.(izenc utf16le)
o-*
rm .tmp/strenc-bin
EOF
EXPECT=<<EOF
0 0x000004b0 0x080484b0 12 13 .rodata ascii Hello world!
0 0x000004b4 0x080484b4 8 9 .rodata ascii abcdefgh
0 0x000004b4 0x080484b4 8 9 .rodata ascii abcdefgh
0 0x000004b0 0x080484b0 6 13 .rodata utf16le ki扡摣晥桧 blocks=Basic Latin,CJK Unified Ideographs
EOF
RUN
NAME=ik-relro
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ik info/elf.relro
EXPECT=<<EOF
no
EOF
RUN
NAME=ibk use after free
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ibk info/*~?elf.relro
EXPECT=<<EOF
1
EOF
RUN
NAME=i on freebsd elf
FILE=bins/elf/analysis/hello-freebsd-x86_64
CMDS=i~os
EXPECT=<<EOF
os freebsd
EOF
RUN
NAME=i on openbsd elf
FILE=bins/elf/analysis/hello-openbsd-x86_64
CMDS=i~os
EXPECT=<<EOF
os openbsd
EOF
RUN
NAME=i on netbsd elf
FILE=bins/elf/analysis/hello-netbsd-x86_64
CMDS=i~os
EXPECT=<<EOF
os netbsd
EOF
RUN
NAME=i on hp-ux elf (os)
FILE=bins/elf/analysis/hello-hpux-ia64
CMDS=i~os
EXPECT=<<EOF
os hpux
EOF
RUN
NAME=i on hp-ux elf (arch)
FILE=bins/elf/analysis/hello-hpux-ia64
CMDS=i~arch
EXPECT=<<EOF
arch ia64
EOF
RUN
NAME=izj unicode blocks
FILE=bins/elf/strenc
CMDS=<<EOF
e bin.str.purge=all,!4202996,!4203007,!4203208
izj
EOF
EXPECT=<<EOF
[{"vaddr":4202996,"paddr":8692,"ordinal":2,"size":11,"length":10,"section":".rodata","type":"ascii","string":"en_US.utf8"},{"vaddr":4203007,"paddr":8703,"ordinal":3,"size":61,"length":54,"section":".rodata","type":"utf8","string":"utf8> \\\\u00a2\\\\u20ac\\\\U00010348 in yellow:\\e[33m ¢€𐍈 \\e[0m\\n","blocks":["Basic Latin","Latin-1 Supplement","Currency Symbols","Gothic"]},{"vaddr":4203208,"paddr":8904,"ordinal":8,"size":68,"length":33,"section":".rodata","type":"utf16le","string":"is a wall with no embedded zeros\\n"}]
EOF
RUN
NAME=izzj unicode blocks
FILE=bins/elf/strenc-guess-utf32le
CMDS=<<EOF
e bin.str.purge=all,!4195920
izzj
EOF
EXPECT=<<EOF
[{"vaddr":4195920,"paddr":1616,"ordinal":13,"size":44,"length":10,"section":".rodata","type":"utf32le","string":"abcdef𐍈 g","blocks":["Basic Latin","Gothic"]}]
EOF
RUN
NAME=iz/izz bin.str.purge
FILE=bins/elf/analysis/ls2
CMDS=<<EOF
?e --1--
e bin.str.purge=false
izz~0x00412420
?e --2--
e bin.str.purge=true
izz~0x00412420 # Should print nothing
?e --3--
(test_iz;iz~0x004131d8;iz~0x00413228;iz~0x00413233;iz~0x0041323a)
e bin.str.purge=false
.(test_iz)
?e --4--
e bin.str.purge=true
.(test_iz)
?e --5--
e bin.str.purge=0x004131d8,0x00413228,0x0041323a
.(test_iz)
?e --6--
e bin.str.purge=true,0x00413228
.(test_iz)
?e --7--
e bin.str.purge=0x4131d8-0x413233
.(test_iz)
?e --8--
e bin.str.purge=0x413230-0x413240,0x4131d8
.(test_iz)
?e --9--
e bin.str.purge=true,0x413228-0x413228
.(test_iz)
?e --10--
e bin.str.purge=0x413100-0x413300,!0x413233
.(test_iz)
?e --11--
e bin.str.purge=true,!0x41323a
.(test_iz)
?e --12--
e bin.str.purge=true,!0x41323a,0x41323a
.(test_iz)
?e --13--
e bin.str.purge=true,0x4131d8,!0x4131d8
.(test_iz)
?e --14--
e bin.str.purge=all,!0x413220-0x413235
.(test_iz)
EOF
EXPECT=<<EOF
--1--
1055 0x00012420 0x00412420 5 6 .text ascii AWAVA
--2--
--3--
0 0x000131d8 0x004131d8 11 12 .rodata ascii dev_ino_pop
1 0x00013228 0x00413228 10 11 .rodata ascii sort_files
2 0x00013233 0x00413233 6 7 .rodata ascii posix-
3 0x0001323a 0x0041323a 4 5 .rodata ascii main
--4--
0 0x000131d8 0x004131d8 11 12 .rodata ascii dev_ino_pop
1 0x00013228 0x00413228 10 11 .rodata ascii sort_files
--5--
2 0x00013233 0x00413233 6 7 .rodata ascii posix-
--6--
0 0x000131d8 0x004131d8 11 12 .rodata ascii dev_ino_pop
--7--
3 0x0001323a 0x0041323a 4 5 .rodata ascii main
--8--
1 0x00013228 0x00413228 10 11 .rodata ascii sort_files
--9--
0 0x000131d8 0x004131d8 11 12 .rodata ascii dev_ino_pop
--10--
2 0x00013233 0x00413233 6 7 .rodata ascii posix-
--11--
0 0x000131d8 0x004131d8 11 12 .rodata ascii dev_ino_pop
1 0x00013228 0x00413228 10 11 .rodata ascii sort_files
3 0x0001323a 0x0041323a 4 5 .rodata ascii main
--12--
0 0x000131d8 0x004131d8 11 12 .rodata ascii dev_ino_pop
1 0x00013228 0x00413228 10 11 .rodata ascii sort_files
--13--
0 0x000131d8 0x004131d8 11 12 .rodata ascii dev_ino_pop
1 0x00013228 0x00413228 10 11 .rodata ascii sort_files
--14--
1 0x00013228 0x00413228 10 11 .rodata ascii sort_files
2 0x00013233 0x00413233 6 7 .rodata ascii posix-
EOF
RUN
NAME=iz-
FILE==
CMDS=<<EOF
iz- @ 0x412420
e bin.str.purge
iz- @ 0x4028a0
e bin.str.purge
iz- 0x414fbf
e bin.str.purge
EOF
EXPECT=<<EOF
0x412420
0x412420,0x4028a0
0x412420,0x4028a0,0x414fbf
EOF
RUN
NAME=regression for #9370
FILE=bins/elf/analysis/hello-arm32
ARGS=-m 0x10000
CMDS=izz~Hello
EXPECT=<<EOF
6 0x00000200 0x00010200 11 12 .rodata ascii Hello World
EOF
RUN
NAME=iee preinit
FILE=bins/elf/before-after-main
CMDS=<<EOF
iee~type=preinit
e asm.bytes=false
pd 1 @ 0x0804849f
EOF
EXPECT=<<EOF
vaddr=0x08048486 paddr=0x00000486 hvaddr=0x08049ed4 hpaddr=0x00000ed4 type=preinit
vaddr=0x0804849f paddr=0x0000049f hvaddr=0x08049ed8 hpaddr=0x00000ed8 type=preinit
;-- entry.preinit1:
;-- preinit2:
0x0804849f push ebp
EOF
RUN
NAME=iee* preinit
FILE=bins/elf/before-after-main
CMDS=iee*
EXPECT=<<EOF
fs symbols
"f entry.preinit0 1 0x08048486"
"f entry.preinit0_hpaddr 1 0x00000ed4"
"s entry.preinit0"
"f entry.preinit1 1 0x0804849f"
"f entry.preinit1_hpaddr 1 0x00000ed8"
"s entry.preinit1"
"f entry.init0 1 0x08048480"
"f entry.init0_hpaddr 1 0x00000edc"
"s entry.init0"
"f entry.init1 1 0x080484b8"
"f entry.init1_hpaddr 1 0x00000ee0"
"s entry.init1"
"f entry.init2 1 0x080484d1"
"f entry.init2_hpaddr 1 0x00000ee4"
"s entry.init2"
"f entry.init3 1 0x080484ea"
"f entry.init3_hpaddr 1 0x00000ee8"
"s entry.init3"
"f entry.init4 1 0x08048503"
"f entry.init4_hpaddr 1 0x00000eec"
"s entry.init4"
"f entry.fini0 1 0x08048450"
"f entry.fini0_hpaddr 1 0x00000ef0"
"s entry.fini0"
"f entry.fini1 1 0x0804859c"
"f entry.fini1_hpaddr 1 0x00000ef4"
"s entry.fini1"
"f entry.fini2 1 0x080485b5"
"f entry.fini2_hpaddr 1 0x00000ef8"
"s entry.fini2"
"f entry.fini3 1 0x080485ce"
"f entry.fini3_hpaddr 1 0x00000efc"
"s entry.fini3"
"f entry.fini4 1 0x080485e7"
"f entry.fini4_hpaddr 1 0x00000f00"
"s entry.fini4"
EOF
RUN
NAME=iS entropy and iSS entropy
FILE=bins/elf/crackme0x05
CMDS=iS entropy; iSS entropy
EXPECT=<<EOF
[Sections]
nth paddr size vaddr vsize perm entropy name type flags
-------------------------------------------------------------------------------------
0 0x00000000 0x0 0x00000000 0x0 ---- 0.00000000 NULL
1 0x00000154 0x13 0x08048154 0x13 -r-- 3.68188080 .interp PROGBITS alloc
2 0x00000168 0x20 0x08048168 0x20 -r-- 1.74868984 .note.ABI-tag NOTE alloc
3 0x00000188 0x38 0x08048188 0x38 -r-- 1.23442903 .hash HASH alloc
4 0x000001c0 0x20 0x080481c0 0x20 -r-- 1.99254169 .gnu.hash GNU_HASH alloc
5 0x000001e0 0x90 0x080481e0 0x90 -r-- 1.56755604 .dynsym DYNSYM alloc
6 0x00000270 0x5f 0x08048270 0x5f -r-- 4.38707564 .dynstr STRTAB alloc
7 0x000002d0 0x12 0x080482d0 0x12 -r-- 1.19417373 .gnu.version VERSYM alloc
8 0x000002e4 0x20 0x080482e4 0x20 -r-- 1.66055053 .gnu.version_r VERNEED alloc
9 0x00000304 0x8 0x08048304 0x8 -r-- 2.75000000 .rel.dyn REL alloc
10 0x0000030c 0x30 0x0804830c 0x30 -r-- 2.94082791 .rel.plt REL alloc
11 0x0000033c 0x17 0x0804833c 0x17 -r-x 3.46241535 .init PROGBITS alloc,execute
12 0x00000354 0x70 0x08048354 0x70 -r-x 3.51876869 .plt PROGBITS alloc,execute
13 0x000003d0 0x274 0x080483d0 0x274 -r-x 5.76534324 .text PROGBITS alloc,execute
14 0x00000644 0x1a 0x08048644 0x1a -r-x 3.79621760 .fini PROGBITS alloc,execute
15 0x00000660 0x55 0x08048660 0x55 -r-- 4.59175306 .rodata PROGBITS alloc
16 0x000006b8 0x4 0x080486b8 0x4 -r-- 0.00000000 .eh_frame PROGBITS alloc
17 0x00000f0c 0x8 0x08049f0c 0x8 -rw- 1.00000000 .ctors PROGBITS write,alloc
18 0x00000f14 0x8 0x08049f14 0x8 -rw- 1.00000000 .dtors PROGBITS write,alloc
19 0x00000f1c 0x4 0x08049f1c 0x4 -rw- 0.00000000 .jcr PROGBITS write,alloc
20 0x00000f20 0xd0 0x08049f20 0xd0 -rw- 2.82161069 .dynamic DYNAMIC write,alloc
21 0x00000ff0 0x4 0x08049ff0 0x4 -rw- 0.00000000 .got PROGBITS write,alloc
22 0x00000ff4 0x24 0x08049ff4 0x24 -rw- 2.98068211 .got.plt PROGBITS write,alloc
23 0x00001018 0xc 0x0804a018 0xc -rw- 1.58496250 .data PROGBITS write,alloc
24 0x00001024 0x0 0x0804a024 0x4 -rw- 0.00000000 .bss NOBITS write,alloc
25 0x00001024 0x1b9 0x00000000 0x1b9 ---- 4.50015849 .comment PROGBITS
26 0x000011dd 0xdb 0x00000000 0xdb ---- 4.21638420 .shstrtab STRTAB
27 0x00001740 0x460 0x00000000 0x460 ---- 3.06854806 .symtab SYMTAB
28 0x00001ba0 0x248 0x00000000 0x248 ---- 4.85613827 .strtab STRTAB
[Segments]
nth paddr size vaddr vsize perm entropy name
------------------------------------------------------------
0 0x00000034 0x120 0x08048034 0x120 -r-x 2.77947373 PHDR
1 0x00000154 0x13 0x08048154 0x13 -r-- 3.68188080 INTERP
2 0x00000000 0x6bc 0x08048000 0x6bc -r-x 5.13144413 LOAD0
3 0x00000f0c 0x118 0x08049f0c 0x11c -rw- 2.96573278 LOAD1
4 0x00000f20 0xd0 0x08049f20 0xd0 -rw- 2.82161069 DYNAMIC
5 0x00000168 0x20 0x08048168 0x20 -r-- 1.74868984 NOTE
6 0x00000000 0x0 0x00000000 0x0 -rw- 0.00000000 GNU_STACK
7 0x00000f0c 0xf4 0x08049f0c 0xf4 -r-- 2.71815661 GNU_RELRO
8 0x00000000 0x0 0x00000000 0x0 ---- 0.00000000 NONE
9 0x00000000 0x34 0x08048000 0x34 -rw- 2.79887339 ehdr
EOF
RUN
NAME=is sht null
FILE=bins/elf/sht_null_symbols
CMDS=is; ir; f
EXPECT=<<EOF
[Symbols]
nth paddr vaddr bind type size lib name
-----------------------------------------------------
8 0x00000590 0x00000590 GLOBAL FUNC 60 main
9 0x0000064c 0x0000064c GLOBAL OBJ 4 _IO_stdin_used
1 0x00000000 0x00000000 WEAK NOTYPE 16 imp._ITM_deregisterTMCloneTable
2 0x00000000 0x00000000 WEAK FUNC 16 imp.__cxa_finalize
3 0x000003f0 0x000003f0 GLOBAL FUNC 16 imp.puts
4 0x00000000 0x00000000 WEAK NOTYPE 16 imp.__gmon_start__
5 0x00000400 0x00000400 GLOBAL FUNC 16 imp.__libc_start_main
6 0x00000000 0x00000000 WEAK NOTYPE 16 imp._Jv_RegisterClasses
7 0x00000000 0x00000000 WEAK NOTYPE 16 imp._ITM_registerTMCloneTable
[Relocations]
vaddr paddr type name
---------------------------------
0x00001eec 0x00000eec SET_32
0x00001ef0 0x00000ef0 SET_32
0x00001fe8 0x00000fe8 SET_32 _ITM_deregisterTMCloneTable
0x00001fec 0x00000fec SET_32 __cxa_finalize
0x00001ff0 0x00000ff0 SET_32 __gmon_start__
0x00001ff4 0x00000ff4 SET_32
0x00001ff8 0x00000ff8 SET_32 _Jv_RegisterClasses
0x00001ffc 0x00000ffc SET_32 _ITM_registerTMCloneTable
0x0000200c 0x0000100c SET_32 puts
0x00002010 0x00001010 SET_32 __libc_start_main
0x00002018 0x00001018 SET_32
11 relocations
0x00000000 1936 segment.LOAD0
0x00000000 0 segment.GNU_STACK
0x00000000 52 segment.ehdr
0x00000000 16 loc.imp._ITM_deregisterTMCloneTable
0x00000000 16 sym.imp.__cxa_finalize
0x00000000 16 loc.imp.__gmon_start
0x00000000 16 loc.imp._Jv_RegisterClasses
0x00000000 16 loc.imp._ITM_registerTMCloneTable
0x00000034 288 segment.PHDR
0x00000154 19 segment.INTERP
0x00000168 68 segment.NOTE
0x00000364 72 section..rel.dyn
0x000003ac 16 section..rela.plt
0x000003f0 16 sym.imp.puts
0x00000400 16 sym.imp.__libc_start_main
0x00000420 1 entry0
0x00000590 256 main
0x00000590 60 sym.main
0x0000064c 4 obj._IO_stdin_used
0x00000658 60 segment.GNU_EH_FRAME
0x00001eec 308 segment.LOAD1
0x00001eec 276 segment.GNU_RELRO
0x00001ef8 240 segment.DYNAMIC
0x00001fe8 4 reloc._ITM_deregisterTMCloneTable
0x00001fec 4 reloc.__cxa_finalize
0x00001ff0 4 reloc.__gmon_start
0x00001ff8 4 reloc._Jv_RegisterClasses
0x00001ffc 4 reloc._ITM_registerTMCloneTable
0x00002000 16 section..got.plt
0x0000200c 4 reloc.puts
0x00002010 4 reloc.__libc_start_main
EOF
RUN
NAME=ieej
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ieej
EXPECT=<<EOF
[{"vaddr":134513616,"paddr":976,"baddr":134512640,"laddr":0,"hvaddr":134518172,"hpaddr":1436,"type":"init"},{"vaddr":134513584,"paddr":944,"baddr":134512640,"laddr":0,"hvaddr":134518176,"hpaddr":1440,"type":"fini"}]
EOF
RUN
NAME=ieeej
FILE=bins/elf/analysis/x86-helloworld-gcc
CMDS=ieeej~{}
EXPECT=<<EOF
{
"initfini": [
{
"vaddr": 134513616,
"paddr": 976,
"baddr": 134512640,
"laddr": 0,
"hvaddr": 134518172,
"hpaddr": 1436,
"type": "init"
},
{
"vaddr": 134513584,
"paddr": 944,
"baddr": 134512640,
"laddr": 0,
"hvaddr": 134518176,
"hpaddr": 1440,
"type": "fini"
}
],
"entries": [
{
"vaddr": 134513408,
"paddr": 768,
"baddr": 134512640,
"laddr": 0,
"hvaddr": 134512664,
"haddr": 24,
"type": "program"
}
]
}
EOF
RUN
NAME=iee elf Cd (32-bit)
FILE=bins/elf/before-after-main
CMDS=<<EOF
pD $SS @ section..preinit_array
?e
pD $SS @ section..init_array
?e
pD $SS @ section..fini_array
EOF
EXPECT=<<EOF
;-- section..preinit_array:
;-- segment.LOAD1:
;-- segment.GNU_RELRO:
;-- .preinit_array:
;-- __preinit:
0x08049ed4 .dword 0x08048486 ; entry.preinit0 ; sym.preinit ; [18] -rw- section size 8 named .preinit_array
;-- __preinit2:
0x08049ed8 .dword 0x0804849f ; entry.preinit1 ; sym.preinit2
;-- section..init_array:
;-- .init_array:
;-- __frame_dummy_init_array_entry:
;-- __init_array_start:
0x08049edc .dword 0x08048480 ; entry.init0 ; sym.frame_dummy ; [19] -rw- section size 20 named .init_array
0x08049ee0 .dword 0x080484b8 ; entry.init1 ; sym.constructor
;-- __init:
0x08049ee4 .dword 0x080484d1 ; entry.init2 ; sym.init
;-- __init2:
0x08049ee8 .dword 0x080484ea ; entry.init3 ; sym.init2
0x08049eec .dword 0x08048503 ; entry.init4 ; sym.constructor2
;-- section..fini_array:
;-- .fini_array:
;-- __do_global_dtors_aux_fini_array_entry:
;-- __init_array_end:
0x08049ef0 .dword 0x08048450 ; entry.fini0 ; sym.__do_global_dtors_aux ; [20] -rw- section size 20 named .fini_array
0x08049ef4 .dword 0x0804859c ; entry.fini1 ; sym.destructor2
;-- __fini2:
0x08049ef8 .dword 0x080485b5 ; entry.fini2 ; sym.fini2
;-- __fini:
0x08049efc .dword 0x080485ce ; entry.fini3 ; sym.fini
0x08049f00 .dword 0x080485e7 ; entry.fini4 ; sym.destructor
EOF
RUN
NAME=iee elf Cd (64-bit)
FILE=bins/elf/analysis/ls-linux64
ARGS=-e io.cache=true
CMDS=<<EOF
e scr.interactive=true
s section..preinit_array
?e
pD $SS @ section..init_array
?e
pD $SS @ section..fini_array
EOF
EXPECT=<<EOF
;-- section..init_array:
;-- segment.LOAD1:
;-- segment.GNU_RELRO:
0x0021bfa8 .qword 0x0000000000005d20 ; entry.init0 ; [18] -rw- section size 8 named .init_array
;-- section..fini_array:
0x0021bfb0 .qword 0x0000000000005ce0 ; entry.fini0 ; [19] -rw- section size 8 named .fini_array
EOF
EXPECT_ERR=<<EOF
Cannot seek to unknown address 'section..preinit_array'
EOF
RUN
NAME=iX
FILE=bins/elf/analysis/dwarf_load
CMDS=ixf
EXPECT=<<EOF
[Source file]
/home/landley/work/ab7/build/temp-armv6l/gcc-core/gcc/config/arm/ieee754-df.S
/home/landley/work/ab7/build/temp-armv6l/gcc-core/gcc/config/arm/lib1funcs.asm
EOF
RUN
NAME=iM main sym
FILE=bins/elf/before-after-main
CMDS=iM
EXPECT=<<EOF
[Main]
vaddr=0x0804854e paddr=0x0000054e
EOF
RUN
NAME=iSj
FILE=bins/pe/hello-mingw32
CMDS=iSj~{}
EXPECT=<<EOF
[
{
"name": ".text",
"size": 2560,
"vsize": 4096,
"perm": "-r-x",
"flags": [
"CNT_CODE",
"CNT_INITIALIZED_DATA",
"ALIGN_16BYTES"
],
"paddr": 1024,
"vaddr": 4198400
},
{
"name": ".data",
"size": 512,
"vsize": 4096,
"perm": "-rw-",
"flags": [
"CNT_INITIALIZED_DATA",
"ALIGN_4BYTES"
],
"paddr": 3584,
"vaddr": 4202496
},
{
"name": ".rdata",
"size": 512,
"vsize": 4096,
"perm": "-r--",
"flags": [
"CNT_INITIALIZED_DATA",
"ALIGN_4BYTES"
],
"paddr": 4096,
"vaddr": 4206592
},
{
"name": ".bss",
"size": 0,
"vsize": 4096,
"perm": "-rw-",
"flags": [
"CNT_UNINITIALIZED",
"ALIGN_8BYTES"
],
"paddr": 0,
"vaddr": 4210688
},
{
"name": ".idata",
"size": 1024,
"vsize": 4096,
"perm": "-rw-",
"flags": [
"CNT_INITIALIZED_DATA",
"ALIGN_4BYTES"
],
"paddr": 4608,
"vaddr": 4214784
}
]
EOF
RUN
NAME=ii dupped imports
FILE=bins/elf/varsub
CMDS=ii
EXPECT=<<EOF
[Imports]
nth vaddr bind type lib name
-------------------------------------
1 0x00000000 GLOBAL FUNC __libc_start_main
2 0x00000000 WEAK NOTYPE __gmon_start__
EOF
RUN
NAME=iI~laddr
FILE=bins/mach0/fatmach0-3true
ARGS=-m 0x5000
CMDS=iI~laddr
EXPECT=<<EOF
laddr 0x0
EOF
RUN
NAME=ik-macho
FILE=bins/mach0/fatmach0-3true
CMDS=ik info/mach0.entry.vaddr~?0x100000ef8
EXPECT=<<EOF
1
EOF
RUN
NAME=ikv
FILE=bins/mach0/fatmach0-3true
CMDS=ikv info/mach0.entry.vaddr
EXPECT=<<EOF
0x100000ef8
EOF
RUN
NAME=ik.
FILE=bins/mach0/fatmach0-3true
CMDS=ik. info/mach0.entry.vaddr
EXPECT=<<EOF
0x100000ef8
EOF
RUN
NAME=ik*
FILE=bins/mach0/fatmach0-3true
CMDS=ik*~?mach0_segment64_0
EXPECT=<<EOF
1
EOF
RUN
NAME=ik?
BROKEN=1
FILE=bins/mach0/fatmach0-3true
CMDS=ik?~?Usage
EXPECT=<<EOF
1
EOF
RUN
NAME=iS=
FILE=bins/mach0/fatmach0-3true
CMDS=iS=
EXPECT=<<EOF
0* 0x100000ef8 ######------------------------ 0x100000f3f r-x 71 0.__TEXT.__text
1 0x100000f40 ------#----------------------- 0x100000f46 r-x 6 1.__TEXT.__symbol_stub1
2 0x100000f46 ------###--------------------- 0x100000f60 r-x 26 2.__TEXT.__stub_helper
3 0x100000f60 --------########-------------- 0x100000fb4 r-x 84 3.__TEXT.__unwind_info
4 0x100000fb8 ----------------######-------- 0x100001000 r-x 72 4.__TEXT.__eh_frame
5 0x100001000 ----------------------##------ 0x100001010 rw- 16 5.__DATA.__nl_symbol_ptr
6 0x100001010 -----------------------#------ 0x100001018 rw- 8 6.__DATA.__la_symbol_ptr
7 0x100001020 ------------------------####-- 0x100001048 rw- 40 7.__DATA.__program_vars
8 0x100001048 ----------------------------## 0x100001068 rw- 32 8.__DATA.__data
=> 0x100000ef8 ------------------------------ 0x100000ef7
EOF
RUN
NAME=iSq.
FILE=bins/mach0/fatmach0-3true
CMDS=iSq.
EXPECT=<<EOF
0x100000ef8 0x100000f3f -r-x 0.__TEXT.__text
EOF
RUN
NAME=isqq
FILE=bins/mach0/fatmach0-3true
CMDS=isqq
EXPECT=<<EOF
__mh_execute_header
radr://5614542
imp.exit
EOF
RUN
NAME=iR*
FILE=bins/pe/standard.exe
CMDS=iR*
EXPECT=<<EOF
fs resources
f resource.0 5672 0x00401180
f resource.1 76 0x00402a10
f resource.2 20 0x004027b0
f resource.3 452 0x004027d0
f resource.4 74 0x004029a0
fs *
EOF
RUN
NAME=iRj
FILE=bins/pe/standard.exe
CMDS=iRj~{}
EXPECT=<<EOF
[
{
"name": "1576",
"index": 0,
"type": "ICON",
"vaddr": 4198784,
"size": 5672,
"lang": "LANG_NEUTRAL",
"timestamp": "Thu Jan 1 00:00:00 1970"
},
{
"name": "10",
"index": 1,
"type": "STRING",
"vaddr": 4205072,
"size": 76,
"lang": "LANG_NEUTRAL",
"timestamp": "Thu Jan 1 00:00:00 1970"
},
{
"name": "788",
"index": 2,
"type": "GROUP_ICON",
"vaddr": 4204464,
"size": 20,
"lang": "LANG_NEUTRAL",
"timestamp": "Thu Jan 1 00:00:00 1970"
},
{
"name": "1",
"index": 3,
"type": "VERSION",
"vaddr": 4204496,
"size": 452,
"lang": "LANG_NEUTRAL",
"timestamp": "Thu Jan 1 00:00:00 1970"
},
{
"name": "1",
"index": 4,
"type": "MANIFEST",
"vaddr": 4204960,
"size": 74,
"lang": "LANG_NEUTRAL",
"timestamp": "Thu Jan 1 00:00:00 1970"
}
]
EOF
RUN
NAME=izzz*
FILE=bins/mach0/fatmach0-3true
CMDS=izzz*~str.http:__www.apple.com_appleca_codesigning.crl0
EXPECT=<<EOF
f str.http:__www.apple.com_appleca_codesigning.crl0 48 @ 0x00002f3c
EOF
RUN
NAME=it
FILE==
ARGS=-w
CMDS=it ; wx 0x90 ; it
EXPECT=<<EOF
md5 bf619eac0cdf3f68d496ea9344137e8b
sha1 5c3eb80066420002bc3dcc7ca4ab6efad7ed4ae5
sha256 076a27c79e5ace2a3d47f9dd2e83e4ff6ea8872b3c2218f66c92b89b55f36560
EOF
EXPECT_ERR=<<EOF
File has been modified.
- md5 bf619eac0cdf3f68d496ea9344137e8b
+ md5 afd010a5a5456c232dee59d59bd75cf6
- sha1 5c3eb80066420002bc3dcc7ca4ab6efad7ed4ae5
+ sha1 3bfd02bb4fac6499c89278254f04a081887c38ea
- sha256 076a27c79e5ace2a3d47f9dd2e83e4ff6ea8872b3c2218f66c92b89b55f36560
+ sha256 91543b8000dc6bade2bcae4d44c16f3a33e07e6f96a910dcd702c5179a937c20
EOF
RUN
NAME=it2
FILE=--
CMDS=<<EOF
mkdir .tmp
cp bins/mach0/fatmach0-3true .tmp/it2-modfile
o .tmp/it2-modfile
oo+
it
wx 0x90
it
o--
rm .tmp/it2-modfile
EOF
EXPECT_ERR=<<EOF
File has been modified.
- md5 84144530144b53a704c84d9c65ab5f92
+ md5 9a99cca7bf3e27ee1c8964141cfad053
- sha1 9016e215a321184c42c28ab03847554851932713
+ sha1 17c5b6331a420fc3b48defe782090295294fee2e
- sha256 95debaecaaaf89c7f5151218def15ef18c8be375aeccf0564a3b16416c361012
+ sha256 53cb8b3aec20da6a313ac996ca8f518bca9fa4768ff771d35513be09a387f025
All core files, io, analysis and flags info purged.
EOF
EXPECT=<<EOF
md5 84144530144b53a704c84d9c65ab5f92
sha1 9016e215a321184c42c28ab03847554851932713
sha256 95debaecaaaf89c7f5151218def15ef18c8be375aeccf0564a3b16416c361012
EOF
RUN
NAME=isq. (malloc)
FILE=malloc://512
CMDS=isq.
EXPECT=<<EOF
EOF
RUN
NAME=isq. (file x86)
FILE=bins/elf/analysis/hello-linux-x86_64
CMDS=isq.
EXPECT=<<EOF
0x00400410 0 .text
EOF
RUN
NAME=ic?~ (match all)
FILE=malloc://512
CMDS=ic?~List
EXPECT=<<EOF
| ic List classes, methods and fields
| icc List classes, methods and fields in Header Format
| icg List classes as agn/age commands to create class hirearchy graphs
| icq List classes, in quiet mode (just the classname)
| icqq List classes, in quieter mode (only show non-system classnames)
EOF
RUN
NAME=ic?~ (match one)
FILE=malloc://512
CMDS=ic?~Header
EXPECT=<<EOF
| icc List classes, methods and fields in Header Format
EOF
RUN
NAME=ic?~ (match none)
FILE=malloc://512
CMDS=ic?~Guess
EXPECT=<<EOF
EOF
RUN
NAME=ascii substring detection (#14499)
FILE=bins/pe/Reborn_Stub-strings.exe
CMDS=izz~pomf
EXPECT=<<EOF
7154 0x00087f8a 0x00489d8a 26 53 .text utf16le http://pomf.cat/upload.php
7159 0x000880dd 0x00489edd 19 39 .text utf16le https://a.pomf.cat/
7322 0x00089bed 0x0048b9ed 26 53 .text utf16le http://pomf.cat/upload.php
7323 0x00089c22 0x0048ba22 19 40 .text utf16le https://a.pomf.cat/
EOF
RUN
NAME=ic (file Java)
FILE=bins/java/Hello.class
CMDS=ic
EXPECT=<<EOF
0x00000000 [0x0000022b - 0x000002d3] 168 class 0 Hello :: java/lang/Object
0x0000022b method 0 Hello.<init>
0x00000263 method 1 Hello.say
0x000002aa method 2 Hello.main
EOF
RUN
NAME=icq (file Java)
FILE=bins/java/Hello.class
CMDS=icq
EXPECT=<<EOF
0x00000000 [0x0000022b - 0x000002d3] Hello java/lang/Object
EOF
RUN
NAME=icqq (file Java)
FILE=bins/java/Hello.class
CMDS=icqq
EXPECT=<<EOF
Hello
EOF
RUN
NAME=icqq (file x86)
FILE=bins/elf/ls
CMDS=icqq
EXPECT=<<EOF
EOF
RUN
NAME=iqqc (file Java)
BROKEN=1
FILE=bins/java/Hello.class
CMDS=iqqc
EXPECT=<<EOF
Hello
EOF
RUN
NAME=iqqc (file x86)
BROKEN=1
FILE=bins/elf/ls
CMDS=iqqc
EXPECT=<<EOF
EOF
RUN
NAME=iqcq (file Java)
BROKEN=1
FILE=bins/java/Hello.class
CMDS=iqcq
EXPECT=<<EOF
Hello
EOF
RUN
NAME=iqcq (file x86)
BROKEN=1
FILE=bins/elf/ls
CMDS=iqcq
EXPECT=<<EOF
EOF
RUN
NAME=auto entry (lib)
ARGS=-e io.cache=true
FILE=bins/elf/libverifyPass.so
CMDS=<<EOF
ie
EOF
EXPECT=<<EOF
[Entrypoints]
vaddr=0x00000f50 paddr=0x00000f50 haddr=0x00000018 hvaddr=0x00000018 type=program
1 entrypoints
EOF
EXPECT_ERR=<<EOF
EOF
RUN
NAME=auto entry (lib no e_entry)
ARGS=-e io.cache=true
FILE=bins/elf/libexploit.so
CMDS=<<EOF
ie
EOF
EXPECT=<<EOF
[Entrypoints]
vaddr=0x00000d28 paddr=0x00000d28 haddr=0x00000018 hvaddr=0x00000018 type=program
1 entrypoints
EOF
EXPECT_ERR=<<EOF
Cannot determine entrypoint, using 0x00000d28.
EOF
RUN
NAME=auto entry (obj)
FILE=bins/elf/analysis/test.obj
CMDS=<<EOF
ie
EOF
EXPECT=<<EOF
[Entrypoints]
0 entrypoints
EOF
EXPECT_ERR=<<EOF
Warning: run rizin with -e io.cache=true to fix relocations in disassembly
EOF
RUN
NAME=macho-ghost-symbols
FILE=bins/mach0/libr_flag.dylib
CMDS=<<EOF
is~?
is~entry?
EOF
EXPECT=<<EOF
247
0
EOF
RUN
NAME=izjencoding
FILE=bins/elf/analysis/hello-utf-16
CMDS=<<EOF
e cfg.json.str=base64
izj~{[0].section}
EOF
EXPECT=<<EOF
LnJvZGF0YQ==
EOF
RUN
NAME=izjencodinghex
FILE=bins/elf/analysis/hello-utf-16
CMDS=<<EOF
e cfg.json.str=hex
izj~{[0].string}
EOF
EXPECT=<<EOF
48656C6C6F20576F726C64
EOF
RUN
NAME=izjencodingarray
FILE=bins/elf/analysis/hello-utf-16
CMDS=<<EOF
e cfg.json.str=array
izj~{[0].type}
EOF
EXPECT=<<EOF
[117,116,102,049,054,108,101]
EOF
RUN
NAME=izz libcap (#298)
FILE==
CMDS=<<EOF
wx 7500 6900 3d25 7325 7325 7300 2573 2c00 2b25 7325 7325 7300 2d25 7325 7325 7300 6361 705f 6368 6f77 6e00 6361 705f 6461
izz~^0
EOF
EXPECT=<<EOF
0 0x00000004 0x00000004 7 8 ascii =%s%s%s
EOF
RUN
NAME=ix (source line info)
FILE=bins/elf/dwarf3_many_comp_units.elf
CMDS=<<EOF
?e -- Everything
ix
?e -- Everything in json
ixj
?e -- Single address (exact match)
ix.@0x00001401
?e -- Single address (still covered)
ix.@0x00001402
?e -- Single address (not covered anymore)
ix.@0x00001403
?e -- Single address in json
ix.j@0x000013a2
?e -- File Summary
ixf
?e -- File Summary in json
ixfj
EOF
EXPECT=<<EOF
-- Everything
0x0000118a /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 3
0x00001196 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 3
0x000011a4 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 3
0x000011a8 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 3
0x000011b8 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 3
0x000011d8 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 4
0x000011e4 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 4
0x000011e9 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 4
0x000011eb /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 10
0x000011f7 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 10
0x00001206 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 12
0x00001212 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 13
0x00001228 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 7
0x00001234 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 7
0x00001239 /home/hound/r2test/dwarf/cpp/dump/mammal.cpp 7
0x0000123b /home/hound/r2test/dwarf/cpp/dump/main.cpp 15
0x00001248 /home/hound/r2test/dwarf/cpp/dump/main.cpp 18
0x0000125d /home/hound/r2test/dwarf/cpp/dump/main.cpp 18
0x00001261 /home/hound/r2test/dwarf/cpp/dump/main.cpp 19
0x00001276 /home/hound/r2test/dwarf/cpp/dump/main.cpp 19
0x0000127a /home/hound/r2test/dwarf/cpp/dump/main.cpp 20
0x00001281 /home/hound/r2test/dwarf/cpp/dump/main.cpp 21
0x0000128f /home/hound/r2test/dwarf/cpp/dump/main.cpp 21
0x00001298 /home/hound/r2test/dwarf/cpp/dump/main.cpp 21
0x0000129b /home/hound/r2test/dwarf/cpp/dump/main.cpp 22
0x000012a9 /home/hound/r2test/dwarf/cpp/dump/main.cpp 22
0x000012b2 /home/hound/r2test/dwarf/cpp/dump/main.cpp 22
0x000012b5 /home/hound/r2test/dwarf/cpp/dump/main.cpp 23
0x000012ba /home/hound/r2test/dwarf/cpp/dump/main.cpp 23
0x000012bf /home/hound/r2test/dwarf/cpp/dump/main.cpp 24
0x000012c6 /home/hound/r2test/dwarf/cpp/dump/mammal.h 2
0x000012d2 /home/hound/r2test/dwarf/cpp/dump/mammal.h 2
0x000012e0 /home/hound/r2test/dwarf/cpp/dump/mammal.h 2
0x000012e3 - -
0x000012e4 /home/hound/r2test/dwarf/cpp/dump/main.cpp 4
0x000012f4 /home/hound/r2test/dwarf/cpp/dump/main.cpp 4
0x0000130e /home/hound/r2test/dwarf/cpp/dump/main.cpp 4
0x00001311 - -
0x00001312 /home/hound/r2test/dwarf/cpp/dump/main.cpp 5
0x00001322 /home/hound/r2test/dwarf/cpp/dump/main.cpp 5
0x0000133c /home/hound/r2test/dwarf/cpp/dump/main.cpp 5
0x0000133f - -
0x00001340 /home/hound/r2test/dwarf/cpp/dump/main.cpp 5
0x00001350 /home/hound/r2test/dwarf/cpp/dump/main.cpp 5
0x0000136f - -
0x00001370 /home/hound/r2test/dwarf/cpp/dump/main.cpp 6
0x0000137c /home/hound/r2test/dwarf/cpp/dump/main.cpp 6
0x00001381 /home/hound/r2test/dwarf/cpp/dump/main.cpp 6
0x00001383 - -
0x00001384 /home/hound/r2test/dwarf/cpp/dump/main.cpp 10
0x00001390 /home/hound/r2test/dwarf/cpp/dump/main.cpp 10
0x0000139e /home/hound/r2test/dwarf/cpp/dump/main.cpp 10
0x000013a1 - -
0x000013a2 /home/hound/r2test/dwarf/cpp/dump/main.cpp 11
0x000013ae /home/hound/r2test/dwarf/cpp/dump/main.cpp 11
0x000013bc /home/hound/r2test/dwarf/cpp/dump/main.cpp 11
0x000013bf - -
0x000013c0 /home/hound/r2test/dwarf/cpp/dump/main.cpp 11
0x000013d0 /home/hound/r2test/dwarf/cpp/dump/main.cpp 11
0x000013ef - -
0x000013f0 /home/hound/r2test/dwarf/cpp/dump/main.cpp 12
0x000013fc /home/hound/r2test/dwarf/cpp/dump/main.cpp 12
0x00001401 /home/hound/r2test/dwarf/cpp/dump/main.cpp 12
0x00001403 - -
-- Everything in json
[{"file":"mammal.cpp","line":3,"column":3,"addr":4490},{"file":"mammal.cpp","line":3,"column":19,"addr":4502},{"file":"mammal.cpp","line":3,"column":22,"addr":4516},{"file":"mammal.cpp","line":3,"column":3,"addr":4520},{"file":"mammal.cpp","line":3,"column":22,"addr":4536},{"file":"mammal.cpp","line":4,"column":22,"addr":4568},{"file":"mammal.cpp","line":4,"column":31,"addr":4580},{"file":"mammal.cpp","line":4,"column":34,"addr":4585},{"file":"mammal.cpp","line":10,"column":12,"addr":4587},{"file":"mammal.cpp","line":10,"column":12,"addr":4599},{"file":"mammal.cpp","line":12,"column":23,"addr":4614},{"file":"mammal.cpp","line":13,"column":1,"addr":4626},{"file":"mammal.cpp","line":7,"column":6,"addr":4648},{"file":"mammal.cpp","line":7,"column":26,"addr":4660},{"file":"mammal.cpp","line":7,"column":28,"addr":4665},{"file":"main.cpp","line":15,"column":12,"addr":4667},{"file":"main.cpp","line":18,"column":16,"addr":4680},{"file":"main.cpp","line":18,"column":5,"addr":4701},{"file":"main.cpp","line":19,"column":15,"addr":4705},{"file":"main.cpp","line":19,"column":5,"addr":4726},{"file":"main.cpp","line":20,"column":7,"addr":4730},{"file":"main.cpp","line":21,"column":20,"addr":4737},{"file":"main.cpp","line":21,"column":19,"addr":4751},{"file":"main.cpp","line":21,"column":10,"addr":4760},{"file":"main.cpp","line":22,"column":21,"addr":4763},{"file":"main.cpp","line":22,"column":20,"addr":4777},{"file":"main.cpp","line":22,"column":10,"addr":4786},{"file":"main.cpp","line":23,"column":23,"addr":4789},{"file":"main.cpp","line":23,"column":24,"addr":4794},{"file":"main.cpp","line":24,"column":1,"addr":4799},{"file":"mammal.h","line":2,"column":3,"addr":4806},{"file":"mammal.h","line":2,"column":12,"addr":4818},{"file":"mammal.h","line":2,"column":15,"addr":4832},{"line":0,"addr":4835},{"file":"main.cpp","line":4,"column":3,"addr":4836},{"file":"main.cpp","line":4,"column":9,"addr":4852},{"file":"main.cpp","line":4,"column":12,"addr":4878},{"line":0,"addr":4881},{"file":"main.cpp","line":5,"column":11,"addr":4882},{"file":"main.cpp","line":5,"column":18,"addr":4898},{"file":"main.cpp","line":5,"column":19,"addr":4924},{"line":0,"addr":4927},{"file":"main.cpp","line":5,"column":11,"addr":4928},{"file":"main.cpp","line":5,"column":19,"addr":4944},{"line":0,"addr":4975},{"file":"main.cpp","line":6,"column":15,"addr":4976},{"file":"main.cpp","line":6,"column":31,"addr":4988},{"file":"main.cpp","line":6,"column":34,"addr":4993},{"line":0,"addr":4995},{"file":"main.cpp","line":10,"column":3,"addr":4996},{"file":"main.cpp","line":10,"column":10,"addr":5008},{"file":"main.cpp","line":10,"column":13,"addr":5022},{"line":0,"addr":5025},{"file":"main.cpp","line":11,"column":11,"addr":5026},{"file":"main.cpp","line":11,"column":19,"addr":5038},{"file":"main.cpp","line":11,"column":20,"addr":5052},{"line":0,"addr":5055},{"file":"main.cpp","line":11,"column":11,"addr":5056},{"file":"main.cpp","line":11,"column":20,"addr":5072},{"line":0,"addr":5103},{"file":"main.cpp","line":12,"column":15,"addr":5104},{"file":"main.cpp","line":12,"column":30,"addr":5116},{"file":"main.cpp","line":12,"column":33,"addr":5121},{"line":0,"addr":5123}]
-- Single address (exact match)
0x00001401 /home/hound/r2test/dwarf/cpp/dump/main.cpp 12
-- Single address (still covered)
0x00001401 /home/hound/r2test/dwarf/cpp/dump/main.cpp 12
-- Single address (not covered anymore)
-- Single address in json
[{"file":"main.cpp","line":11,"column":11,"addr":5026}]
-- File Summary
[Source file]
/home/hound/r2test/dwarf/cpp/dump/main.cpp
/home/hound/r2test/dwarf/cpp/dump/mammal.cpp
/home/hound/r2test/dwarf/cpp/dump/mammal.h
-- File Summary in json
["/home/hound/r2test/dwarf/cpp/dump/main.cpp","/home/hound/r2test/dwarf/cpp/dump/mammal.cpp","/home/hound/r2test/dwarf/cpp/dump/mammal.h"]
EOF
RUN
NAME=ix same-addr samples
FILE=bins/elf/libstdc++.so.6
CMDS=<<EOF
ix.@0x00091004
?e --
ix.j@0x00091004
EOF
EXPECT=<<EOF
0x00091004 /build/gcc/src/gcc/libstdc++-v3/libsupc++/new 57
0x00091004 /build/gcc/src/gcc/libstdc++-v3/libsupc++/new 57
0x00091004 /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/exception.h 63
0x00091004 /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/exception.h 63
--
[{"file":"new","line":57,"column":5,"addr":593924},{"file":"new","line":57,"column":25,"addr":593924},{"file":"exception.h","line":63,"column":5,"addr":593924},{"file":"exception.h","line":63,"column":5,"addr":593924}]
EOF
RUN