Особенности дизассемблирования под LINUX на примере tiny-crackme


         

Почему так происходит? Да потому


Листинг 3 реакция objdump на tiny-crackme

Почему так происходит? Да потому что ELF-заголовок искажен, а штатные средства LINUX'а таких шуток не понимают, вот и отказываются работать с ним. Пусть после этого кто-нибудь скажет, что UNIX - это хакерская ось! Ранние версии IDA вели себя точно так же, но в последнее время ELF-загрузчик был доработан и теперь мы можем дизассемблировать даже извращенные файлы. IDA жутко ругается: the ELF header entry size is invalid (поле размера ELF-заголовка неверно), the SHT entry size is invalid (поле размера заголовка таблицы секций неверно); SHT table size or offset is invalid (размер заголовка таблицы секций или ее смещение неверно), file contains meaningless/illegal section declarations, using program sections (файл содержит бессмысленные/неверные объявления секций, поэтому будут использоваться программные секции, они же сегменты), но все-таки открывает его и даже начинает дизассемблировать, что очень хорошо!

Экран дизассемблера должен выглядеть приблизительно так:

LOAD:00200000 ; Segment type: Pure code

LOAD:00200000 ; Segment permissions: Read/Write/Execute

LOAD:00200008 start  proc near

LOAD:00200008        mov    bl, 2Ah              ; заслать в регистр BL

значение 2Ah

LOAD:0020000A        jmp    loc_200040    ; прыгнуть на loc_200040

LOAD:0020000A

LOAD:0020000F        align 10h                  ; мусор какой-то

LOAD:00200010        dd 30002h,1,200008h,20h,1,0,200000h,1,2 dup(31Bh), 7, 1000h

LOAD:00200040

LOAD:00200040 loc_200040:                       ; CODE XREF: start+2j

LOAD:00200040        jmp    loc_200046           ; переход на loc_200046

LLOAD:00200045             db 0B0h                           ; мусорный байт

LOAD:00200046 loc_200046:                       ; CODE XREF: start:loc_200040j

LOAD:00200046        call   sub_2002F0           ; вызов функции sub_2002F0

LOAD:0020004B

LOAD:0020004B loc_20004B:                       ; DATA XREF: sub_2002F0+1o

LOAD:0020004B        dec    ecx                  ; \


Содержание  Назад  Вперед