静态二进制翻译中基于软件规范的函数识别及恢复技术研究

静态二进制翻译中基于软件规范的函数识别及恢复技术研究

论文摘要

二进制翻译技术是解决软件移值问题的重要手段,在遗产代码移植、程序优化、系统安全等方面都有着重要的意义,已经成为现代编译技术研究热点之一。由于静态二进制翻译技术在理论和实践上都尚未成熟,当前关于二进制翻译技术的研究主要围绕动态和动静结合的路线展开,纯静态二进制翻译技术亟待提高。 本文首先综述了二进制翻译的研究现状及其基本方法,然后分析了静态二进制翻译技术的传统难点以及由新的体系结构IA-64带来的新的困难,在对IA-64体系结构软件规范的分析基础之上,探讨了如何将软件规范应用到静态二进制翻译中,并以我们设计实现的静态二进制翻译系统ITA为实验平台,提出了若干算法和方法来解决静态二进制翻译中同函数识别和恢复相关的难点问题。测试实验证明,通过在静态二进制翻译过程中利用软件规范,能够较好地解决静态二进制翻译的若干关键问题。 本文的主要贡献如下: 1.分析了IA-64体系结构及编译技术方面的新特性,研究了这些新特性对静态二进制翻译带来的影响。 2.实现了静态二进制翻译系统ITA,对静态二进制翻译方法进行了深入地探索,为进一步研究二进制翻译技术搭建了有用的实验平台。 3.提出了ELF64文件主入口点定位算法。该算法基于ELF64文件的加载机制,通过对start例程及libcstartmain函数的参数约定分析,不需要查找符号表,即可自动分析和确定ELF64可执行文件的main()函数入口。 4.提出了IA-64动态链接库函数调用恢复算法。该算法从IA-64的动态链接机制入手,通过分析ELF64二进制文件中的多个段之间的联系,结合函数调用地址来识别所调用库函数的函数名。 5.提出了一种过程识别算法。该算法根据惰性执行原理,推迟过程识别时机,解决了icc编译器生成的二进制代码中某些过程识别与恢复问题。 6.提出了最大化参数列表方法以恢复用户自定义可变参数列表函数,解决了某些用户自定义可变参数列表函数的静态识别与恢复问题。 7.研究了数学函数内嵌优化的翻译问题,设计并实现了一种基于内嵌代码识别路径的自动恢复算法。测试表明算法能够解决对应的函数识别与恢复问题。

