Обратный инжиниринг - компиляция с отладочной информацией - PullRequest
1 голос
/ 26 июня 2019

Я изучаю реверсирование программы, и мне было интересно ... если я скомпилирую с отладочной информацией:

gcc -g ....

Помогает ли это как-нибудь реверсному процессу?дать дополнительную информацию, если я это сделаю?Я не смог найти никакой информации по этому вопросу.

1 Ответ

4 голосов
/ 26 июня 2019

Это помогает, добавляя номера строк, имена файлов, определения макросов и тому подобное в результирующий двоичный файл.Тем не менее, он не включает полный исходный код программы внутри самой программы.

Вот пример определения макросов, включенных в результирующий файл:

username@localhost /path/to/source/code $ gcc test.c -Wall -Wextra -gdwarf-4 -g3
username@localhost /path/to/source/code $ grep __STDC_VERSION__ a.out 
Binary file a.out matches

Отладочная информация более полезнадля декомпиляции при компиляции с -g3, как показано в приведенном выше примере.

Итак, ответ на ваш вопрос: он дает немного дополнительной информации, которая может быть полезна при декомпиляции, но не достаточно длябыть в состоянии декомпилировать и перекомпилировать программу успешно.Если возможно, просто передайте исходный код человеку.

Если вы хотите предотвратить декомпиляцию своего кода, просто запустите на нем strip, как показано ниже, после сборки и отладки вашей программы:

strip program-file

-g не должен влиять на генерацию кода, он просто добавляет информацию, полезную только отладчику, в результирующий программный файл.

Если вы хотите запретить кому-либо разбирать или декомпилировать ваше программное обеспечение, просто включите его в свойлицензия.

...