调试程序依赖于另一个程序?

时间:2013-11-26 05:46:55

标签: gdb

我正在研究缓冲区溢出实验室,我真的需要知道是否有可能。在实验室中,我们有两个程序:bufbomb和hex2raw。 hex2raw程序将文本文件中的十六进制值转换为二进制值,以便在bufbomb中输入。在终端中,我使用此命令来测试我的解决方案:

cat level4.txt | ./hex2raw -n | ./bufbomb -u koppen2 -n

在gdb中有没有办法做到这一点?使用我创建的level4.txt十六进制值来查看我实际写入的位置将非常有帮助。例如。如果我实际上是在写回复地址。我知道返回地址的确切地址,因此很容易检查,但我无法弄清楚如何使gdb以我想要的方式工作。

2 个答案:

答案 0 :(得分:0)

假设您在没有调试此步骤的情况下首先使用程序hex2raw进行翻译已经足够好了,以下应该允许您将此临时输出通过管道传输到bufbomb(显然用-g编译)以进行调试:

cat level4.txt | ./hex2raw > tmp.txt
gdb ./bufbomb
set args "-u koppen2 -n `cat ./tmp.txt`"

(gdb命令行上发布的最后一行)。现在你在gdb中run(在设置断点等之后),所需的选项和数据应该被送到./bufbomb。请注意,有重点坟墓' (反引号)类型在cat语句周围打勾,而不是常规的:`,而不是'。

答案 1 :(得分:0)

gdb ./bufbomb
(gdb) r -u koppen2 -n <(cat level4.txt | ./hex2raw -n)

甚至

gdb --args ./bufbomb -u koppen2 -n <(cat level4.txt | ./hex2raw -n)
(gdb) r