我有一个奇怪的ELF二进制文件。我可以在32位linux系统上运行这个二进制文件。
但是如果我用IDA反汇编器打开这个二进制文件,IDA会提示“无效的入口点”。
readelf的结果如下:
root@meltdown-VirtualBox:/home/meltdown# readelf -S -l SimpleVM
There are no sections in this file.
Elf file type is EXEC (Executable file)
Entry point 0xc023dc
There are 2 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x00c01000 0x00c01000 0x013c7 0x013c7 RWE 0x1000
LOAD 0x00019c 0x0804b19c 0x0804b19c 0x00000 0x00000 RW 0x1000
这段文字中没有具体的部分名称。我认为这个二进制文件被压缩了。但是,第一个LOAD段的最后虚拟地址是0xc023c7。入口点的虚拟地址是0xc023dc,超出范围了...
有人可以告诉我发生了什么吗?
提前感谢您的帮助。
/proc/PID/maps is as follows (two processes are created...)
root@meltdown-VirtualBox:/proc/3510# cat maps 00110000-00111000 rwxp 00000000 00:00 0 006c0000-006c1000 r-xp 00000000 00:00 0 [vdso] 007d2000-007d4000 rwxp 00000000 00:00 0 00c01000-00c02000 rwxp 00000000 08:01 3801242 /home/meltdown/SimpleVM 00ca4000-00e43000 r-xp 00000000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e43000-00e45000 r-xp 0019f000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e45000-00e46000 rwxp 001a1000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e46000-00e49000 rwxp 00000000 00:00 0 08048000-0804b000 r-xp 00000000 00:00 0 0804b000-0804c000 rwxp 00000000 00:00 0 b77a7000-b77c7000 r-xp 00000000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c7000-b77c8000 r-xp 0001f000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c8000-b77c9000 rwxp 00020000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so bfa90000-bfab1000 rwxp 00000000 00:00 0 [stack] root@meltdown-VirtualBox:/proc/3511# cat maps 00110000-00111000 rwxp 00000000 00:00 0 006c0000-006c1000 r-xp 00000000 00:00 0 [vdso] 007d2000-007d4000 rwxp 00000000 00:00 0 00c01000-00c02000 rwxp 00000000 08:01 3801242 /home/meltdown/SimpleVM 00ca4000-00e43000 r-xp 00000000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e43000-00e45000 r-xp 0019f000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e45000-00e46000 rwxp 001a1000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e46000-00e49000 rwxp 00000000 00:00 0 08048000-0804b000 r-xp 00000000 00:00 0 0804b000-0804c000 rwxp 00000000 00:00 0 b77a7000-b77c7000 r-xp 00000000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c7000-b77c8000 r-xp 0001f000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c8000-b77c9000 rwxp 00020000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so bfa90000-bfab1000 rwxp 00000000 00:00 0 [stack]
gdb
并执行break *0xc023dc
,然后运行run
,最后执行info proc mappings
。 - Geoff Reedy