对于FPO形式的函数原形
push ebp
mov ebp,esp
mov edi,edi
//1.此函数的返回地址
_asm{
push eax
mov eax,[ebp+4]
mov ReturnAddress,eax
pop eax
}
//2.此函数上上层的返回址
_asm{
push eax
mov eax,[ebp]
//ebp的值与本Frame的最开始的ESP值一样
//本Frame最开始的ESP值就是上一Frame的EBP值
//因此这里取得了上一Frame的EBP值
//在这里就可以取得上上层,调用此函数的地址
mov eax,[eax+4]
mov ReturnAddress,eax
pop eax
}
以此可以类推
//3.此函数上3层返回址
_asm{
push eax
mov eax,[ebp]
mov eax,[eax]
mov eax,[eax+4]
mov ReturnAddress,eax
pop eax
}
转载于:https://blog.51cto.com/laokaddk/379333