GDB还是Radare2?

3

作为一个初学者,我应该使用GDB还是Radare2来反向工程一个可执行文件?我试图在C语言中编程时遇到了段错误。我想进行反向工程以获得汇编经验,并查看我在哪里遇到了段错误。

2个回答

6
为了调试自己从源代码构建的可执行文件,GDB 是一个旨在作为调试器使用。您可以使用 layout reg 命令获取一个包含反汇编和寄存器视图的界面,这可以帮助您理解段错误,如果查看 C 变量无法帮助您时。
通过使用 gcc -g 编译得到的调试信息,意味着您不需要进行任何逆向工程,只需使用普通的调试器即可。但是要想熟练掌握汇编语言,使用调试器的两种方式(源代码视图和汇编视图)都可以帮助您了解编译器如何使用某些汇编指令来实现每个 C 语句。因此,您一定需要一个可以利用调试信息的调试器。有一些 GUI GDB 前端,比如https://www.gdbgui.com,可以比命令行 GDB 更容易使用。
但是也请参见如何从 GCC/clang 汇编输出中去除“噪音”?,以了解有关如何查看 C 如何编译为汇编的更多信息。
我没有使用过 radare2。我认为它具有针对没有源代码的故意混淆可执行文件的功能,这与使用普通编译器编译自己的 C 程序相反。

2
公平地说,RE类型的工具提供的许多功能对于探索非混淆编译二进制文件也非常有用。人们也可以将优化后的二进制文件视为一种混淆方式:)。话虽如此,我曾经尝试过使用Radare2,但从未能够熟练掌握。学习曲线非常陡峭。 - BeeOnRope

4
我会推荐使用Radare2,因为它比GDB更清晰,对于初学者来说更容易入手;)

1
谢谢,现在我可以使用Radare2开始逆向工程了。谢谢 :) - MP13
1
GDB对于初学者来说是最好的选择。而Radare2则非常复杂。 - Parampreet Rai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接