基于动态二进制翻译技术的反编译研究

基于动态二进制翻译技术的反编译研究

论文摘要

反编译是将使用低级语言表示的程序代码变换成与其功能等价的高级语言程序代码的过程,是编译的逆过程。它对于软件的移植、理解喝维护都起着重要作用。反编译的结果可以用于寻找程序中包含的恶意代码、bug和脆弱点,揭示程序的内部互操作机制。现有的基于静态分析技术的二进制代码反编译器具有很多理论上的局限性,包括不能有效的处理间接跳转和间接过程调用,不能进行精确的指针别名分析,需要对目标程序的代码结构做一定的假设等等。本文描述的反编译基础系统采用基于二进制翻译技术的动态分析方法,通过准确地记录程序实际的执行路径和变量关系,能较好地解决控制流混淆和二进制代码的动态指针别名分析问题。静态反编译由于无法获得程序实际执行时的输入,因此需要假设任何可能的输入和执行路径都是有效的。实际上程序中可能存在不可达路径,反编译器通常只会做保守地选择。保守的分析会使得反编译器产生执行效率较低或者可读性较差的代码,甚至导致分析失败。与静态反编译不同,本文描述的动态反编译方法可以准确获知程序执行时的输入和执行路径,因此可以针对当前的输入(实际上是与当前输入等价的一类输入)做最优的选择。使用这一方法得到的反编译结果更接近程序实际执行时的逻辑,但可能无法处理未测试的输入。本研究的主要贡献在于:1.基于Linux下的动态二进制翻译平台valgrind,实现了反编译器基础平台Dynamic Analyzer,论证了动态反编译器实现的可行性。2.使用动态控制流图构造方法,与静态构造方法相比能有效地解决目标地址获取和控制流混淆问题。3.提出了面向二进制代码的动态指针别名分析算法,有效地提高了反编译结果的准确性。4.改进了影子堆栈技术,能够更精确地识别虚假的子过程调用。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 绪论
  • 1.1 介绍
  • 1.2 反编译技术的应用
  • 1.3 反编译技术的发展历史
  • 1.4 当前面临的问题
  • 1.5 本文组织结构
  • 第二章 反编译技术综述
  • 2.1 可执行代码
  • 2.2 变量分析
  • 2.2.1 二进制代码与源代码变量间的关系
  • 2.3 类型分析
  • 2.3.1 类型信息来源
  • 2.3.2 指定常量的类型
  • 2.3.3 类型约束
  • 2.3.4 基于数据流的类型分析
  • 2.3.5 静态变量,动态变量与聚合类型
  • 2.4 表达式分析
  • 2.4.1 表达式融合
  • 2.4.2 表达式传播
  • 2.4.3 有限传播
  • 2.5 控制结构分析
  • 2.6 函数,参数/返回值识别
  • 2.6.1 函数识别
  • 2.6.2 参数/返回值识别
  • 2.7 编译器识别
  • 2.8 库函数识别
  • 2.8.1 静态库函数识别
  • 2.8.2 动态库函数识别
  • 2.9 本章小结
  • 第三章 静态反编译及其局限性
  • 3.1 静态分析
  • 3.2 动态分析
  • 3.3 静态分析与动态分析比较
  • 3.4 静态反编译的局限性
  • 3.4.1 区分代码和数据
  • 3.4.2 区别常量与指针
  • 3.4.3 指针别名分析
  • 3.4.4 其他问题
  • 3.5 本章小结
  • 第四章 DYNAMIC ANALYZER 设计与实现
  • 4.1 可执行代码分析工具DYNAMIC ANALYZER
  • 4.2 动态翻译与调试
  • 4.3 动态构造控制流图
  • 4.4 影子堆栈
  • 4.5 指针别名分析
  • 4.6 异常,线程,和信号处理
  • 4.7 动态反编译得与失
  • 4.8 本章小结
  • 第五章 全文总结
  • 5.1 主要结论
  • 5.2 研究展望
  • 参考文献
  • 攻读硕士学位期间已发表或录用的论文
  • 攻读硕士学位期间参与的科研项目
  • 致谢
  • 相关论文文献

    • [1].方舟编译器初探[J]. 科技与创新 2019(23)
    • [2].一种适用于可信编译器的源语言转换与检查框架[J]. 中国科技论文 2017(14)
    • [3].华为方舟编译器开源官网正式上线:源代码已开放下载[J]. 电脑知识与技术(经验技巧) 2019(10)
    • [4].快速掌握编译器设计方法[J]. 软件 2018(05)
    • [5].一种新的大容量SRAM编译器设计[J]. 微电子学 2015(04)
    • [6].可信编译器构造的翻译确认方法简述[J]. 计算机科学 2014(S1)
    • [7].计算智能技术在分布式多编译器中的应用分析[J]. 节水灌溉 2011(05)
    • [8].优化编译器的设计[J]. 群文天地 2011(14)
    • [9].关于C编译器对——运算编译的研究[J]. 电脑知识与技术 2010(18)
    • [10].基于编译器优化的嵌入式软件缺陷分析方法[J]. 航天控制 2016(05)
    • [11].一种农业设备嵌入式数据库预编译器设计与实现[J]. 农业网络信息 2012(03)
    • [12].编译器无关性编码在微控制器中的优势[J]. 单片机与嵌入式系统应用 2010(02)
    • [13].可信编译器关键技术研究[J]. 计算机工程与科学 2010(08)
    • [14].可视编译器的设计与实现[J]. 计算机与现代化 2010(10)
    • [15].类高级语言编译器的设计与实现[J]. 内蒙古科技与经济 2009(16)
    • [16].超强通用编译器优化工具 准确率是传统方法的5倍[J]. 计算机与网络 2020(02)
    • [17].一种静态的编译器重复缺陷报告识别方法[J]. 中国科学:信息科学 2019(10)
    • [18].魂芯DSP上复数类型的支持和优化[J]. 计算机系统应用 2017(09)
    • [19].软件/开发工具[J]. 今日电子 2014(02)
    • [20].出具证明编译器中代码优化与程序规范转换[J]. 小型微型计算机系统 2011(07)
    • [21].NI LabVIEW2010优化编译器,加速代码执行[J]. 电子测量技术 2010(08)
    • [22].运行速度大突破 华为《方舟编译器》详解[J]. 计算机与网络 2019(09)
    • [23].典型编译器自动向量化效果评估与分析[J]. 计算机科学 2013(04)
    • [24].一种支持软件演化过程描述语言的编译器的设计分析[J]. 绵阳师范学院学报 2013(02)
    • [25].基于C语言编译器的词法分析浅析[J]. 电脑知识与技术 2013(24)
    • [26].C-编译器的扫描程序与分析程序设计[J]. 信息与电脑(理论版) 2012(14)
    • [27].FANUC宏编译器的应用[J]. 精密制造与自动化 2008(04)
    • [28].高速SRAM编译器时序算法[J]. 电子与封装 2016(07)
    • [29].出具证明编译器中线性整数命题证明的自动生成[J]. 小型微型计算机系统 2011(06)
    • [30].即时编译器辅助的垃圾收集中的插桩算法研究[J]. 小型微型计算机系统 2010(04)

    标签:;  ;  ;  ;  

    基于动态二进制翻译技术的反编译研究
    下载Doc文档

    猜你喜欢