c - 逆向工程 - 使用调试信息编译
问题描述
我正在学习反转程序,我想知道..如果我使用调试信息进行编译:
gcc -g ....
这对逆转过程有什么帮助吗?如果我这样做,我会提供额外的信息吗?我找不到有关该主题的任何信息。
解决方案
它通过向生成的二进制文件添加行号、文件名、宏定义等来提供帮助。但是,它不包括程序本身内部的程序的完整源代码。
下面是一个包含在结果文件中的宏定义示例:
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
不应影响代码生成,它只是将仅对调试器有用的信息添加到生成的程序文件中。
如果您想禁止某人反汇编或反编译您的软件,只需将其包含在您的许可证中即可。
推荐阅读
- rsa - 将解码的 pkcs12 密钥转换为 pem 格式
- mysql - SQL 命令错误/外键问题
- python - 使用字典中给出的单词出现更新数据框的单元格
- javascript - 如何使用 HTML 和 Javascript 在没有按钮的情况下更改背景图像
- extension-methods - OnAfterOpenSolution 和 OnAfterOpenProject 未触发,将扩展升级到 Visual Studio 2022
- python - 满足 PyDispatcher-2.0.5 的要求(来自版本:无)
- powershell - 简单的powershell成功或失败日志
- regex - 为什么 '['||chr(128)||'-'||chr(255)||']' 不起作用
- javascript - 将 Scrapy spider 作为脚本运行不会获得所有代码,但来自项目的 scrapy spider 会
- python - 如何在循环上制作数字生成器,并将每次重复限制为最多100个,以便生成的数字数量为100个数字