встроенный распаковщик 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 ; запускаем полученный процесс на выполнение