探索C语言的main()函数的入口地址,首先要编译连接。
在xp系统中,如下操作:
**
- 按f3,test.c文件的路径,将test.c中的源代码读入到tc.exe中;
- 接着,按下f10,将option中的directory全部删掉,如下图所示;
- 进入链接阶段:在compile中,选择link exe开始链接,如下图所示,这一步需要很多.obj文件,放入相同的路径下。
最后成功生成test.exe文件
编译一个程序需要前人写好的很多文件,如下图所示,最终才能生成.exe文件。
现在,寻找Main函数的入口地址。
将程序载入到dos,并且链接成功后,按下U,开始找到自己写的程序,就可以找到main的入口地址。
问题是:根据上面的图,判断哪里是main函数的入口地址,这需要根据函数调用的进栈出栈规则进行判断(在调用一个函数时,首先将这个函数地址入栈保存,等这个函数ret后,再从栈中弹出,继续向下执行),可以判断main的入口地址是:1FA.
找到Main函数的入口地址后,发现下面还有两行代码,push bp,mov bp,sp是什么作用呢,后边继续写。