
NAME=auto entry (obj)
FILE=bins/elf/analysis/test.obj
CMDS=<<EOF
ie
EOF
EXPECT=
EXPECT_ERR=<<EOF
WARN: Relocs has not been applied. Please use `-e bin.relocs.apply=true` or `-e bin.cache=true` next time
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
paddr=0x00000486 vaddr=0x08048486 hpaddr=0x00000ed4 vhaddr=0x08049ed4 type=preinit
paddr=0x0000049f vaddr=0x0804849f hpaddr=0x00000ed8 vhaddr=0x08049ed8 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
'fs-
EOF
RUN

NAME=auto entry (lib)
ARGS=-e io.cache=true
FILE=bins/elf/libverifyPass.so
CMDS=ie=
EXPECT=<<EOF
paddr=0x00000f50 vaddr=0x00000f50 haddr=0x00000018 vhaddr=0x00000018 type=program
EOF
EXPECT_ERR=<<EOF
WARN: Relocs has not been applied. Please use `-e bin.relocs.apply=true` or `-e bin.cache=true` next time
EOF
RUN

NAME=auto entry (log.level test)
ARGS=-e io.cache=true -e log.level=6
FILE=bins/elf/libexploit.so
CMDS=<<EOF
ie
i~elf
EOF
EXPECT=<<EOF
paddr      vaddr      phaddr     vhaddr     type
------------------------------------------------
0x00000d28 0x00000d28 0x00000018 0x00000018 program
file     bins/elf/libexploit.so
format   elf
bintype  elf
EOF
EXPECT_ERR=<<EOF
DEBUG: RCoreCmd: =!
DEBUG: Dynamic tag 16 not handled
DEBUG: Reloc type 23 not used for imports
DEBUG: Reloc type 23 not used for imports
DEBUG: Reloc type 23 not used for imports
DEBUG: Reloc type 23 not used for imports
DEBUG: bin object have no information
DEBUG: add dt.dyn.entry tag=3 value=0x0002fde8
DEBUG: add dt.dyn.entry tag=2 value=0x00000188
DEBUG: add dt.dyn.entry tag=23 value=0x00000940
DEBUG: add dt.dyn.entry tag=20 value=0x00000011
DEBUG: add dt.dyn.entry tag=17 value=0x000008b8
DEBUG: add dt.dyn.entry tag=18 value=0x00000088
DEBUG: add dt.dyn.entry tag=19 value=0x00000008
DEBUG: add dt.dyn.entry tag=1879048186 value=0x00000011
DEBUG: add dt.dyn.entry tag=6 value=0x000000b4
DEBUG: add dt.dyn.entry tag=11 value=0x00000010
DEBUG: add dt.dyn.entry tag=5 value=0x00000484
DEBUG: add dt.dyn.entry tag=10 value=0x000002a2
DEBUG: add dt.dyn.entry tag=4 value=0x00000728
DEBUG: add dt.dyn.entry tag=1 value=0x00000287
DEBUG: add dt.dyn.entry tag=1 value=0x0000028f
DEBUG: add dt.dyn.entry tag=1 value=0x00000298
DEBUG: add dt.dyn.entry tag=16 value=0x00000000
DEBUG: add dt.dyn.entry tag=30 value=0x00000002
ERROR: Cannot determine entrypoint, using 0x00000d28
DEBUG: (section .dynsym) Cd 4[244] @ 0xb4
DEBUG: RCoreCallAt(0x000000b4): Cd 4[244]
DEBUG: (cannot find opening [) in (244])
DEBUG: (section .dynstr) Css 674 @ 0x484
DEBUG: RCoreCallAt(0x00000484): Css 674
DEBUG: RCoreCmd: Cz@0x00000484
DEBUG: RCoreCmd: o;om
DEBUG: (section .hash) Cd 4[100] @ 0x728
DEBUG: RCoreCallAt(0x00000728): Cd 4[100]
DEBUG: (cannot find opening [) in (100])
DEBUG: (section .rel.plt) Cd 4[98] @ 0x940
DEBUG: RCoreCallAt(0x00000940): Cd 4[98]
DEBUG: (cannot find opening [) in (98])
DEBUG: (section .dynamic) Cd 4[48] @ 0x12000
DEBUG: RCoreCallAt(0x00012000): Cd 4[48]
DEBUG: (cannot find opening [) in (48])
DEBUG: (section .got) Cd 4[56] @ 0x2fdd8
DEBUG: RCoreCallAt(0x0002fdd8): Cd 4[56]
DEBUG: (cannot find opening [) in (56])
DEBUG: (section .dynsym) Cd 4[244] @ 0xb4
DEBUG: RCoreCallAt(0x000000b4): Cd 4[244]
DEBUG: (cannot find opening [) in (244])
DEBUG: (section .dynstr) Css 674 @ 0x484
DEBUG: RCoreCallAt(0x00000484): Css 674
DEBUG: RCoreCmd: Cz@0x00000484
DEBUG: RCoreCmd: o;om
DEBUG: (section .hash) Cd 4[100] @ 0x728
DEBUG: RCoreCallAt(0x00000728): Cd 4[100]
DEBUG: (cannot find opening [) in (100])
DEBUG: (section .rel.plt) Cd 4[98] @ 0x940
DEBUG: RCoreCallAt(0x00000940): Cd 4[98]
DEBUG: (cannot find opening [) in (98])
DEBUG: (section .dynamic) Cd 4[48] @ 0x12000
DEBUG: RCoreCallAt(0x00012000): Cd 4[48]
DEBUG: (cannot find opening [) in (48])
DEBUG: (section .got) Cd 4[56] @ 0x2fdd8
DEBUG: RCoreCallAt(0x0002fdd8): Cd 4[56]
DEBUG: (cannot find opening [) in (56])
WARN: Relocs has not been applied. Please use `-e bin.relocs.apply=true` or `-e bin.cache=true` next time
DEBUG: RCoreCmd: =!
DEBUG: RCoreCmd: ieq
DEBUG: RCoreCmd: ie
DEBUG: RCoreCmd: i~elf
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
paddr      vaddr      phaddr     vhaddr     type
------------------------------------------------
0x00000d28 0x00000d28 0x00000018 0x00000018 program
EOF
EXPECT_ERR=<<EOF
ERROR: Cannot determine entrypoint, using 0x00000d28
WARN: Relocs has not been applied. Please use `-e bin.relocs.apply=true` or `-e bin.cache=true` next time
EOF
RUN

NAME=iee for dt preinit
FILE=bins/elf/ieee.elf
CMDS=<<EOF
iee
EOF
EXPECT=<<EOF
paddr      vaddr      phaddr     vhaddr     type
------------------------------------------------
0x00000740 0x00000740 0x0004dd88 0x0024dd88 init
0x00000700 0x00000700 0x0004dd90 0x0024dd90 fini
0x0000074a 0x0000074a 0x0004dd80 0x0004dd80 preinit
EOF
RUN

NAME=ies
FILE=bins/mach0/BatteryLife.arm_64.1
CMDS=<<EOF
ies
EOF
EXPECT=<<EOF
0x1000ff3e4  UIApplicationMain
0x1000052fc  mainView.viewDidLoad
0x100009064  pageViewController.viewDidLoad
0x10000a69c  lifeViewController.viewDidLoad
0x10000f330  masterViewController.viewDidLoad
0x1000807ac  GADViewController.viewDidLoad
0x100083178  GADBrowserViewController.viewDidLoad
0x100010f7c  main
0x100010f7c  entry0
EOF
RUN
