0

我有一个 CS 项目,我需要散布炸弹(如果您听说过,那就是 Mr.Evil 炸弹),但是当我想为线条设置断点时,我遇到了 gdb 问题。在 gdb 中打开文件并尝试破坏 ata 随机行后,我遇到了这个问题:

 gdb bomb 
 (gdb) break 15
 No symbol table is loaded.  Use the "file" command.

此外,即使我使用“文件”命令,我也会得到

 "/auto/bunter_usr/bomb": not in executable format: File format not recognized

我意识到问题是因为我的教授在编译文件时没有使用 -g 标志。在我的情况下,有没有办法将断点设置为行?

4

2 回答 2

2

“/auto/bunter_usr/bomb”:不是可执行格式:文件格式无法识别
我意识到问题是因为我的教授没有使用 -g 标志

你的认识是不正确的。没有编译的可执行文件-g不会产生上述消息。

最有可能的是,您指向 GDB 的文件是一个 shell 脚本,它调用真正的可执行文件(可能在设置一些环境变量或添加一些命令行标志之后)。您想调试真正的可执行文件,而不是 shell 脚本。

于 2012-10-27T17:09:46.747 回答
1

您需要反汇编二进制文件并检查内存位置并为这些位置设置断点。

这是你要怎么做的:gdb> b *0x80456789

这是供参考的备忘单 http://csapp.cs.cmu.edu/public/docs/gdbnotes-ia32.pdf

于 2012-10-27T16:21:05.553 回答