摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
缩略语对照表 | 第11-15页 |
第一章 绪论 | 第15-21页 |
1.1 研究背景与意义 | 第15-16页 |
1.2 国内外研究现状 | 第16-19页 |
1.3 本文的研究内容 | 第19页 |
1.4 论文结构与章节安排 | 第19-21页 |
第二章 软件保护技术基础 | 第21-31页 |
2.1 软件破解方法 | 第21-23页 |
2.1.1 反汇编和反编译 | 第21-22页 |
2.1.2 静态分析和动态分析 | 第22-23页 |
2.1.3 补丁技术 | 第23页 |
2.1.4 暴力破解 | 第23页 |
2.2 软件保护方法 | 第23-29页 |
2.2.1 硬件保护 | 第23-24页 |
2.2.2 防盗版技术 | 第24-25页 |
2.2.3 防篡改技术 | 第25页 |
2.2.4 防逆向工程技术 | 第25-27页 |
2.2.5 虚拟机软件保护 | 第27-29页 |
2.3 本章小结 | 第29-31页 |
第三章 虚拟机软件保护 | 第31-41页 |
3.1 虚拟机技术 | 第31-34页 |
3.1.1 虚拟化简介 | 第31-33页 |
3.1.2 虚拟机简介 | 第33-34页 |
3.2 虚拟机编译器 | 第34-35页 |
3.3 字节码执行方式 | 第35-36页 |
3.4 现有虚拟机解释器架构 | 第36-40页 |
3.5 本章小结 | 第40-41页 |
第四章 虚拟机解释器的优化 | 第41-67页 |
4.1 虚拟机整体框架 | 第41-43页 |
4.2 虚拟机解释器功能性验证 | 第43-48页 |
4.2.1 插入排序 | 第43-44页 |
4.2.2 字符串反转 | 第44页 |
4.2.3 判断回文 | 第44-45页 |
4.2.4 判断素数 | 第45-46页 |
4.2.5 MD5散列函数 | 第46-48页 |
4.3 指令和其解释函数的快速匹配算法 | 第48-51页 |
4.3.1 函数指针数组简介 | 第49页 |
4.3.2 设计思路 | 第49页 |
4.3.3 实现过程 | 第49-50页 |
4.3.4 结果及分析 | 第50-51页 |
4.4 同一内存地址指令重复执行时的快速定位算法 | 第51-54页 |
4.4.1 缓存简介 | 第51-52页 |
4.4.2 设计思路 | 第52页 |
4.4.3 实现过程 | 第52-54页 |
4.4.4 结果及分析 | 第54页 |
4.5 使用内联函数 | 第54-56页 |
4.5.1 内联函数简介 | 第54-55页 |
4.5.2 设计思路 | 第55页 |
4.5.3 结果及分析 | 第55-56页 |
4.6 合理使用switch case和if else | 第56-57页 |
4.7 Android平台上的优化 | 第57-65页 |
4.7.1 JNI简介 | 第57-58页 |
4.7.2 Android NDK简介 | 第58-60页 |
4.7.3 处理器架构 | 第60-62页 |
4.7.4 ARM内嵌汇编 | 第62-65页 |
4.8 本章小结 | 第65-67页 |
第五章 总结与展望 | 第67-69页 |
5.1 工作总结 | 第67-68页 |
5.2 工作展望 | 第68-69页 |
参考文献 | 第69-71页 |
致谢 | 第71-73页 |
作者简介 | 第73-74页 |