基于指令混淆的对抗逆向工程技术研究
中文摘要 | 第3-4页 |
Abstract | 第4页 |
第一章 绪论 | 第8-11页 |
1.1 背景及意义 | 第8页 |
1.2 逆向工程与软件保护的现状 | 第8-9页 |
1.3 论文研究内容 | 第9-10页 |
1.4 论文结构 | 第10-11页 |
第二章 实验环境和工具 | 第11-15页 |
2.1 OD反汇编工具 | 第11-12页 |
2.2 PE文件编辑器 | 第12-15页 |
第三章 关键反汇编代码基础特征的研究 | 第15-38页 |
3.1 数据在内存中的基础特征研究 | 第15-20页 |
3.1.1 整型数据的基础特征研究 | 第15-18页 |
3.1.2 字符型数据的基础特征研究 | 第18-20页 |
3.2 数组在内存中的基础特征研究 | 第20-26页 |
3.2.1 数组的定义语法 | 第20页 |
3.2.2 数组在内存中创建过程的基础特征研究 | 第20-22页 |
3.2.3 数组初始化时的基础特征研究 | 第22-24页 |
3.2.4 数组在内存空间中寻址方式的研究 | 第24-26页 |
3.3 控制型指令在内存中的基础特征研究 | 第26-32页 |
3.3.1 if系列指令在内存中执行过程的研究 | 第27-29页 |
3.3.2 循环指令在内存中执行过程的研究 | 第29-32页 |
3.4 函数在内存中的基础特征研究 | 第32-37页 |
3.4.1 函数的宏观构成 | 第32-33页 |
3.4.2 函数在内存中存储结构的研究 | 第33-34页 |
3.4.3 函数在内存中执行过程的研究 | 第34-37页 |
3.5 本章小结 | 第37-38页 |
第四章 代码混淆技术的研究和实现 | 第38-65页 |
4.1 基于函数栈的代码的等价代码变形技术 | 第38-43页 |
4.1.1 栈的结构和组成 | 第38-39页 |
4.1.2 栈的创建和关闭 | 第39-40页 |
4.1.3 堆栈平衡在内存中的执行过程 | 第40-41页 |
4.1.4 基于栈空间平衡指令的代码混淆 | 第41-43页 |
4.2 基于寄存器溢出计算的初始化指令代换技术 | 第43-45页 |
4.2.1 基于循环的初始化指令 | 第43页 |
4.2.2 基于复杂计算的指令等价变形 | 第43-45页 |
4.3 基于函数参数压栈的代码变形技术 | 第45-49页 |
4.3.1 函数参数在内存中的写入过程 | 第45-48页 |
4.3.2 操作数压栈的等价代换技术 | 第48-49页 |
4.4 数组数据写入变形技术 | 第49-52页 |
4.5 基于环境变量保存的等价代码变形技术 | 第52-58页 |
4.5.1 环境变量保存过程 | 第52-55页 |
4.5.2 基于环境变量保存和还原的等价指令变换 | 第55-58页 |
4.6 基于冗余指令和控制结构指令的代码混淆技术 | 第58-64页 |
4.6.1 jmp系列指令分析 | 第58-61页 |
4.6.2 无效冗余指令与jmp融合的技术 | 第61-64页 |
4.7 本章小结 | 第64-65页 |
第五章 代码混淆技术的综合性实验 | 第65-78页 |
5.1 实验设计 | 第65-68页 |
5.2 代码混淆变形 | 第68-76页 |
5.2.1 主函数初始化的指令混淆 | 第68-70页 |
5.2.2 循环指令赋值的指令混淆 | 第70-72页 |
5.2.3 库函数调用的指令混淆 | 第72-73页 |
5.2.4 选择判定和自定义函数调用的指令混淆 | 第73-76页 |
5.3 实验结果 | 第76-77页 |
5.4 本章小结 | 第77-78页 |
第六章 结论与展望 | 第78-79页 |
6.1 结论 | 第78页 |
6.2 展望 | 第78-79页 |
参考文献 | 第79-81页 |
在学期间的研究成果 | 第81-82页 |
致谢 | 第82页 |