二进制安全_程序的入口

Posted klmyoil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制安全_程序的入口相关的知识,希望对你有一定的参考价值。

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

 

以上是关于二进制安全_程序的入口的主要内容,如果未能解决你的问题,请参考以下文章

iOS字符串安全

二进制安全学习路线(转)

20款安全测试工具为程序安全保驾护航

存储在文件系统中的基于反应本机的应用程序中敏感的大型二进制数据的安全风险?

《有趣的二进制:软件安全与逆向分析》读书笔记:自由控制程序运行方式的编程技巧

二进制安全:经典栈溢出手法笔记总结