170516 逆向-启动函数和函数识别

来源:互联网 发布:linux 查看死机日志 编辑:程序博客网 时间:2024/06/03 05:19

1625-5 王子昂 总结《2017年5月16日》 【连续第227天总结】

A.逆向分析技术 启动函数和函数的识别

B.启动函数:

在编写Win32应用程序时,都必须在源码里实现一个WinMain函数。但Windows程序执行并不是从WinMain函数开始的,首先被执行的是启动函数相关代码,这段代码是编译器生成的。启动代码完成初始化进程,再调用WinMain函数。

所有的启动函数的作用基本都是相同的:检索指向新进程的命令行指针,检索指向新进程的环境变量指针,全局变量初始化,内存堆栈初始化等。

当进入点返回时,启动函数便调用C运行库的exit函数,将返回值传递给它,进行一些必要处理,最后调用系统函数ExitProcess退出。

在分析程序过程中,启动代码可以略过,直接将重点放到WinMain函数体内。

函数:

程序都是由不同功能的函数(子程序、过程或类似概念的东西)组成的。

一个函数有如下几部分:函数名、入口参数、返回值和函数功能。

函数识别:

程序中通过调用程序调用函数,而在函数执行完后又返回调用程序继续执行。

为了能够顺利返回调用程序,需要保存返回地址。

大多数情况下,使用CALL和RET指令来完成这件事。

CALL在跳向函数之前,将当前指令的内存地址压入栈中

RET通常表示函数结束,从栈中读出调用程序的地址,继续执行


C.明日计划

逆向函数的参数和返回值

原创粉丝点击