寻找C程序main入口、全局变量、局部变量-创新互联

C程序

函数调用顺序为:KERNEL32!7c817077-mainCRTStartup-main
在这里插入图片描述
通常情况下,在调试程序的时候,往往会断在mainCRTStartuo这里。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、虚拟空间、营销软件、网站建设、施秉网站维护、网站推广。关于mainCRTStartup
  • mainCRTStartup和wmainCRTStartup是控制台环境下多字节编码和Unicode编码的启动函数
  • 而WinMainCRTStartup和wWinMainCRTStartup是windows环境下多字节编码和Unicode编码的启动函数
    mainCRTStartup:
    在这里插入图片描述
寻找main函数

main函数一共有三个参数,完整main函数如下:

int main(int argc,char *argv[],char *envp[]){}

这里的argv和envp对应mainCRTStartup里_setargv()和_setenvp()
无需关注三个参数具体细节,只需记住main函数具有三个参数。
打开程序
在这里插入图片描述
一步步往下看,直到
在这里插入图片描述
在进行call跳转函数前向堆栈压入了三个参数,虽说push个数不一定代表参数个数,但通过这一方法可以过滤不少信息。从函数跳转出来下一步就是add esp,0c;这是典型的堆栈外平衡,可以推测使用的是cdel。上面dword表示压入的数据是4个字节,平衡时采用0C,C/4=3,即参数个数。
代码:
在这里插入图片描述
步入call的函数:
在这里插入图片描述
发现出现0x160,并且发现将DS:[406030]赋值给EAX,并将EAX与160相加,最后又将EAX赋值回DS:[406030],可以推测406030是全局变量global的全局变量地址。
重新打开程序,寻找406030地址
在这里插入图片描述
发现在执行main函数前已经赋值,可以看见是小端序。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:寻找C程序main入口、全局变量、局部变量-创新互联
分享URL:http://myzitong.com/article/cseojc.html