2013-01-03 11 views
5

Garip bir ELF ikili var. Bu ikili 32bit linux'da çalıştırabilirim.Garip ELF ikili

Ancak bu ikili IDA disassembler ile açılırsa, IDA "geçersiz giriş noktası" yazıyor. readelf ait

Sonucu aşağıdaki gibidir: hayır bölüm vardır

[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 

. Bu ikili paketlendiğini düşündüm. Ancak, ilk LOAD segmentinin son sanal adresi 0xc023c7'dir. Ve giriş noktasının sanal adresi, aralık dışı olan 0xc023dc'dir.

Birisi bana neler olduğunu anlatabilir mi?

Önceden teşekkür ederiz.

  • /proc/PID/maps (iki süreç oluşturulur ...)

    [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] 
    
+0

(+1) İlginç bir soru. Ancak, gerçek ikiliyi inceleyebilirsek, daha yüksek bir başarı şansına sahip olacağımızı düşünüyorum. – NPE

+0

'SimpleVM' ve' ldd SimpleVM' nedir? –

+1

Bu, eğer bu özel bir programsa, yazarının sökülmesini engellemek istediğinden şüpheleniyorum. Bilindiği gibi, çekirdek, ikili biçimle ilgili olarak biraz daha rahattır (bu, sökücülerin/hata ayıklayıcıların yapmadığı biraz hatalı biçimlendirilmiş yürütücüleri mutlu bir şekilde kabul eder) ve bu gerçeğin, bir ikili'nin ters mühendislik yapılmasını engellemek için istismar edilmiştir. –

cevap

3

Çünkü haritalama uzunluğunun ayrıntı muhtemelen aşağıdaki gibidir. Eşlemenin uzunluğu, sayfa boyutunun katları olacak şekilde yuvarlanacaktır. Sistemimde sayfa boyutu 4k, böylece haritalama 4k'ya yuvarlanacak ve giriş noktasını kapsayacak. 1k'lik bir sayfa boyutuyla bile, uzunluk giriş noktasını içerecek kadar 0x1400'e yuvarlayacaktır. Dosya yeteri kadar uzunsa, sayfa başlatılmasının yerine ekstra bayt muhtemelen dosyadan gelir.

+0

Tamam, bunun sonucu olarak sayfa hatası * hemen * olabilir. Ama giriş noktası, bu sistemde boş sayfalar dolu olsun diye doldurulmuyor mu? Bu etkili bir * nop * ise, sayfanın sonuna kadar çalışana kadar bunları yürütür; ama bu talimat gerçekten de bir şey olabilir ... –

+0

@ChrisStratton Dosya uzunluğuna yetecek kadar büyük olduğunu varsaydım. Bunu cevaba ekleyeceğim. –

+0

Bu özellikle, birileri sinsi olmaya ve belirli bir program yükleyicisinin davranışına güvenmeye çalışıyorsa, bu makul olabilir.ELF başlığına göre dosya boyutunun ne olması gerektiğine bakarak ne olması gerektiğini görmek ilginç olurdu. –

İlgili konular