摘要 | 第5-6页 |
abstract | 第6-7页 |
第一章 绪论 | 第11-17页 |
1.1 论文研究背景与意义 | 第11-13页 |
1.2 国内外研究现状 | 第13-15页 |
1.2.1 重打包检测研究现状 | 第13-14页 |
1.2.2 代码水印研究现状 | 第14-15页 |
1.3 本文的主要研究工作 | 第15-16页 |
1.4 论文组织结构 | 第16-17页 |
第二章 Android安全基础 | 第17-29页 |
2.1 Android综述 | 第17-20页 |
2.1.1 Android平台架构 | 第17-18页 |
2.1.2 Android应用组件 | 第18-20页 |
2.2 Android安全模型 | 第20-22页 |
2.2.1 Android内核安全 | 第20-21页 |
2.2.2 Android应用安全 | 第21-22页 |
2.3 Android逆向和重打包 | 第22-28页 |
2.3.1 APK文件结构 | 第22-23页 |
2.3.2 Dex文件格式 | 第23-25页 |
2.3.3 Android逆向工程 | 第25-26页 |
2.3.4 Android重打包应用 | 第26-28页 |
2.4 本章小结 | 第28-29页 |
第三章 具有重打包自检测能力的代码水印设计 | 第29-45页 |
3.1 问题描述与假设 | 第29-30页 |
3.2 Exemarking水印总体设计 | 第30-32页 |
3.3 Exemarking水印的嵌入 | 第32-39页 |
3.3.1 基于自解密代码块的嵌入点 | 第32-37页 |
3.3.1.1 自解密代码块原理 | 第32-33页 |
3.3.1.2 自解密代码块构造 | 第33-34页 |
3.3.1.3 候选分支的要求 | 第34-37页 |
3.3.2 基于动态加载的嵌入方式 | 第37-39页 |
3.4 Exemarking水印的内容 | 第39-43页 |
3.4.1 基于签名的检测代码 | 第40-41页 |
3.4.1.1 Android应用签名验证流程分析 | 第40-41页 |
3.4.1.2 Android签名提取与对比 | 第41页 |
3.4.2 基于延迟响应的自毁代码 | 第41-42页 |
3.4.3 用于捆绑的原有代码 | 第42-43页 |
3.5 Exemarking水印具有的重打包自检测能力 | 第43-44页 |
3.6 本章小节 | 第44-45页 |
第四章 系统设计与实现 | 第45-58页 |
4.1 设计目标 | 第45页 |
4.2 系统总体设计 | 第45-47页 |
4.3 模块设计与实现 | 第47-57页 |
4.3.1 候选分支查找模块设计与实现 | 第47-49页 |
4.3.2 水印嵌入模块设计与实现 | 第49-52页 |
4.3.2.1 原有代码抽取 | 第49-51页 |
4.3.2.2 常量隐藏 | 第51-52页 |
4.3.3 水印生成模块设计与实现 | 第52-54页 |
4.3.3.1 检测代码 | 第52-53页 |
4.3.3.2 自毁代码 | 第53-54页 |
4.3.4 加密打包模块设计与实现 | 第54-57页 |
4.3.4.1 水印Dex加密 | 第55页 |
4.3.4.2 libSDC实现 | 第55-57页 |
4.4 本章小结 | 第57-58页 |
第五章 系统测试与安全性检测 | 第58-71页 |
5.1 测试说明 | 第58-60页 |
5.1.1 测试环境 | 第58页 |
5.1.2 测试样本 | 第58-59页 |
5.1.3 测试方式 | 第59-60页 |
5.2 系统测试 | 第60-68页 |
5.2.1 系统集成测试 | 第60-61页 |
5.2.2 可行性测试 | 第61-63页 |
5.2.3 检测代码有效性测试 | 第63-64页 |
5.2.4 自毁代码有效性测试 | 第64-66页 |
5.2.5 水印安全性测试 | 第66-67页 |
5.2.6 水印性能开销测试 | 第67-68页 |
5.3 安全性分析 | 第68-70页 |
5.3.1 抗静态分析 | 第69页 |
5.3.2 抗动态分析 | 第69-70页 |
5.4 本章小结 | 第70-71页 |
第六章 总结与展望 | 第71-73页 |
6.1 总结 | 第71-72页 |
6.2 未来展望 | 第72-73页 |
致谢 | 第73-74页 |
参考文献 | 第74-77页 |
攻读硕士学位期间取得的成果 | 第77页 |