1

我正在学习反转程序,我想知道..如果我使用调试信息进行编译:

gcc -g ....

这对逆转过程有什么帮助吗?如果我这样做,我会提供额外的信息吗?我找不到有关该主题的任何信息。

4

1 回答 1

4

它通过向生成的二进制文件添加行号、文件名、宏定义等来提供帮助。但是,它不包括程序本身内部的程序的完整源代码。

下面是一个包含在结果文件中的宏定义示例:

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不应影响代码生成,它只是将仅对调试器有用的信息添加到生成的程序文件中。

如果您想禁止某人反汇编或反编译您的软件,只需将其包含在您的许可证中即可。

于 2019-06-26T16:00:22.857 回答