当前课程知识点:计算机病毒分析(慕课) > 第五章、x86反汇编 > 5.1 逆向工程 > 5.1 逆向工程
5.1知识点:逆向工程
1.计算机系统的抽象层次
硬件
微指令
机器码
低级语言
高级语言
解释型语言
硬件:硬件层是唯一一个物理层,由电子电路组成。
XOR门、AND门、和NOT门等逻辑运算器的复杂组合,称为数字逻辑。
由于物理特性,硬件很难被软件操作。
微指令:微指令层又称为固件。微指令只能在为它设计的特定电路上执行。这层由一些微指令构成,它们从更高的机器码层翻译而来,提供了访问硬件的的接口。
病毒分析时,通常不关心微指令,因为微指令是为特定的计算机硬件设计的。
机器码:机器码层由操作码组成,操作码是一些十六进制形式的数字,用于告诉处理器你想它做什么。
机器码一般由多条微指令实现,这样底层硬件就能实际执行代码了。而机器码本身又由高级语言编写的程序编译而来。
高级语言:大部分程序员使用高级语言。
高级语言对机器层做了很强的抽象,从而可以轻松地使用程序逻辑和流控制机制。
高级语言包括C、C++等。它们被一个编译器经过称为编译的过程转化为机器码。
解释型语言:解释型语言位于最高层。
很多程序员使用诸如C#、Perl、NET、Java等解释语言。
这一层的代码不会被编译为机器码。而是被翻译为了字节码。
低级语言:低级语言是计算机体系结构指令集的人类易读版本,主要是汇编语言。
恶意代码分析师使用这一层,因为对人来说,机器码太难理解了。
我们使用反汇编器来生成低级语言的文本,这些文本由一些简单的助记符组成,如mov和jmp。汇编语言存在一些不同的语法。
2.逆向工程
恶意代码存储在磁盘上时,通常是机器码层的二进制形式。前面提到,机器码是一种计算机可以高效执行的代码形式。而我们的反汇编恶意代码,就是使用反汇编器,将恶意代码二进制文件作为输入,输出汇编语言代码。
*不同的CPU,汇编指令是不一致的
x86 – 32-bit Intel 最常用的指令集
x64 – 64-bit Intel
SPARC, PowerPC, MIPS, ARM
Windows 、Linux操作系统运行在x86 or x64指令集上
x64 系统可以运行x86 的程序
*大部分计算机病毒是针对的x86指令集
-1.1 计算机病毒的定义和类型
-1.2 计算机病毒分析的目标
-1.3 计算机病毒分析技术概述
-第一单元习题
-2.1 杀毒软件
--2.1 杀毒软件
-2.2 哈希值:恶意代码指纹
-2.3 特征字符串
-2.4 加壳与混淆
-2.5 PE文件格式
-2.6 链接库与函数
-第二单元习题
-实验报告
-3.1 虚拟机的结构
-3.2 创建虚拟机
-3.3 使用虚拟机
-第三单元习题
-4.1 沙箱分析
--4.1 沙箱分析
-4.2 运行病毒和进程监视
-4.3 Process Explorer和Regshot
--4.3 Process Explorer和Regshot
-4.4 网络模拟
--4.4 网络模拟
-第四单元习题
-实验报告
-5.1 逆向工程
--5.1 逆向工程
-5.2 x86体系结构
-5.3 CPU寄存器
-5.4 汇编指令
--5.4 汇编指令
-5.5 栈操作
--5.5 栈操作
-第五单元习题
-6.1 加载可执行文件
-6.2 IDA Pro窗口
-6.3 IDA Pro 导航
-6.4 交叉引用
--6.4 交叉引用
-6.5 函数分析
--6.5 函数分析
-6.6 使用图形选项
-6.7 增强反汇编
-第六单元练习
-实验报告
-7.1 识别汇编中的C语言代码结构
-7.2 识别if分支结构
-7.3 识别循环
--7.3 识别循环
-7.4 识别函数调用
-7.5 识别switch结构
-7.6 识别数组、结构体、链表
-第七单元练习
-实验报告
-8.1 Windows API
-8.2 Windows 注册表
-8.3 网络API
-8.4 跟踪病毒运行
-8.5 互斥量
--8.5 互斥量
-8.6 异常处理、模式、Native API
-第八单元练习
-实验报告
-9.1 调试器介绍
-9.2使用调试器
-9.3使用断点暂停执行
-9.4 断点类型
--9.4 断点类型
-9.5异常
--9.5 异常
-9.6调试器修改可执行文件
-第九单元练习
-10.1 Ollydbg加载恶意代码
-10.2 Ollydbg的窗口
-10.3 内存映射
-10.4 查看线程、栈、代码
-10.5 断点
--10.5 断点
-10.6加载DLL、跟踪
-10.7异常处理、修补
-10.8分析shellcode、协助功能
-10.9插件、脚本调试
-第十单元练习
-实验报告
-11.1驱动与内核代码
-11.2使用WinDbg
-11.3微软符号表
-11.4内核调试
-11.5Rootkit
-第十一单元作业
-12.1下载器、启动器和后门
-12.2远程控制和僵尸网络
-12.3登录凭证窃密器
-12.4存活机制和windows注册表
-12.5特洛伊木马化二进制文件
-12.6DLL加载顺序劫持
-12.7权限提升与用户态Rootkit
-第十二章练习
-13.1启动器与进程注入
-13.2进程替换
-13.3Hook注入
-13.4Detours与APC注入
-第十三单元练习
-14.1加密算法的目的和简单的加密算法
-14.2简单的加密策略
-14.3常见的加密算法
-14.4自定义加密
-14.5解密
--14.5 解密
-第十四单元练习
-期末考试