静态二进制翻译中基于软件规范的函数识别及恢复技术研究
摘要 | 第1-5页 |
ABSTRACT | 第5-7页 |
目录 | 第7-12页 |
表目录 | 第12-13页 |
图目录 | 第13-16页 |
第一章 绪论 | 第16-25页 |
·二进制翻译的概念 | 第16页 |
·二进制翻译、编译、反编译 | 第16-18页 |
·编译与反编译 | 第16-17页 |
·二进制翻译与反编译 | 第17-18页 |
·二进制翻译实现方法 | 第18-19页 |
·二进制翻译系统的分类 | 第19-20页 |
·根据翻译对象的分类 | 第19页 |
·根据源和目标平台的分类 | 第19-20页 |
·二进制翻译技术的历史与现状 | 第20-23页 |
·二进制翻译技术发展历史 | 第20-22页 |
·静态二进制翻译技术研究现状 | 第22-23页 |
·本文的贡献 | 第23-24页 |
·本文的组织结构 | 第24-25页 |
第二章 IA-64体系结构及软件规范 | 第25-40页 |
·IA-64体系结构概述 | 第25-29页 |
·安腾的发展历史 | 第25-26页 |
·IA-64体系结构的新特性 | 第26-29页 |
·静态二进制翻译的一些传统难点 | 第29-31页 |
·区分代码和数据 | 第30页 |
·主入口点定位 | 第30-31页 |
·区分指针和常量 | 第31页 |
·自修改代码 | 第31页 |
·惯用语 | 第31页 |
·编译器和链接器包含的子过程 | 第31页 |
·IA-64体系结构带来的难点 | 第31-36页 |
·编译器深度优化代码 | 第31-34页 |
·IA-64指令的语义描述 | 第34-35页 |
·函数参数和返回值恢复 | 第35-36页 |
·软件规范分析的引入 | 第36-37页 |
·IA-64软件规范简介 | 第37-39页 |
·数据模型 | 第37页 |
·寄存器用法 | 第37-38页 |
·过程链接 | 第38页 |
·内存堆栈 | 第38页 |
·寄存器堆栈 | 第38页 |
·全局指针 | 第38-39页 |
·栈展开 | 第39页 |
·代码生成约定 | 第39页 |
·小结 | 第39-40页 |
第三章 静态二进制翻译器ITA | 第40-52页 |
·ITA翻译器的总体框架 | 第40-41页 |
·二进制文件解码器 | 第41-42页 |
·指令解码器 | 第42-46页 |
·相关工作 | 第42-43页 |
·IA-64指令集 | 第43-44页 |
·编码解码规格语言SLED | 第44-45页 |
·使用MLTK进行解码 | 第45页 |
·解决的关键问题 | 第45-46页 |
·语义映射器 | 第46-47页 |
·寄存器传递列表RTL | 第47页 |
·SSL语言 | 第47页 |
·通用分析器 | 第47-48页 |
·C代码生成器 | 第48页 |
·软件规范在ITA翻译器中的应用 | 第48-50页 |
·二进制文件解码器 | 第48-49页 |
·指令解码器 | 第49页 |
·通用分析器 | 第49-50页 |
·实验结果 | 第50页 |
·小结 | 第50-52页 |
第四章 ELF64文件主入口点定位 | 第52-60页 |
·二进制工具strip | 第52页 |
·对静态二进制翻译的影响 | 第52-53页 |
·ELF文件加载机制分析 | 第53-55页 |
·main()函数地址定位算法及实例 | 第55-59页 |
·IA-32的定位算法 | 第55-56页 |
·IA-64下的实现 | 第56-59页 |
·相关工作 | 第59页 |
·小结 | 第59-60页 |
第五章 库函数恢复技术 | 第60-73页 |
·引言 | 第60页 |
·相关工作 | 第60页 |
·IA-64动态链接技术 | 第60-67页 |
·IA-64库函数名识别的困难 | 第61-62页 |
·全局偏移表GOT | 第62页 |
·函数地址 | 第62-63页 |
·过程链接表PLT | 第63-64页 |
·实例研究 | 第64-67页 |
·库函数名的识别算法 | 第67-71页 |
·PLT的布局 | 第67-68页 |
·映射关系的建立 | 第68-70页 |
·ITA中的实现 | 第70-71页 |
·参数及返回值的恢复 | 第71-72页 |
·小结 | 第72-73页 |
第六章 过程识别技术 | 第73-88页 |
·过程识别技术简介 | 第73-74页 |
·调用约定的形式化描述 | 第74-80页 |
·指定参数设置的自动机 | 第74-80页 |
·IA-64调用约定描述实例 | 第80页 |
·IA-64过程识别简介 | 第80-83页 |
·识别难点 | 第80-81页 |
·标准过程链接 | 第81-82页 |
·IA-64过程链接 | 第82-83页 |
·需要提取的信息 | 第83页 |
·基于自动机的过程识别 | 第83-84页 |
·基于惰性执行的过程识别 | 第84-86页 |
·讨论 | 第86-88页 |
第七章 过程恢复技术 | 第88-106页 |
·IA-64体系结构参数传递约定 | 第88-90页 |
·ITA翻译器中的过程恢复技术 | 第90-95页 |
·IA-64调用约定的PAL描述 | 第90-93页 |
·过程抽象分析 | 第93-94页 |
·实例分析 | 第94-95页 |
·可变参数函数的实现 | 第95-97页 |
·可变参数函数的参数恢复 | 第97-103页 |
·可变参数函数的识别 | 第97-99页 |
·最大化参数列表 | 第99-100页 |
·恢复实例 | 第100-103页 |
·间接过程调用的恢复 | 第103-105页 |
·用户自定义函数间接调用的恢复 | 第104-105页 |
·动态链接库函数间接调用的恢复 | 第105页 |
·小结 | 第105-106页 |
第八章 数学函数内嵌优化的恢复 | 第106-115页 |
·引言 | 第106页 |
·IA-64体系结构的浮点特性 | 第106-109页 |
·指令级并行 | 第106-107页 |
·软件流水 | 第107-108页 |
·82位浮点奇存器 | 第108-109页 |
·浮点算术指令 | 第109页 |
·特殊的浮点指令 | 第109页 |
·多个浮点状态域 | 第109页 |
·数学函数内嵌优化 | 第109-112页 |
·内嵌优化示例 | 第109-110页 |
·内嵌优化带来的翻译困难 | 第110-112页 |
·数学函数内嵌优化的恢复 | 第112-114页 |
·小结 | 第114-115页 |
第九章 总结与展望 | 第115-118页 |
·本文工作的总结 | 第115页 |
·下一步的工作展望 | 第115-118页 |
致谢 | 第118-119页 |
参考文献 | 第119-126页 |
作者在学期间取得的学术成果 | 第126页 |