1625-5 王子昂 总结《2017年5月16日》 【连续第227天总结】
A. 逆向分析技术 启动函数和函数的识别
B. 启动函数:
在编写Win32应用程序时,都必须在源码里实现一个WinMain函数。但Windows程序执行并不是从WinMain函数开始的,首先被执行的是启动函数相关代码,这段代码是编译器生成的。启动代码完成初始化进程,再调用WinMain函数。
所有的启动函数的作用基本都是相同的:检索指向新进程的命令行指针,检索指向新进程的环境变量指针,全局变量初始化,内存堆栈初始化等。
当进入点返回时,启动函数便调用C运行库的exit函数,将返回值传递给它,进行一些必要处理,最后调用系统函数ExitProcess退出。
在分析程序过程中,启动代码可以略过,直接将重点放到WinMain函数体内。
函数:
程序都是由不同功能的函数(子程序、过程或类似概念的东西)组成的。
一个函数有如下几部分:函数名、入口参数、返回值和函数功能。
函数识别:
程序中通过调用程序调用函数,而在函数执行完后又返回调用程序继续执行。
为了能够顺利返回调用程序,需要保存返回地址。
大多数情况下,使用CALL和RET指令来完成这件事。
CALL在跳向函数之前,将当前指令的内存地址压入栈中
RET通常表示函数结束,从栈中读出调用程序的地址,继续执行
C.明日计划
逆向函数的参数和返回值