| 摘要 | 第1-5页 |
| ABSTRACT | 第5-11页 |
| 第一章 绪论 | 第11-16页 |
| ·研究意义 | 第11-12页 |
| ·软件保护的研究现状 | 第12-14页 |
| ·序列号软件保护机制 | 第12-13页 |
| ·时间限制保护机制 | 第13页 |
| ·Key File 保护机制 | 第13页 |
| ·功能限制保护机制 | 第13-14页 |
| ·加壳保护机制 | 第14页 |
| ·论文的主要内容 | 第14-15页 |
| ·论文的主要结构 | 第15-16页 |
| 第二章 PE 文件结构 | 第16-29页 |
| ·PE 文件格式概述 | 第16-17页 |
| ·PE 文件的总体结构 | 第17-18页 |
| ·PE 文件格式详解 | 第18-28页 |
| ·DOS MZ Header 和 DOS Stub | 第18页 |
| ·PE Header | 第18-20页 |
| ·Section Table(区块表) | 第20-21页 |
| ·Sections(区块) | 第21-22页 |
| ·Import Table(输入表) | 第22-26页 |
| ·基址重定位 | 第26-28页 |
| ·本章小结 | 第28-29页 |
| 第三章 软件加壳与脱壳 | 第29-40页 |
| ·壳的作用 | 第29-30页 |
| ·壳的种类 | 第30-34页 |
| ·压缩壳 | 第30-32页 |
| ·保护壳 | 第32-34页 |
| ·工具脱壳 | 第34-35页 |
| ·手动脱壳 | 第35-39页 |
| ·壳的类型分析 | 第35-36页 |
| ·确定入口点 | 第36-38页 |
| ·根据跨段指令查找入口点 | 第37页 |
| ·根据堆栈平衡原理查找入口点 | 第37页 |
| ·根据编译语言特点查找入口点 | 第37-38页 |
| ·用内存断点查找入口点 | 第38页 |
| ·抓取内存镜像文件 | 第38页 |
| ·重建输入表 | 第38-39页 |
| ·本章小结 | 第39-40页 |
| 第四章 反逆向工程的研究与实现 | 第40-56页 |
| ·常用逆向分析工具介绍 | 第40-45页 |
| ·OllyDbg 调试器 | 第41-42页 |
| ·SoftICE 调试器 | 第42-43页 |
| ·W32DASM | 第43页 |
| ·IDA Pro | 第43-45页 |
| ·反调试技术的原理与实现 | 第45-48页 |
| ·反SoftICE 调试的原理与实现 | 第45-46页 |
| ·反OllyDbg 调试的原理与实现 | 第46-47页 |
| ·基于TLS 的反调试的原理 | 第47-48页 |
| ·反分析技术的原理与实现 | 第48-54页 |
| ·花指令原理与实现 | 第48-49页 |
| ·代码混淆的原理 | 第49-50页 |
| ·加密、压缩区块的原理与实现 | 第50-51页 |
| ·虚拟机保护的原理 | 第51页 |
| ·SMC 的原理与实现 | 第51-52页 |
| ·SHE 原理与实现 | 第52-53页 |
| ·伪装技术的原理与实现 | 第53-54页 |
| ·反 DUMP 技术的研究 | 第54-55页 |
| ·本章小结 | 第55-56页 |
| 第五章 壳的设计与实现 | 第56-78页 |
| ·总体设计方案 | 第56-59页 |
| ·编程语言的选择 | 第56页 |
| ·压缩算法的选择 | 第56-57页 |
| ·软件的系统构架 | 第57-59页 |
| ·外壳程序设计 | 第59-68页 |
| ·PE 文件读取 | 第59-61页 |
| ·区块的压缩 | 第61-63页 |
| ·特殊数据的处理 | 第63-64页 |
| ·输入表的构建 | 第64-68页 |
| ·虚拟机保护的原理与实现 | 第68-72页 |
| ·虚拟CPU 环境 | 第69-70页 |
| ·伪指令 | 第70页 |
| ·编译器 | 第70-71页 |
| ·解释器 | 第71-72页 |
| ·外壳程序的添加 | 第72-73页 |
| ·界面设计 | 第73-74页 |
| ·加壳软件的可靠性测试 | 第74-77页 |
| ·本章小结 | 第77-78页 |
| 第六章 结论 | 第78-80页 |
| ·总结 | 第78页 |
| ·本文的创新之处 | 第78-79页 |
| ·未来研究工作展及望 | 第79-80页 |
| 致谢 | 第80-81页 |
| 参考文献 | 第81-83页 |
| 在校期间研究成果 | 第83-84页 |