| 提要 | 第1-8页 |
| 第1章 绪论 | 第8-12页 |
| ·课题的来源和意义 | 第8页 |
| ·国内外研究现状 | 第8页 |
| ·当前对软件的各种威胁 | 第8-10页 |
| ·什么是威胁模型 | 第8-9页 |
| ·三种基本的威胁模型 | 第9页 |
| ·恶意主机的攻击 | 第9-10页 |
| ·本文的主要内容和章节安排 | 第10-12页 |
| ·主要内容 | 第10-11页 |
| ·章节安排 | 第11-12页 |
| 第2章 相关技术概述 | 第12-17页 |
| ·软件保护的方法 | 第12-14页 |
| ·代码混淆技术 | 第12-13页 |
| ·软件水印技术 | 第13-14页 |
| ·篡改验证技术 | 第14页 |
| ·哈希函数简介 | 第14-15页 |
| ·哈希函数的基本概念及性质 | 第14-15页 |
| ·Sha-256算法 | 第15页 |
| ·Java字节码 | 第15-16页 |
| ·AES加密算法 | 第16页 |
| ·小结 | 第16-17页 |
| 第3章 哈希函数对java程序的篡改抵抗 | 第17-33页 |
| ·研究背景及意义 | 第17-18页 |
| ·Oblivious hashing的模型及实现 | 第18-24页 |
| ·基本原理 | 第18-20页 |
| ·设计方法 | 第20页 |
| ·实现策略 | 第20-22页 |
| ·散列计算的方法 | 第22-23页 |
| ·对未被散列的部分的处理 | 第23-24页 |
| ·Oblivious hashing在Java上的实现 | 第24-33页 |
| ·实现策略 | 第24页 |
| ·保护Java软件的抽象模型 | 第24-25页 |
| ·Java软件的Oblivious hashing的散列法 | 第25-26页 |
| ·实现的具体例子 | 第26-28页 |
| ·变量的处理 | 第28-31页 |
| ·保护方法的运算法则 | 第31页 |
| ·保护机制的实现 | 第31-32页 |
| ·性能分析 | 第32-33页 |
| 第4章 基于完整性加密的篡改抵抗 | 第33-43页 |
| ·设计目标 | 第33页 |
| ·多模块加密机制 | 第33-36页 |
| ·记号和假定 | 第34-35页 |
| ·代码加密 | 第35页 |
| ·代码的解密和完整性检查 | 第35页 |
| ·安全性分析 | 第35-36页 |
| ·基于hash函数的多模块加密 | 第36-43页 |
| ·多模块加密分析 | 第36-37页 |
| ·分块方法 | 第37页 |
| ·多块的分裂方法 | 第37-40页 |
| ·多模块散列加密方法的实现 | 第40-41页 |
| ·程序控制器的设计 | 第41-42页 |
| ·小结 | 第42-43页 |
| 第5章 分析对比及实验 | 第43-45页 |
| ·Oblivious hashing在应用上的分析 | 第43页 |
| ·完整性加密机制的分析 | 第43-45页 |
| 第6章 结论和展望 | 第45-47页 |
| ·结论 | 第45页 |
| ·展望 | 第45-47页 |
| 参考文献 | 第47-50页 |
| 致谢 | 第50-51页 |
| 摘要 | 第51-54页 |
| Abstract | 第54-56页 |