Я разработал небольшую cpp-программу на платформе Ubuntu-Linux 11.10. Теперь я хочу перепроектировать его. Я новичок. Я использую такие инструменты: GDB 7.0, hte editor, hexeditor.
Впервые я сделал это довольно легко. С помощью символьной информации я установил адрес главной функции и сделал все, что мне было нужно.
Потом я полоснул ( --strip-all
) исполняемый elf-файл и у меня возникли некоторые проблемы.
Я знаю, что функция main
в этой программе начинается с адреса 0x8960.
Но я понятия не имею, как мне найти эту точку без этих знаний.
Я попытался шаг за шагом отлаживать свою программу с помощью gdb, но она переходит в __libc_start_main
затем в ld-linux.so.3
(таким образом, он находит и загружает общие библиотеки, необходимые программе). Я отлаживал его около 10 минут. Конечно, может минут за 20 я доберусь до точки входа в основную функцию, но, похоже, должен существовать более простой путь.
Что мне делать, чтобы найти точку входа в функцию main
без символьной информации?
Не могли бы вы посоветовать мне хорошие книги/сайты/другие_источники по реверс-инжинирингу elf-файлов с помощью gdb?
Любая помощь будет оценена по достоинству.