基于变形编译器的软件保护技术研究
摘要 | 第5-6页 |
abstract | 第6-7页 |
第一章 绪论 | 第11-16页 |
1.1 研究背景与意义 | 第11-13页 |
1.2 国内外研究现状 | 第13-15页 |
1.3 论文的主要研究内容 | 第15-16页 |
第二章 逆向工程与软件保护技术 | 第16-27页 |
2.1 逆向分析技术 | 第16-21页 |
2.1.1 反汇编算法 | 第17-19页 |
2.1.2 静态分析技术 | 第19-20页 |
2.1.3 动态分析技术 | 第20-21页 |
2.2 常用软件保护方法 | 第21-24页 |
2.2.1 序列号保护 | 第21-22页 |
2.2.2 硬件保护 | 第22页 |
2.2.3 软件加壳保护 | 第22-23页 |
2.2.4 网络验证保护 | 第23页 |
2.2.5 代码混淆保护 | 第23-24页 |
2.3 基于二进制混淆的软件保护方法 | 第24-26页 |
2.3.1 二进制混淆概述 | 第24-25页 |
2.3.2 二进制混淆的主要方法 | 第25页 |
2.3.3 对二进制混淆的评估 | 第25-26页 |
2.4 本章小结 | 第26-27页 |
第三章 混淆原型系统的关键技术研究 | 第27-51页 |
3.1 目标文件特性分离与提取技术 | 第27-33页 |
3.1.1 switch-case语句分离与提取 | 第30-31页 |
3.1.2 缓冲区检查语句的识别和处理 | 第31-32页 |
3.1.3 OBJ文件共享资源分离与提取 | 第32-33页 |
3.1.4 短字符串处理语句的识别与处理方法 | 第33页 |
3.2 系统函数随机编译 | 第33-35页 |
3.3 字符串隐匿技术 | 第35-38页 |
3.3.1 字符串加密 | 第36-38页 |
3.3.2 字符串解密 | 第38页 |
3.4 汇编指令膨胀技术 | 第38-43页 |
3.4.1 指令膨胀原理 | 第38-40页 |
3.4.2 膨胀模板设计 | 第40-43页 |
3.5 控制流扭曲技术 | 第43-50页 |
3.5.1 Jmp指令的变形方法 | 第43-45页 |
3.5.2 Call指令的变形方法 | 第45-47页 |
3.5.3 Ret指令的变形方法 | 第47-48页 |
3.5.4 JCC指令的变形方法 | 第48-50页 |
3.6 本章小结 | 第50-51页 |
第四章 二进制分析混淆原型系统的设计与实现 | 第51-70页 |
4.1 系统整体架构设计 | 第51-52页 |
4.2 对OBJ文件的解析模块 | 第52-56页 |
4.2.1 模块主要包含的数据结构 | 第52-54页 |
4.2.2 INS数据结构的设计 | 第54-56页 |
4.2.3 主要工作流程 | 第56页 |
4.3 随机编译模块 | 第56-58页 |
4.4 字符串加解密模块 | 第58-61页 |
4.5 汇编指令冗余膨胀模块 | 第61-65页 |
4.6 控制转移指令变形模块 | 第65-69页 |
4.7 本章小结 | 第69-70页 |
第五章 实验效果与分析 | 第70-84页 |
5.1 实验环境与测试用例 | 第70-71页 |
5.1.1 实验环境 | 第70页 |
5.1.2 测试用例 | 第70页 |
5.1.3 程序主界面 | 第70-71页 |
5.2 实验结果分析 | 第71-83页 |
5.2.1 反汇编器的测试与分析 | 第71-73页 |
5.2.2 随机编译测试与分析 | 第73-75页 |
5.2.3 字符串加密测试与分析 | 第75-77页 |
5.2.4 指令膨胀冗余测试与分析 | 第77-81页 |
5.2.5 控制转移指令变形测试与分析 | 第81-83页 |
5.3 本章小结 | 第83-84页 |
第六章 总结与展望 | 第84-86页 |
6.1 总结 | 第84-85页 |
6.2 展望 | 第85-86页 |
致谢 | 第86-87页 |
参考文献 | 第87-90页 |
攻读硕士学位期间取得的成果 | 第90-91页 |