我正在撤销win32应用。
问题:
调试prog时。我发现计数器一旦跳到地址0x0043D4A0。 (这是一个函数入口点)。
0043D4A0 51 PUSH ECX
0043D4A1 8B51 04 MOV EDX,DWORD PTR DS:[ECX+4]
0043D4A4 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C]
0043D4A8 3BC2 CMP EAX,EDX
0043D4AA 890C24 MOV DWORD PTR SS:[ESP],ECX
0043D4AD 7D 06 JGE SHORT PEiD.0043D4B5
0043D4AF 32C0 XOR AL,AL
0043D4B1 59 POP ECX
现在我想知道如何在使用windbg跳转到这一点0x0043D4A0之前获取先前指令的获取地址。因此,我可以从这个函数的调用位置进行跟踪。
先谢谢,
答案 0 :(得分:3)
答案 1 :(得分:1)
每当发生调用指令时,在控制转移到被调用函数之前,返回地址被立即压入堆栈。返回地址是ESP寄存器中的4个字节。在@ESP上运行dd命令,然后对@ESP上的值运行ub命令。这将从返回地址向后反汇编,这将为您提供在紧接呼叫之前发生的一系列指令。