本文作者:Wu J (二进制逆向星球学员)
C语言中的函数
三个关键点:局部变量、参数、函数返回值
下面是示例程序:
#include "stdafx.h"
int Plus(int x, int y)
{
int z = 2;
return x+y+z; }
int main(int argc, char* argv[])
{
int r = Plus(3, 4);
return 0;
}
画堆栈图:
esp:栈顶
ebp:栈底
对于函数调用,先压入参数,再执行call
对于参数,从右向左依次压入堆栈(stdcall模式) 因此,本程式先压入4,再压入3
1.调用前的堆栈
2.PUSH 4 PUSH 3 向栈内压入4,esp -4,eip向