【发布时间】:2012-06-07 08:32:26
【问题描述】:
我只是在 OllyDbg 中学习汇编和调试技能,以便学习如何使用未记录的函数。现在我遇到了以下问题:
我有以下代码部分(来自 OllyDbg):
MOV EDI,EDI
PUSH EBP
MOV EBP,ESP
MOV EAX, DWORD PTR SS:[EBP+8]
XOR EDX,EDX
LEA ECX, DWORD PTR DS:[EAX+4]
MOV DWORD PTR DS:[EAX], EDX
MOV DWORD PTR DS:[ECX+4],ECX
MOV DWORD PTR DS:[ECX],ECX
MOV DWORD PTR DS:[EAX+C],ECX
MOV ECX, DWORD PTR SS:[EBP+C]
这是函数的开始,目标是找到数据结构。所以我发现它首先将 EBP 推入堆栈,然后将 ESP(当前堆栈指针)移动到 EBP,我认为它现在为函数定义了一个堆栈帧。现在教程说,在流行的布局中,第一个参数放在 [EBP+8],第二个放在 [EBP+C]
这是我不明白的。我怎么知道第一个参数放在 EBP+8 处?
希望有人可以帮助我! 谢谢!
【问题讨论】:
标签: assembly ollydbg stack-frame