摘要 | 第4-5页 |
ABSTRACT | 第5-6页 |
第一章 引言 | 第9-15页 |
1.1 研究背景与意义 | 第9-10页 |
1.2 国内外研究现状 | 第10-11页 |
1.2.1 代码反混淆方法 | 第10-11页 |
1.2.2 多执行路径构造方法 | 第11页 |
1.3 本文的研究内容 | 第11-12页 |
1.4 论文组织结构与章节安排 | 第12-15页 |
第二章 代码混淆与二进制代码逆向分析 | 第15-29页 |
2.1 代码混淆技术 | 第15-25页 |
2.1.1 控制流平展 | 第15-16页 |
2.1.2 代码变形 | 第16-17页 |
2.1.3 虚拟化混淆 | 第17-21页 |
2.1.4 壳 | 第21-22页 |
2.1.5 API混淆 | 第22-25页 |
2.2 二进制代码逆向分析 | 第25-27页 |
2.2.1 静态分析 | 第25-26页 |
2.2.2 动态分析 | 第26-27页 |
2.2.3 符号执行 | 第27页 |
2.3 本章小结 | 第27-29页 |
第三章 一种基于语义的二进制代码反混淆方法 | 第29-45页 |
3.1 SeeAD方法综述 | 第29-30页 |
3.2 语义相关指令识别方法 | 第30-34页 |
3.2.1 动态污点分析 | 第31-32页 |
3.2.2 控制依赖分析 | 第32-34页 |
3.3 低开销的多执行路径构造方法 | 第34-37页 |
3.3.1 路径构造 | 第34-35页 |
3.3.2 异常恢复机制 | 第35页 |
3.3.3 多执行路径构造方法的分析 | 第35-37页 |
3.4 内存监视与代码注入相结合的API反混淆方法 | 第37-41页 |
3.4.1 Hook API函数 | 第38-40页 |
3.4.2 代码注入 | 第40-41页 |
3.4.3 被注入进程的执行过程 | 第41页 |
3.5 语义无关指令剔除 | 第41-42页 |
3.6 SeeAD方法的有效性分析 | 第42-44页 |
3.6.1 语义一致性分析 | 第42-44页 |
3.6.2 性能分析 | 第44页 |
3.7 本章小结 | 第44-45页 |
第四章 基于语义的二进制代码反混淆系统的设计与实现 | 第45-55页 |
4.1 系统模块设计 | 第45-47页 |
4.2 关键数据结构 | 第47-49页 |
4.3 关键算法设计 | 第49-53页 |
4.3.1 动态污点分析算法 | 第50-51页 |
4.3.2 控制依赖分析相关的算法 | 第51-53页 |
4.4.3 多执行路径构造算法 | 第53页 |
4.4 本章小结 | 第53-55页 |
第五章 系统实验与分析 | 第55-65页 |
5.1 反混淆效果分析 | 第55-59页 |
5.2 多执行路径效果分析 | 第59-60页 |
5.3 恶意软件脱壳 | 第60-63页 |
5.4 本章小结 | 第63-65页 |
总结与展望 | 第65-67页 |
1 总结 | 第65-66页 |
2 展望 | 第66-67页 |
参考文献 | 第67-71页 |
致谢 | 第71-73页 |
攻读硕士学位期间取得的科研成果 | 第73页 |