摘要 | 第4-5页 |
ABSTRACT | 第5-6页 |
目录 | 第7-9页 |
第一章 绪论 | 第9-13页 |
1.1. 课题背景 | 第9-11页 |
1.1.1. 软件安全背景 | 第9页 |
1.1.2. 代码混淆技术 | 第9-10页 |
1.1.3. Clang C++编译器简介 | 第10-11页 |
1.2. 课题研究内容与意义 | 第11-12页 |
1.3. 本文结构安排 | 第12-13页 |
第二章 C++代码混淆工具需求分析 | 第13-19页 |
2.1. C++代码混淆需求 | 第13-15页 |
2.1.1. 综述 | 第13页 |
2.1.2. 控制流保护 | 第13-14页 |
2.1.3. 对C++语法的支持度 | 第14-15页 |
2.2. 混淆工具需求 | 第15-19页 |
2.2.1. 源代码解析与重写 | 第15-16页 |
2.2.2. 算法可扩展 | 第16-17页 |
2.2.3. 混淆过程可定制 | 第17-18页 |
2.2.4. 用户选项 | 第18-19页 |
第三章 系统总体设计 | 第19-22页 |
3.1. 总体框架 | 第19页 |
3.2. 模块划分 | 第19-20页 |
3.3. Clang库依赖 | 第20-22页 |
第四章 系统详细设计与实现 | 第22-33页 |
4.1. 驱动模块SourceCodeDriver | 第22-26页 |
4.1.1. 模块结构设计 | 第22-23页 |
4.1.2. 代码解析类SourceParser | 第23-24页 |
4.1.3. 代码重写类Rewriter | 第24-26页 |
4.2. 算法调度模块AlgorithmManager | 第26页 |
4.3. 算法模块Algorithm | 第26-30页 |
4.3.1. 类设计 | 第27页 |
4.3.2. 通用算法工具集 | 第27-30页 |
4.4. 用户选项模块OptionManager | 第30-33页 |
4.4.1. 驱动参数 | 第31页 |
4.4.2. 算法调度参数 | 第31-32页 |
4.4.3. 算法参数 | 第32页 |
4.4.4. 通用选项 | 第32-33页 |
第五章 混淆算法设计与实现 | 第33-62页 |
5.1. 控制流压扁算法 | 第33-54页 |
5.1.1. 抽象算法 | 第33-36页 |
5.1.2. C++特性的影响 | 第36-40页 |
5.1.3. 作用于C++的算法 | 第40-54页 |
5.2. 不透明谓词算法 | 第54-62页 |
第六章 系统测试与分析 | 第62-68页 |
6.1. 测试项目 | 第62-63页 |
6.2. 可用性和稳定性 | 第63-65页 |
6.2.1. 对C++语法的支持度 | 第63-65页 |
6.2.2. 对C++项目抽样测试 | 第65页 |
6.3. 混淆强度 | 第65-66页 |
6.4. 混淆开销 | 第66-68页 |
第七章 结语 | 第68-70页 |
7.1. 工作总结 | 第68页 |
7.2. 存在的问题及工作展望 | 第68-70页 |
7.2.1. 混淆算法存在的问题 | 第68-69页 |
7.2.2. 不支持C++新版的语法 | 第69页 |
7.2.3. 算法的扩展方式 | 第69-70页 |
参考文献 | 第70-72页 |
致谢 | 第72-73页 |
攻读学位期间发表的学术论文 | 第73页 |