我有一個奇怪的ELF二進制。我可以在32位linux中運行這個二進制文件。奇怪的ELF二進制
但是如果我用IDA反彙編器打開這個二進制文件,IDA說「無效的入口點」。
結果readelf的是如下:
[email protected]:/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 /進程/映射如下(則創建兩個進程...)
[email protected]:/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] [email protected]:/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]
(+1)有趣的問題。但是,如果我們能夠檢查實際的二進制文件,我認爲我們會有更高的成功機會。 – NPE
'文件SimpleVM'和'ldd SimpleVM'說什麼? –
我懷疑,如果這是一個專有程序,那麼它的作者想要防止它被拆開。衆所周知,內核對二進制格式稍微寬容一些(它歡迎接受一些反彙編/調試器沒有的稍微不合格的可執行文件),並且爲了防止二進制被反向工程,這個事實被利用。 – 2013-01-03 18:47:04