GDB:什么指令称为帧?

时间:2014-10-25 06:50:19

标签: assembly gdb callstack

我对GDB和汇编有点新鲜。我试图对我参与的单人游戏进行逆向工程,试图让教练纯粹为了学习体验。我首先在Linux中使用了scanmem,但是内存中的值永远不会在同一个地方,所以我每次玩的时候都必须找到它,这至少可以说是耗费时间(特别是当我试图跟踪很多变量时) )。

所以,我现在正在试图弄清楚如何在运行时准确地确定特定变量的位置(我尝试禁用ASLR无济于事)。这导致我加入了GDB。我现在使用memscan找到了我关注的变量,并成功地在GDB中设置了一个观察点。现在,值会改变程序停止,我可以在GDB中使用它。由于这不是一个开源程序,我坚持分析汇编指令而不是源文件。

此时我已经检查了帧堆栈,我看到帧0x000000000050d338称为帧0x000000000050d0fc。但是,我如何知道调用帧中的哪个确切指令触发了对新帧的调用?我试图向后工作,这样我就可以通过分析函数参数,将0x1a76f5e8(或对它的一些指针引用)的变量的原点跟踪到内存中的某个静态位置。我也尝试使用memscan来简单地找到写入内存的地址 - 这将是指向该变量/对象的指针无济于事(很可能它是一个类的成员并且处于内存结构的中间)我想象。)

如何确定调用当前帧的调用位置?

0 个答案:

没有答案