基于操作码的Python程序防逆转算法研究与实现
摘要 | 第5-6页 |
Abstract | 第6-7页 |
第1章 绪论 | 第14-22页 |
1.1 研究背景 | 第14-18页 |
1.1.1 脚本语言和Python的发展 | 第14-16页 |
1.1.2 Python程序和字节码文件 | 第16-18页 |
1.2 操作码替换与合并的研究意义 | 第18-19页 |
1.3 论文的主要工作 | 第19-20页 |
1.4 论文结构 | 第20-22页 |
第2章 Python总体架构与传统的防逆转方式 | 第22-40页 |
2.1 Python总体架构 | 第22-25页 |
2.1.1 Python模块 | 第22-23页 |
2.1.2 Python运行时系统 | 第23-24页 |
2.1.3 Python虚拟机 | 第24-25页 |
2.2 传统的Python字节码文件防逆转方式 | 第25-38页 |
2.2.1 代码混淆技术 | 第25-29页 |
2.2.2 文件加密技术 | 第29-33页 |
2.2.3 本地编译技术 | 第33-34页 |
2.2.4 数字水印技术 | 第34-38页 |
2.3 本章小结 | 第38-40页 |
第3章 Python字节码文件与其解释执行机制 | 第40-48页 |
3.1 Python字节码文件 | 第40-43页 |
3.1.1 PyCodeObject | 第40-42页 |
3.1.2 co_code域 | 第42-43页 |
3.2 Python字节码文件的解释执行 | 第43-47页 |
3.3 本章小结 | 第47-48页 |
第4章 操作码替换与合并的设计 | 第48-60页 |
4.1 操作码序列 | 第48-50页 |
4.2 操作码替换的设计 | 第50-53页 |
4.2.1 寻找操作码编译和解释执行规律 | 第51-52页 |
4.2.2 打乱操作码映射关系 | 第52-53页 |
4.3 操作码合并的设计 | 第53-56页 |
4.3.1 提取操作码信息 | 第54页 |
4.3.2 频率统计 | 第54-55页 |
4.3.3 提取基本块信息 | 第55页 |
4.3.4 扩充操作码集 | 第55-56页 |
4.4 操作码合并示例 | 第56-59页 |
4.4.1 获取段代码的操作码信息 | 第56-57页 |
4.4.2 频率统计 | 第57页 |
4.4.3 获取基本块信息 | 第57-58页 |
4.4.4 扩充操作码集 | 第58-59页 |
4.4.5 操作码序列合并前后比较 | 第59页 |
4.5 本章小结 | 第59-60页 |
第5章 操作码替换与合并方式的性能评测 | 第60-70页 |
5.1 操作码替换性能评测 | 第60-63页 |
5.1.1 操作码替换安全性分析 | 第60-61页 |
5.1.2 操作码替换实验检验 | 第61-63页 |
5.2 操作码合并性能评测 | 第63-68页 |
5.2.1 安全性分析 | 第63-64页 |
5.2.2 执行效率分析 | 第64-66页 |
5.2.3 存储空间分析 | 第66页 |
5.2.4 操作码合并实验 | 第66-68页 |
5.3 本章小结 | 第68-70页 |
第6章 全文总结 | 第70-72页 |
6.1 研究工作与成果 | 第70-71页 |
6.2 下一步工作 | 第71-72页 |
参考文献 | 第72-76页 |
致谢 | 第76-78页 |
在读期间发表的学术论文与取得的研究成果 | 第78页 |