逆向程序分析:Windows的main(),启动函数分析

本文探讨了Windows环境下C/C++程序的启动过程,详细解析了从mainCRTStartup到invoke_main的调用链,涉及启动函数的角色、全局变量初始化、内存管理和安全检查。通过调试实战,展示了如何跟踪进入点并理解不同类型的入口函数,如main()和Winmain()的区别。
摘要由CSDN通过智能技术生成

Windows main 启动函数分析

实验环境

Windows10
Vs2015
x86程序

启动函数

C/C++的运行时启动函数,该函数负责对C/C++运行库进行初始化。

启动函数的作用

检索指向新进程的命令行指针、检索指向新进程的环境变量指针、全局变量初始化、内存初始化等。

当所有的初始化操作完成之后,启动函数会调用应用程序的进入点函数。

调试实战

我们写一个简单的main函数,然后F5进入调试。

在这里插入图片描述

mainCRTStartup()

这个函数调用了__scrt_common_main(),我们直接来看它。

__scrt_common_main()

发现这个函数主要在做,GS和SEH检查,这俩个检查主要是防止内存溢出的,想要了解的可以进一步了解一下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DIZhl3mz-1634980724377)(C:\Users\11073\AppData\Roaming\Typora\typora-user-images\image-20211023170621872.png)]

__scr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值