摘要 | 第4-5页 |
ABSTRACT | 第5-6页 |
第一章 绪论 | 第9-15页 |
1.1 研究背景与意义 | 第9-10页 |
1.2 国内外研究现状 | 第10-11页 |
1.3 本文主要研究内容 | 第11-12页 |
1.4 本文组织结构 | 第12-15页 |
第二章 Android操作系统及其安全机制分析 | 第15-29页 |
2.1 Android应用程序结构和运行时环境 | 第15-21页 |
2.1.1 Android应用程序结构 | 第15-16页 |
2.1.2 Dalvik虚拟机运行时环境 | 第16-19页 |
2.1.3 ART虚拟机可执行文件结构 | 第19-21页 |
2.2 软件逆向攻击 | 第21-26页 |
2.2.1 逆向工程简介 | 第21-22页 |
2.2.2 常用逆向工具 | 第22-23页 |
2.2.3 反编译介绍 | 第23-24页 |
2.2.4 逆向攻击过程 | 第24-26页 |
2.3 代码混淆保护 | 第26-27页 |
2.3.1 代码混淆 | 第26页 |
2.3.2 评价标准 | 第26-27页 |
2.4 本章总结 | 第27-29页 |
第三章 基于bytecode混淆的Android应用保护方法 | 第29-45页 |
3.1 混淆方法概述 | 第29-31页 |
3.2 控制流平展 | 第31-34页 |
3.2.1 压扁控制流技术介绍 | 第31-32页 |
3.2.2 条件基本块分析以及混淆操作 | 第32-34页 |
3.3 分支路径混淆 | 第34-37页 |
3.4 数据流混淆 | 第37-38页 |
3.4.1 常量存储方式混淆 | 第37-38页 |
3.4.2 子函数返回值混淆 | 第38页 |
3.5 寄存器类型冲突及其解决 | 第38-43页 |
3.5.1 冲突问题产生的原因 | 第39-40页 |
3.5.2 指令集存储与修改 | 第40-41页 |
3.5.3 动态加载 | 第41-42页 |
3.5.4 代码自篡改技术 | 第42-43页 |
3.6 本章总结 | 第43-45页 |
第四章 原型系统的设计与实现 | 第45-53页 |
4.1 系统模块设计 | 第45-47页 |
4.2 关键数据结构 | 第47-48页 |
4.3 关键算法设计 | 第48-51页 |
4.3.1 常量存储方式混淆算法 | 第48-49页 |
4.3.2 函数调用返回值获取方式混淆算法 | 第49-50页 |
4.3.3 解决寄存器冲突问题算法 | 第50页 |
4.3.4 控制流平展化算法 | 第50-51页 |
4.4 本章小结 | 第51-53页 |
第五章 系统实验与分析 | 第53-63页 |
5.1 实验环境及目的 | 第53页 |
5.2 混淆技术评价 | 第53-56页 |
5.3 安全性分析 | 第56-57页 |
5.4 性能分析 | 第57-61页 |
5.5 本章小结 | 第61-63页 |
总结与展望 | 第63-65页 |
总结 | 第63-64页 |
展望 | 第64-65页 |
参考文献 | 第65-69页 |
致谢 | 第69-71页 |
攻读硕士学位期间取得的科研成果 | 第71页 |