在x86上使用GDB而不调试符号?

Joh*_*lin 16 debugging gdb symbols breakpoints

如何使用GDB调试32位x86处理器上没有调试符号的程序?检查函数参数,局部变量,解析指针对于知道如何操作很有用.目的并不是将它用于逆向工程,因为我有时候懒得安装调试符号,并且很高兴知道如何从gdb中获取一些基本信息.

Ran*_*e42 22

首先,你可以做;

gdb "whatever"
break __libc_start_main
r
Run Code Online (Sandbox Code Playgroud)

这将在libc的crt0代码中设置一个断点,并允许你在main之前断开,即使目标二进制文件被完全剥离.

这将使您在大多数用户代码之前到达断点处的运行状态.然后你可以单步,消解,转储内存等......到你心中的内容.

这适用于所有平台,您询问IA-32/x86无关紧要.

  • [这里有一个很好的教程](http://felix.abecassis.me/2012/08/gdb-debugging-stripped-binaries/),关于使用 GDB 调试剥离的二进制文件。 (2认同)

Dra*_*mon 7

如果没有调试符号,则只能在ASM级别进行调试.好吧,你得到的更多信息,但你不会走得很远,除非你了解一点ASM和编译器生成的代码.如果您知道自己在做什么,这将让您对局部变量等进行简单的检查.

如果你有源代码,那么重新编译它会容易得多.