基于动态虚拟指令集的Android应用保护技术研究
摘要 | 第3-4页 |
Abstract | 第4-5页 |
1 绪论 | 第9-16页 |
1.1 研究背景及意义 | 第9-11页 |
1.2 国内外研究现状 | 第11-13页 |
1.3 本文主要研究内容 | 第13-14页 |
1.4 论文结构 | 第14-16页 |
2 Android系统及其安全技术研究 | 第16-31页 |
2.1 Android系统架构 | 第16-20页 |
2.1.1 Linux内核层 | 第16-17页 |
2.1.2 系统运行时库层 | 第17-18页 |
2.1.3 应用框架层 | 第18-19页 |
2.1.4 应用程序层 | 第19-20页 |
2.2 Android安全机制研究 | 第20-23页 |
2.2.1 进程沙箱隔离机制 | 第20-21页 |
2.2.2 应用程序签名机制 | 第21页 |
2.2.3 权限声明机制 | 第21-22页 |
2.2.4 内存管理机制 | 第22-23页 |
2.3 NDK编程 | 第23-24页 |
2.3.1 NDK简介 | 第23页 |
2.3.2 Android JNI接口 | 第23-24页 |
2.4 Dalvik虚拟机 | 第24-29页 |
2.4.1 Dalvik指令集 | 第24-26页 |
2.4.2 DEX文件 | 第26-28页 |
2.4.3 Smali文件分析 | 第28-29页 |
2.4.4 Dalvik虚拟机执行过程分析 | 第29页 |
2.5 虚拟指令保护技术 | 第29-30页 |
2.6 本章小结 | 第30-31页 |
3 Android应用安全加固技术方法实现 | 第31-45页 |
3.1 基本思想 | 第31页 |
3.2 总体框架 | 第31-32页 |
3.3 关键方法标识 | 第32-33页 |
3.4 指令抽取与混淆 | 第33-37页 |
3.4.1 关键方法指令抽取 | 第33-34页 |
3.4.2 指令混淆 | 第34-37页 |
3.5 指令动态变换 | 第37-40页 |
3.5.1 动态生成置换矩阵 | 第38-39页 |
3.5.2 利用置换矩阵进行指令变换 | 第39页 |
3.5.3 虚拟指令逆变换处理 | 第39-40页 |
3.6 自定义解释器 | 第40-41页 |
3.6.1 原理描述 | 第40-41页 |
3.6.2 虚拟指令存储 | 第41页 |
3.7 实验验证与结果分析 | 第41-44页 |
3.7.1 实验过程 | 第41-44页 |
3.7.2 实验结果分析 | 第44页 |
3.8 本章小结 | 第44-45页 |
4 面向隐私数据安全的Android应用保护系统 | 第45-57页 |
4.1 体系结构 | 第45-46页 |
4.2 反编译模块 | 第46页 |
4.3 安全策略制定模块 | 第46-49页 |
4.3.1 Android应用中隐私数据的类型 | 第47页 |
4.3.2 隐私数据的生命周期 | 第47-48页 |
4.3.3 隐私数据安全风险分级 | 第48-49页 |
4.3.4 制定安全策略 | 第49页 |
4.4 安全策略解析模块 | 第49-51页 |
4.4.1 生成隐私敏感系统API集合 | 第50页 |
4.4.2 解析Smali文件标识关键方法 | 第50-51页 |
4.5 安全加固模块 | 第51-55页 |
4.5.1 关键方法指令抽取 | 第52-53页 |
4.5.2 关键方法指令混淆与变换 | 第53-54页 |
4.5.3 关键方法解释执行 | 第54-55页 |
4.6 重打包模块 | 第55-56页 |
4.7 本章小结 | 第56-57页 |
5 系统测试与验证 | 第57-67页 |
5.1 系统测试准备 | 第58页 |
5.1.1 测试环境 | 第58页 |
5.1.2 测试样本选择 | 第58页 |
5.1.3 评价标准 | 第58页 |
5.2 测试内容 | 第58-66页 |
5.2.1 系统功能性测试 | 第58-62页 |
5.2.2 系统安全性测试 | 第62-64页 |
5.2.3 系统性能测试 | 第64-66页 |
5.3 结果分析 | 第66页 |
5.4 本章小结 | 第66-67页 |
6 总结与展望 | 第67-69页 |
6.1 论文工作总结 | 第67页 |
6.2 展望 | 第67-69页 |
致谢 | 第69-70页 |
参考文献 | 第70-74页 |
附录 | 第74页 |