二进制安全_程序的入口

1、程序的真正入口 

(1) main 或WinMain 是“语法规定的用户入口”,而不是“应用程序入口”。应用程序入口通常是启动函数。

通过VC6堆栈调用查看

(2) mainCRTStartup 和 wmainCRTStartup 是控制台环境下多字节编码和Unicode 编码的启动函数.
而WinMainCRTStartup 和wWinMainCRTStartup 是windows 环境下多字节编码和Unicode 编码的启动函数.

(3) 修改入口函数:项目右键->Setting

2、main 函数的识别:


main 函数被调用前要先调用的函数如下:

GetVersion() //获得操作系统版本
_heap_init() //初始化堆栈空间大小
GetCommandLineA() //获取命令行的参数
_crtGetEnvironmentStringsA()
_setargv()
_setenvp()
_cinit()

这些函数调用结束后就会调用main 函数,根据main 函数调用的特征,将3 个参数压入栈内作为函数的参数。

push 三个参数,add esp ,0C

猜你喜欢

转载自www.cnblogs.com/klmyoil/p/10980874.html