查找程序入口
查找程序入口
win32控制台程序查找程序入口
一、调用特征
main
函数被调用前要先调用的函数如下
GetVersion()
_heap_init()
GetCommandLineA()
_crtGerEnviromentStringsA()
_setargv()
_setEnvp
_cinit()
经过编译器编译后,main
函数的参数变为3
个
调用过程:KERNEL32
→mainCRTStartup()
→main()
这些函数调用结束后就会调用main
函数,根据main
函数的调用特征,将3
个参数压入栈内作为函数的参数
二、查找
根据调用顺序和参数情况,总结如下方法:
-
找到一下函数中的一个
GetVersion() _heap_init() GetCommandLineA() _crtGerEnviromentStringsA() _setargv() _setEnvp _cinit()
-
在其后方寻找三个参数的
call
三、实验
-
寻找函数
OD会识别函数
找到
GetCommandLineA()
-
往下寻找三个参数的函数
发现三个
push
,并且CALL后平栈0xC
,初步判断为程序入口
跟进函数观察
确定为程序入口