在C中,如果你有一个函数返回“always”,你可以做同样的结果:
(gdb) p foo()
但是如果此函数总是返回随机结果,那么如何在不使用变量的情况下打印THAT值。其他细节,如果你没有该函数的调试信息,它来自一个剥离的lib。
无法使用 (gdb) p myRandom()
,它会产生与应用程序使用的值不同的内容。
你可能会问:“你为什么要使用随机函数而不使用它的结果”,让我们说返回只是func所做的一件事。
答案 0 :(得分:2)
(gdb)p myRandom()
不能使用,它会产生与应用程序使用的值不同的东西。
大概你想检查在应用程序调用{{1}}的特定位置返回给应用程序的值。
您需要在紧跟myRandom()
之后的指令上设置断点,然后检查返回值的寄存器。例如,在CALL
上,该值会在i*86
寄存器中返回,因此您将执行eax
。
或者,在print $eax
上设置断点,然后执行myRandom()
命令(您不需要调试信息),然后检查返回寄存器。