目录
- 大脉络
- 软件的构成
软件逆向是一种技术手段,它能达成的目的:
- 分析该软件的漏洞;
- 分析这个软件,想作为跳板获取其他软件、系统的更高权限;
- 分析该软件的安全性、可靠性等;
- 分析该软件的构成;
下面粗浅的进行软件逆向入门,将选择经典的x86平台下的软件来进行分析。
主要梳理系统和软件的层次功能区别,最后以一个典型案例结尾。
大脉络
- CPU
- 寄存器,各寄存器的运行逻辑
- 系统
- 汇编指令,各指令的运行逻辑
- 编程语言指令,各指令的运行逻辑
软件的构成
x86的windows系统下的软件,是以一个.exe文件去执行的,一个.exe 通常是一个PE格式的文件。
PE的定义:
PE是一个可移植的可执行文件(Executable File)的蓝本,系统在创建一个进程时,就会依照这个蓝本按部就班执行下去。
接着问 什么是可执行文件?
可执行文件是为进程创建所服务的,进程在运行之前,需要将该进程所需要运行的代码、该进程支持的相关数据等一个进程创建所必须的信息以某种格式存储在磁盘中,而这种格式就是可执行文件格式。
这个文件格式由操作系统直接加载执行,系统运行程序都是以创建进程的方式。
简单来说就是在进程创建之前会将该进程创建所需要的信息以可执行文件格式存储在磁盘中,同样也可以说进程创建所需要的信息会在可执行文件中详细记录。
有了该进程的详细记录,那么操作系统在创建进程的时候就可以根据该进程的详细记录来创建进程,也就是说可执行文件是进程创建的前身。
但可执行文件和进程不能完全划等号,因为进程是动态的,是会根据你的操作变化而变化;
而可执行文件是静态的,是没有执行权的。
PE结构可以大致分为如下5部分:
- DOS部分
- PE文件头
包含文件的基本信息,如CPU类型、入口点地址、所需的子系统等。 - 节表(块表)
描述文件中各个“节”或“区段”的表。节是实际存放代码、数据、资源等内容的地方(如 .text, .data, .rsrc) - 节数据(块数据)
- 调试信息
打开一个.exe,里面都是用二进制数据记录了各个部分的信息,5个部分如同5个部门各司其职,有专门的符号去分割开。
...逆向可真是量大管饱呀.....(ㅎ-ㅎ;)