基于二进制代码注入框架的内存备份
| 摘要 | 第1-7页 |
| ABSTRACT | 第7-12页 |
| 第一章 绪论 | 第12-20页 |
| ·研究背景及意义 | 第12-13页 |
| ·研究目标 | 第13-14页 |
| ·国内外研究现状 | 第14-18页 |
| ·硬件方案 | 第14-17页 |
| ·软件方案 | 第17-18页 |
| ·本论文的研究内容 | 第18-19页 |
| ·本论文的组织结构 | 第19-20页 |
| 第二章 内存备份和二进制翻译相关技术的介绍 | 第20-32页 |
| ·实现内存备份的不同机制 | 第20-25页 |
| ·双机/多机内存备份技术 | 第20-21页 |
| ·单机内存备份和二进制翻译 | 第21-25页 |
| ·计算机指令集介绍 | 第25-26页 |
| ·IA32 和 X86-64 以及指令集分类 | 第25页 |
| ·CISC 和 RISC 的优缺点 | 第25-26页 |
| ·不同指令集对于本论文的影响 | 第26页 |
| ·操作系统内核态和用户态 | 第26-28页 |
| ·操作系统特权级别 | 第26-27页 |
| ·操作系统的系统调用 | 第27-28页 |
| ·词法解析工具 Lex 和语法解析工具 Yacc | 第28-30页 |
| ·本章小结 | 第30-32页 |
| 第三章 二进制代码注入框架设计 | 第32-40页 |
| ·Multimem 系统全局架构 | 第32-35页 |
| ·原始内存和镜像内存的分布 | 第32-33页 |
| ·用户态和内核态的修改 | 第33-35页 |
| ·内存同步机制 | 第35-38页 |
| ·GCC 基本流程 | 第35-36页 |
| ·代码分析注入模块 | 第36-38页 |
| ·标准库的处理 | 第38页 |
| ·本章小结 | 第38-40页 |
| 第四章 二进制代码注入框架实现 | 第40-56页 |
| ·处理指令的种类选择 | 第40-41页 |
| ·编程语言的分类 | 第40-41页 |
| ·汇编语言实现的优点 | 第41页 |
| ·定制编译过程 | 第41-43页 |
| ·修改编译程序的命令 | 第41-42页 |
| ·修改系统 GCC 程序 | 第42-43页 |
| ·二进制代码分析和注入模块 | 第43-47页 |
| ·分析提取所有的写内存指令 | 第43-46页 |
| ·确定镜像内存单元地址 | 第46-47页 |
| ·注入镜像指令 | 第47页 |
| ·汇编指令代码的分类处理 | 第47-54页 |
| ·数据转移指令处理 | 第48-49页 |
| ·算术运算、逻辑操作、移位、位和字节等指令处理 | 第49-50页 |
| ·控制转移指令处理 | 第50-53页 |
| ·串指令处理 | 第53-54页 |
| ·其它指令处理以及对 X86-64 的支持 | 第54页 |
| ·本章小结 | 第54-56页 |
| 第五章 实验与分析 | 第56-64页 |
| ·实验测试环境 | 第56页 |
| ·正确性分析 | 第56-57页 |
| ·Multimem 对操作系统和应用程序的影响 | 第57-62页 |
| ·XV6 相关测试 | 第57-59页 |
| ·Sysbench 相关测试 | 第59-61页 |
| ·SQLite 的相关测试 | 第61-62页 |
| ·本章小结 | 第62-64页 |
| 第六章 总结及展望 | 第64-66页 |
| 参考文献 | 第66-70页 |
| 致谢 | 第70-72页 |
| 攻读硕士期间已发表或录用的论文 | 第72页 |