Упаковщики исполняемых файлов в LINUX-BSD

   Страж сигнализаторы загазованности. |     

дизассемблерный листинг


Достаточно просто установить точку сразу же за концом расшифровщика (в данном случае она расположена по адресу 80495F9h) после чего в нашем распоряжении окажется расшифрованный elf с которого можно снять дамп. В случае с dbg последовательность команд будет выглядеть приблизительно так:

root@5[elf_crypt]#objdump -f elfcrypt-demo      # определяем точку входа в файл

elfcrypt-demo:       формат файла elf32-i386

архитектура: i386, флаги 0x00000112:

EXEC_P, HAS_SYMS, D_PAGED

начальный адрес 0x080495dc

root@5[elf_crypt]# gdb elfcrypt-demo

(gdb) b *0x80495DC                       # ставим точку останова на точку входа

Breakpoint 1 at 0x80495dc

gdb) r                                   # пускаем программу

Starting program: /home/elf_crypt/elfcrypt-demo

Breakpoint 1, 0x080495dc in ?? ()        # сработала точка останова

(gdb) display/i $pc                      # говорим отображать команды ассемблера



1: x/i $pc  0x80495dc: jmp 0x80495e0

(gdb) si                                 # начинаем трассировать программу

0x080495e0 in ?? ()

1: x/i

$pc  0x80495e0:  pusha                   # продолжаем трассировать

...

0x080495f7 in ?? ()

1: x/i $pc  0x80495f7:  loop   0x80495f3 # видим

цикл

(gdb) b *0x80495F9                       # ставим точку останова за его концом

Breakpoint 2 at 0x80495f9

(gdb) c                                         # запускаем программу "вживую"

Continuing.

Breakpoint 2, 0x080495f9 in ?? ()        # точка останова достигнута

1: x/i

$pc  0x80495f9:  popf                    # программа расшифрована! кушать подано!



Содержание раздела