摘要 | 第5-6页 |
abstract | 第6-7页 |
第一章 绪论 | 第11-15页 |
1.1 研究背景及意义 | 第11页 |
1.2 国内外研究现状 | 第11-13页 |
1.3 主要研究内容和创新点 | 第13-14页 |
1.4 论文组织结构 | 第14-15页 |
第二章 逆向与反逆向工程 | 第15-22页 |
2.1 逆向工程 | 第15-16页 |
2.1.1 逆向工程的主要分析方法 | 第16页 |
2.1.2 控制流图 | 第16页 |
2.2 反逆向工程 | 第16-20页 |
2.2.1 反逆向工程技术 | 第17页 |
2.2.2 代码混淆技术 | 第17-20页 |
2.2.3 不透明谓词 | 第20页 |
2.2.3.1 不透明谓词的定义 | 第20页 |
2.2.3.2 常见的不透明谓词生成方法 | 第20页 |
2.3 本章小结 | 第20-22页 |
第三章 基于Dalvik字节码的控制流图构建 | 第22-35页 |
3.1 Smali语法介绍 | 第22-23页 |
3.2 基本块及结构块的识别 | 第23-33页 |
3.2.1 Smali基本块的识别 | 第25-26页 |
3.2.2 Smali结构块的识别 | 第26-33页 |
3.2.2.1 If结构块的识别 | 第26-29页 |
3.2.2.2 Switch结构块的识别 | 第29-30页 |
3.2.2.3 循环结构块的识别 | 第30-31页 |
3.2.2.4 Try_catch结构块的识别 | 第31-33页 |
3.3 基于Smali代码的控制流图构建模块 | 第33-34页 |
3.4 本章小结 | 第34-35页 |
第四章 面向Android平台的控制流混淆技术研究 | 第35-51页 |
4.1 混淆方案设计 | 第35-38页 |
4.2 面向Android平台的混淆算法研究 | 第38-46页 |
4.2.1 控制流插桩 | 第38-40页 |
4.2.2 不可规约化流图 | 第40-42页 |
4.2.3 平展控制流 | 第42-46页 |
4.2.3.1 控制流平展化 | 第42-44页 |
4.2.3.2 改进的控制流平展化 | 第44-46页 |
4.3 寄存器类型冲突及解决方案 | 第46-50页 |
4.4 本章小结 | 第50-51页 |
第五章 系统原型的设计与实现 | 第51-70页 |
5.1 系统框架设计 | 第51-53页 |
5.2 Smali分析模块的实现 | 第53-57页 |
5.2.1 Smali基本块的存储 | 第53-54页 |
5.2.2 Smali结构块的存储 | 第54-57页 |
5.2.2.1 If结构块的识别存储 | 第54-55页 |
5.2.2.2 Switch结构块的识别存储 | 第55-56页 |
5.2.2.3 循环结构块的识别存储 | 第56-57页 |
5.2.2.4 Try_catch结构块的识别存储 | 第57页 |
5.3 混淆模块的实现 | 第57-65页 |
5.3.1 混淆核心模块的实现 | 第57-62页 |
5.3.1.1 控制流插桩模块的实现 | 第57-58页 |
5.3.1.2 不可规约化流图模块的实现 | 第58-59页 |
5.3.1.3 平展控制流模块的实现 | 第59-62页 |
5.3.2 混淆管理层模块的实现 | 第62-63页 |
5.3.3 混淆辅助模块的实现 | 第63-65页 |
5.4 Smali文件重组模块实现 | 第65页 |
5.5 寄存器类型冲突解决模块的实现 | 第65-69页 |
5.5.1 寄存器类型推导技术实现 | 第65-68页 |
5.5.2 寄存器隔离技术的实现 | 第68-69页 |
5.6 本章小结 | 第69-70页 |
第六章 评估与分析 | 第70-75页 |
6.1 测试环境 | 第70页 |
6.2 混淆工具功能测试 | 第70-71页 |
6.2.1 测试目的及标准 | 第70页 |
6.2.2 测试用例设计 | 第70-71页 |
6.2.3 测试结果说明 | 第71页 |
6.3 混淆深度阈值分析与实验 | 第71-72页 |
6.4 混淆工具的性能分析与测试 | 第72-74页 |
6.4.1 代码长度 | 第72-73页 |
6.4.2 时间开销 | 第73-74页 |
6.4.3 语义复杂度 | 第74页 |
6.5 本章小结 | 第74-75页 |
第七章 总结与展望 | 第75-77页 |
7.1 论文工作总结 | 第75页 |
7.2 后续工作展望 | 第75-77页 |
致谢 | 第77-78页 |
参考文献 | 第78-81页 |
攻读硕士学位期间取得的成果 | 第81-82页 |