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

       

встроенный распаковщик UPX'а не смог распаковать файл с затертой сигнатурой


Поскольку, UPX не использует libc и работает через интерфейс системных вызовов, то динамические библиотеки подключаются только после того, как распаковка будет завершена. А это значит, что установив точку останова на функцию _dl_map_object_deps() мы сорвем банк, ворвавшись в уже распакованную программу.

Так же сработает аттач отладчика к активному процессу. При желании можно получить не только сырой дамп, но и готовый к работе elf-файл. К сожалению, прямых аналогов знаменитого proc-dump'а под UNIX нет (команда "generate-core-file" отладчика gdb создает файл, пригодный для дизассемблирования, но, увы, не запуска), но некоторые телодвижения в этом направлении уже наблюдаются. Утилита PD, исходный код который (с объяснением принципов его работы) опубликован в 63 номере журнала "PHRAK" (www.phrack.org/phrack/63/p63-0x0c_Process_Dump_and_Binary_Reconstruction.txt) легко дампит большинство простых файлов, но со сложным пока еще не справляется (однако, оставляет шанс доработать их руками). Самое печальное, что PD не может снимать дампы программ, исполняющихся под отладчиком (а ведь в мире Windows хакеры поступают именно так! находят оригинальную точку входа отладчиком, после чего зовут proc-dump или его более современный аналог PE-TOOLS). Однако, существует возможность отсоединиться от процесса командой "detach" и до выхода из отладчика он будет находится в "замороженном" состоянии, что позволяет его беспрепятственно дампить.

Там же в статье присутствует ссылка на базовый сайт проекта (http://www.reversing.org/) но никаких новых версий там нет, так что будем пользоваться тем, что дают. Ниже показан сеанс работы с утилитой PD:

root@5[src]# ./demo               ; запускаем упакованный процесс на выполнение

root@5[src]# ps -a                ; определяем его pid

  PID TTY          TIME CMD

 9771 pts/7    00:00:00 demo

 9779 pts/5    00:00:00 ps

root@5[src]# ./pd -o dumped

9771  ; дампим процесс в файл

pd V1.0 POF <ilo@reversing.org>

download last version from: http://www.reversing.org

source distribution for testing purposes..



performing search..

only PAGESZ method implemented in this version

AT_PAGESZ located at: 0xbffffbc8

gather process information and rebuild:

-loadable program segments, elf header and minimal size..

analyzing dynamic segment..

Agressive fixing Global Object Table..

 vaddr: 0x8049620 daddr: 0x8049000 foffset: 0x620

* plt unresolved!!!

section headers rebuild

this distribution does not rebuild section headers

saving file: dumped

Finished.                         ; утилита PD

окончила процесс дампинга

root@5[src]# ./dumped                    ; запускаем полученный процесс на выполнение



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