逆向工程——使用调试信息进行编译
Reverse engineering - compile with debug info
我正在学习如何逆向一个程序,我想知道.. 如果我用调试信息编译:
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
不应影响代码生成,它只是将仅对调试器有用的信息添加到生成的程序文件中。
如果您想禁止他人反汇编或反编译您的软件,只需将其包含在您的许可证中即可。
我正在学习如何逆向一个程序,我想知道.. 如果我用调试信息编译:
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
不应影响代码生成,它只是将仅对调试器有用的信息添加到生成的程序文件中。
如果您想禁止他人反汇编或反编译您的软件,只需将其包含在您的许可证中即可。