逆向编程-入口地址了解

程序在进行入口函数地址执行之前,先将执行下列函数,为程序的运行准备环境。入口函数地址有三个参数,分别为命令行参数个数,命令参数信息和环境变量信息,main函数作为启动三个参数的唯一函数。

main函数被调用前先要调用的函数如下:
getversion();
获取当前运行平台的版本号。控制台程序运行在Windows模拟的dos下,因此这里获取的版本好为ms-dos的版本信息。
_heap_init();
用于初始化堆栈空间。在函数实现中使用HeapCreate申请堆空间,申请空间的大小由_heap_init传递的参数决定。_sbh_heap_init函数用于初始化堆结构信息。
GetCommandLine();
获取命令行参数信息的首地址。
_crtGetEnvironmentStringA();
获取环境变量信息的首地址。
_setargv();
此函数根据getcommandLineA获取命令行参数信息的首地址并进行参数分析,将分离的参数的个数保存在全局变量_argc中,将分析的每个命令行参数的首地址放在数组中,并将这个字符串指针的首地址保存在全局变量_argv中。
_setenvp();
此函数根据_crtGetEnvironmentStringA函数获取环境变量信息的首地址并进行分析,将得到命令行参数的个数,以及命令行参数信息。
_cinit();
用于将全局数据和浮点寄存器的初始化。全局对象和IO流等的初始化都是通过这个函数实现的。利用函数_inittern进行数据链初始化,这个函数由两个参数组成,类型为“_PVFV*",这是一个函数指针数组,其中保留了每个初始化函数的地址。初始化函数的类型为_PVFV.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值