Как найти точку входа основной функции исполняемого файла elf без какой-либо символьной информации?

Я разработал небольшую 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? Любая помощь будет оценена по достоинству.

11
задан Guillaume Jacquenot 23 January 2017 в 06:39
поделиться