逆向工程-使用调试信息进行编译

时间:2019-06-26 15:38:22

标签: c debugging gcc reverse-engineering reversing

我正在学习有关程序反向的问题,我想知道是否可以使用调试信息进行编译:

gcc -g ....

这对反转过程有一些帮助吗?我可以提供额外的信息吗?我找不到有关该主题的任何信息。

1 个答案:

答案 0 :(得分: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应该不会影响代码生成,它只会将仅对调试器有用的信息添加到生成的程序文件中。

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