摘要: 问题来源: stdcall类型函数调用,参数倒序入栈,第一个参数最后入栈,函数内部访问第一个参数时经常看到用[ebp + $08]表示,ebp通常来自esp,即函数首部经常看到的push ebp, mov ebp, esp,为什么栈顶偏移$08才是第一个参数呢?按道理说第一个参数最后入栈,栈顶不应该就是第一个参数么?事实并非如此...问题探索与解答: 函数1:1 function add:Integer;stdcall;2 begin3 Result :=10;4 end;调用该函数,观察汇编代码:(注意EIP寄存器变化)0044D944 E8F3FFFFFF call a... 阅读全文
posted @ 2012-02-20 10:46 书中翱翔 阅读(1647) 评论(0) 推荐(0) 编辑