第1章 绪论
1.1 软件逆向分析
1.1.1 与安全相关的逆向分析
1.1.2 针对软件开发的逆向分析
1.1.3 本书的主要内容
1.2 软件逆向分析的历史
1.3 软件逆向分析的各个阶段
1.3.1 文件装载
1.3.2 指令解码
1.3.3 语义映射
1.3.4 相关图构造
1.3.5 过程分析
1.3.6 类型分析
1.3.7 结果输出
1.4 逆向分析框架
1.4.1 静态分析框架
1.4.2 动态分析框架
1.4.3 动静结合的分析框架
第2章 指令系统
2.1 指令系统概述
2.2 机器指令与汇编指令
2.2.1 机器指令
2.2.2 汇编指令
2.3 LA.6 4体系结构的特点
2.3.1 显式并行机制_
2.3.2 IA.64微处理器体系结构
2.4 指令格式
本章 小结
第3章 可执行文件
3.1 可执行文件概述
3.2 可执行文件格式
3.2.1 ELF文件的3种主要类型
3.2.2 文件格式
3.2.3 数据表示
3.2.4 文件头
3.2.5 节
3.2.6 字符串表
3.2.7 符号表
3.3 一个简单的ELF文件分析
3.3.1 文件头分析
3.3.2 section信息分析
本章 小结
第4章 反汇编技术
4.1 反汇编技术简介
4.2 反汇编算法流程
4.2.1 线性扫描算法
4.2.2 递归扫描算法
4.3 反汇编工具的自动构造方法
4.3.1 自动构造工具
4.3.2 利用自动构造方法构建IA-64反汇编器
4.4 常用反汇编工具介绍
4.4.1 IDAPro介绍
4.4.2 ILDasm介绍
本章 小结
第5章 指令的语义抽象
5.1 语义描述语言
5.1.1 SSL简介
5.1.2 SSL文法的设计
5.1.3 SSL文法的扩展
5.2 中间表示
5.2.1 低级中间表示(RTL)
5.2.2 高级中间表示(HRTL)
5.3 指令的语义抽象技术
5.3.1 语义抽象技术简介
5.3.2 指令语义的SSL描述
5.3.3 指令语义的高级模拟
5.4 基于SSL的IA.64指令语义抽象技术
5.4.1 IA.64的体系结构特征描述
5.4.2 整数指令的语义描述
5.5 基于模拟的IA.64指令语义抽象技术
5.5.1 IA.64浮点特性
5.5.2 浮点指令的语义模拟
5.5.3 浮点并行指令的语义模拟
本章 小结
第6章 基本数据类型分析
6.1 数据类型分析的相关概念
6.1.1 ITA系统中数据类型分析的依据
6.1.2 ITA系统中基本数据类型分析的重要性
6.1.3 ITA系统中基本数据类型和高级C语言数据类型
6.2 基于指令语义的基本数据类型分析
6.2.1 &和*运算符
6.2.2 普通算术指令的描述
6.2.3 内存读写指令
6.2.4 转移指令
6.3 基于过程的数据类型分析技术
6.3.1 变量重命名技术
6.3.2 变量类型推导的规则
6.3.3 格理论在变量类型推导中的应用
本章 小结
第7章 高级控制流恢复
7.1 控制流恢复概述
7.1.1 控制语句在中间代码中的组织特点
7.1.2 基本块的划分及控制流图的构建
7.1.3 控制流恢复术语
7.2 高级控制流恢复分析
7.2.1 可结构化和不可结构化循环子图
7.2.2 可结构化和不可结构化two-way条件子图
7.2.3 可结构化和不可结构化n-way条件子图
7.2.4 多重结构头节点子图
7.3 结构化算法介绍
7.3.1 对流图各节点进行正向后序遍历
7.3.2 对流图各节点进行反向后序遍历
7.3.3 直接后必经节点的确定
7.3.4 结构化含有条件判断的子图
7.3.5 使用Pr定理构建循环子图结构
7.4 可能出现的问题与解决办法
本章 小结
第8章 过程恢复技术
8.1 相关知识简介
8.1.1 调用约定
8.1.2 控制流分析及数据流分析
8.1.3 过程抽象
8.1.4 过程分析的目标
8.2 库函数恢复
8.2.1 内嵌库函数的恢复
8.2.2 动态链接库函数的恢复
8.3 用户自定义函数分析
8.3.1 函数名识别
8.3.2 用户自定义函数的参数分析
8.3.3 用户自定义函数的返回值分析
本章 小结
第9章 部分编译优化效果的消除
9.1 谓词执行效果的消除
9.1.1 谓词执行和IF转换
9.1.2 简单谓词消除策略
9.1.3 谓词分析
9.1.4 谓词消除
9.2 投机优化的消除
9.2.1 IA.64中投机的方式及实现方法
9.2.2 反投机的目的和算法设计
9.3 软件流水优化的消除
9.3.1 软件流水机制
9.3.2 IA.64软件流水循环
9.3.3 软件流水消除技术
9.3.4 ITA系统中软件流水消除技术的实现
本章 小结
第10章 程序的调试与测试
10.1 常用程序调试工具
10.2 几种常用测试集
参考文献