【发布时间】:2011-01-04 04:19:22
【问题描述】:
我在 VC++ 中有以下代码
Func5(){ StackWalk(); }
Func4{ Func5();}
我是 x86 汇编语言的初学者。我试图找出 Func5() 的起始地址。我从它的堆栈帧中得到 Func5() 的返回地址。现在在这个返回地址之前应该有一个 CALL 语句。所以我提取了返回地址之前的字节。
有时就像E8 ff ff ff d8 这样的近距离通话。所以对于这个语句,我从函数的返回地址中减去偏移量 0x28 得到 Func5() 的基地址(它驻留在内存中的位置)。
问题是我不知道如何为间接 NEAR 调用计算此值。一段时间以来,我一直在尝试找出如何做到这一点。所以我提取了返回地址前的前 5 个字节,它们是 ff 75 08 ff d2 我认为这代表 CALL ECX (ff d2) 但我不确定。
如果有人能告诉我这是什么类型的 CALL 语句以及我如何从这种调用中计算函数的基地址,我将不胜感激。
【问题讨论】:
标签: assembly