【发布时间】:2015-10-05 05:44:43
【问题描述】:
我对汇编很陌生 - 我们上周在课堂上学会了如何阅读它。我正在处理 pset 并卡住了。 pset 的目的是能够弄清楚每个阶段的汇编代码在做什么,并为程序提供正确的输入,使其不会失败。我想出了第一阶段,但我只是不确定如何接近第二阶段。以下只是代码的一部分,但对我正在查看的内容有所了解。
<redacted>
“引爆炸弹”导致程序失败。现在我在调用“爆炸炸弹”之前设置断点,在调用“read_six_numbers”之前,并使用 info register & stepi 以及 print 语句来尝试查看程序这一部分的正确输入是什么。但是,我真的不确定如何解决这个问题。使用 info register 不会给出任何 6 个数字的序列,我真的不确定这是否是我应该寻找的。p>
由于这是一个 pset,我将在提交它时将此链接添加到我的 pset 自述文件中,我非常感谢对直接解决方案的解释,因为在这部分之后还有更多阶段我必须解决并被介绍给使用 gdb 解决此类问题的技术将非常非常有用。
【问题讨论】:
-
查看 gdb
x(检查)命令。这将允许您提前查看给定数量的值。例如x/8x 0x400500将允许您查看从内存地址0x400500开始的接下来的8 个十六进制值。除此之外,您似乎使用的是正确的工具。 -
感谢您指出这一点!我肯定会更深入地研究它。我已经查看了一些代码,并考虑了我希望 GDB 停止查看值的不同位置,尤其是在比较点处,因为我可能会暴露程序期望的值。