方法一,3个push和堆栈平衡
设置函数入口设断点,打开程序到达断点后,一直按F8运行到类似下面的地方,F7步进查看是否是main函数。
push edi
push esi
push dword ptr ds:[eax]
call project1.D31040
add esp,C
如上,因为main函数的参数是3个,所以,在调用main函数之前一定会有3个参数入栈。
调用main函数后,要平栈,就需要add esp,C 这也是一个main函数的标志。
1,3个入栈
2,调用call--------main函数
3,栈顶指针+C
int main(int argc,char *argv[],char *envp[]){}
main函数的三个参数:
参数 含义
argc 用于存放命令行参数的个数
argv 是个字符指针的数组,每个元素都是一个字符指针,指向一个字符串,即命令行中的每一个参数
envp 也是一个字符指针的数组,这个数组的每一个元素是指向一个环境变量的字符指针