论文目录

  • 摘要
  • ABSTRACT
  • 目录
  • 表目录
  • 图目录
  • 第一章 绪论
  • 1.1 二进制翻译的概念
  • 1.2 二进制翻译、编译、反编译
  • 1.2.1 编译与反编译
  • 1.2.2 二进制翻译与反编译
  • 1.3 二进制翻译实现方法
  • 1.4 二进制翻译系统的分类
  • 1.4.1 根据翻译对象的分类
  • 1.4.2 根据源和目标平台的分类
  • 1.5 二进制翻译技术的历史与现状
  • 1.5.1 二进制翻译技术发展历史
  • 1.5.2 静态二进制翻译技术研究现状
  • 1.6 本文的贡献
  • 1.7 本文的组织结构
  • 第二章 IA-64体系结构及软件规范
  • 2.1 IA-64体系结构概述
  • 2.1.1 安腾的发展历史
  • 2.1.2 IA-64体系结构的新特性
  • 2.2 静态二进制翻译的一些传统难点
  • 2.2.1 区分代码和数据
  • 2.2.2 主入口点定位
  • 2.2.3 区分指针和常量
  • 2.2.4 自修改代码
  • 2.2.5 惯用语
  • 2.2.6 编译器和链接器包含的子过程
  • 2.3 IA-64体系结构带来的难点
  • 2.3.1 编译器深度优化代码
  • 2.3.2 IA-64指令的语义描述
  • 2.3.3 函数参数和返回值恢复
  • 2.4 软件规范分析的引入
  • 2.5 IA-64软件规范简介
  • 2.5.1 数据模型
  • 2.5.2 寄存器用法
  • 2.5.3 过程链接
  • 2.5.4 内存堆栈
  • 2.5.5 寄存器堆栈
  • 2.5.6 全局指针
  • 2.5.7 栈展开
  • 2.5.8 代码生成约定
  • 2.6 小结
  • 第三章 静态二进制翻译器ITA
  • 3.1 ITA翻译器的总体框架
  • 3.2 二进制文件解码器
  • 3.3 指令解码器
  • 3.3.1 相关工作
  • 3.3.2 IA-64指令集
  • 3.3.3 编码解码规格语言SLED
  • 3.3.4 使用MLTK进行解码
  • 3.3.5 解决的关键问题
  • 3.4 语义映射器
  • 3.4.1 寄存器传递列表RTL
  • 3.4.2 SSL语言
  • 3.5 通用分析器
  • 3.6 C代码生成器
  • 3.7 软件规范在ITA翻译器中的应用
  • 3.7.1 二进制文件解码器
  • 3.7.2 指令解码器
  • 3.7.3 通用分析器
  • 3.8 实验结果
  • 3.9 小结
  • 第四章 ELF64文件主入口点定位
  • 4.1 二进制工具strip
  • 4.2 对静态二进制翻译的影响
  • 4.3 ELF文件加载机制分析
  • 4.4 main()函数地址定位算法及实例
  • 4.4.1 IA-32的定位算法
  • 4.4.2 IA-64下的实现
  • 4.5 相关工作
  • 4.6 小结
  • 第五章 库函数恢复技术
  • 5.1 引言
  • 5.2 相关工作
  • 5.3 IA-64动态链接技术
  • 5.3.1 IA-64库函数名识别的困难
  • 5.3.2 全局偏移表GOT
  • 5.3.3 函数地址
  • 5.3.4 过程链接表PLT
  • 5.3.5 实例研究
  • 5.4 库函数名的识别算法
  • 5.4.1 PLT的布局
  • 5.4.2 映射关系的建立
  • 5.4.3 ITA中的实现
  • 5.5 参数及返回值的恢复
  • 5.6 小结
  • 第六章 过程识别技术
  • 6.1 过程识别技术简介
  • 6.2 调用约定的形式化描述
  • 6.2.1 指定参数设置的自动机
  • 6.2.2 IA-64调用约定描述实例
  • 6.3 IA-64过程识别简介
  • 6.3.1 识别难点
  • 6.3.2 标准过程链接
  • 6.3.3 IA-64过程链接
  • 6.3.4 需要提取的信息
  • 6.4 基于自动机的过程识别
  • 6.5 基于惰性执行的过程识别
  • 6.6 讨论
  • 第七章 过程恢复技术
  • 7.1 IA-64体系结构参数传递约定
  • 7.2 ITA翻译器中的过程恢复技术
  • 7.2.1 IA-64调用约定的PAL描述
  • 7.2.2 过程抽象分析
  • 7.2.3 实例分析
  • 7.3 可变参数函数的实现
  • 7.4 可变参数函数的参数恢复
  • 7.4.1 可变参数函数的识别
  • 7.4.2 最大化参数列表
  • 7.4.3 恢复实例
  • 7.5 间接过程调用的恢复
  • 7.5.1 用户自定义函数间接调用的恢复
  • 7.5.2 动态链接库函数间接调用的恢复
  • 7.6 小结
  • 第八章 数学函数内嵌优化的恢复
  • 8.1 引言
  • 8.2 IA-64体系结构的浮点特性
  • 8.2.1 指令级并行
  • 8.2.2 软件流水
  • 8.2.3 82位浮点奇存器
  • 8.2.4 浮点算术指令
  • 8.2.5 特殊的浮点指令
  • 8.2.6 多个浮点状态域
  • 8.3 数学函数内嵌优化
  • 8.3.1 内嵌优化示例
  • 8.3.2 内嵌优化带来的翻译困难
  • 8.4 数学函数内嵌优化的恢复
  • 8.5 小结
  • 第九章 总结与展望
  • 9.1 本文工作的总结
  • 9.2 下一步的工作展望
  • 致谢
  • 参考文献
  • 作者在学期间取得的学术成果
  • 相关论文文献

    • [1].利用TEXT函数比对两表[J]. 电脑知识与技术(经验技巧) 2020(06)
    • [2].函数零点看端详 异号连续细思量[J]. 数学通报 2019(06)
    • [3].关于“L函数”的一则注记——对一道二模试题的探究[J]. 数学通报 2019(06)
    • [4].广义Euler函数φ_2(n)与Euler函数φ(n)混合的一方程[J]. 数学的实践与认识 2018(09)
    • [5].函数与生活[J]. 声屏世界·广告人 2017(05)
    • [6].EXCEL中常用隐藏函数的应用[J]. 科技传播 2016(18)
    • [7].例析函数零点个数问题的求解方法[J]. 语数外学习(高中版下旬) 2019(11)
    • [8].用图象法巧解复合函数的零点问题[J]. 理科考试研究 2020(07)
    • [9].函数有唯一零点问题[J]. 数理化解题研究 2020(13)
    • [10].两类“隔离函数”问题的探究[J]. 数学通讯 2020(02)
    • [11].函数的性质[J]. 中学数学教学参考 2020(Z1)
    • [12].函数教学设计的实践研究[J]. 试题与研究 2020(28)
    • [13].连续函数的性质及应用教学探析[J]. 学园 2018(23)
    • [14].老师,我怎么学会思考——函数与性质篇[J]. 新世纪智能 2018(29)
    • [15].例谈函数单调性的“四用”[J]. 数理化解题研究 2019(04)
    • [16].活学巧解函数的零点问题[J]. 中学生数理化(高一数学) 2019(01)
    • [17].锁定函数零点,快速求解问题[J]. 中学生数理化(高一数学) 2019(01)
    • [18].优化教学设计,促进学生学习——以《对数函数及其性质》教学设计为例[J]. 试题与研究 2019(06)
    • [19].例谈具体函数抽象化解题[J]. 新世纪智能 2019(06)
    • [20].对数函数与二次函数复合的有关问题研究[J]. 中学生数理化(学习研究) 2019(06)
    • [21].分离函数法的类型及简单运用[J]. 高中数理化 2019(Z2)
    • [22].隐零点处理策略——设而不求,等价转化[J]. 新课程(中学) 2019(07)
    • [23].解读函数的“零点”[J]. 中学课程辅导(教师通讯) 2019(18)
    • [24].对数函数单调性的应用知多少[J]. 中学生数理化(高一使用) 2019(09)
    • [25].不识函数 有帮助指路[J]. 电脑迷 2009(19)
    • [26].例谈函数的构造方法[J]. 福建中学数学 2018(11)
    • [27].函数的性质[J]. 中学数学教学参考 2019(Z1)
    • [28].不畏浮云遮望眼,只缘“热点”在里面——函数热点题型解析[J]. 中学数学 2019(05)
    • [29].例谈函数零点的设而不求问题[J]. 高中数学教与学 2019(05)
    • [30].类比迁移是连接指数与对数函数的桥梁——“对数函数”的教学设计[J]. 高中数学教与学 2019(16)

    标签:;  ;  ;  ;  ;  ;  ;  ;  

    静态二进制翻译中基于软件规范的函数识别及恢复技术研究
    下载Doc文档

    猜你喜欢