论文部分内容阅读
随着嵌入式设备的应用越来越广泛,传统平台上的各种软件漏洞和基于漏洞的恶意攻击行为正在向嵌入式领域蔓延。反编译作为软件逆向分析工作的基础性工程,已经在通用平台的软件漏洞挖掘及恶意行为分析中发挥了关键作用,而嵌入式平台由于其硬件架构差异巨大、系统软件灵活多变,面向嵌入式领域的软件逆向解析及安全性分析工作面临严峻挑战。研究一种适用于各种硬件架构及系统平台的多源反编译系统,将有效提高嵌入式领域软件逆向分析工作的能力。为了达到上述目的,本文针对目前多源反编译中存在的关键问题进行了深入的研究,主要贡献与创新如下: 1.改变了面向嵌入式平台自独立的逆向分析模式,提出了支持动静态信息交互的多源反编译框架。依据不同硬件平台及系统平台的相关性特征,将反汇编、代码变换、控制流分析、数据流分析等技术整合,使静态多源反编译的流程更加简洁、清晰、易扩展;基于跨平台的动态执行引擎及中间代码的插桩扩展,设计了平台无关的动态信息提取框架,并在此基础上提供动静态信息交互机制,为不同处理器平台下动态和静态分析结果的相互修正与融合提供支持。 2.提出了平台相关性透明化处理技术,实现对不同硬件平台及系统开发平台差异性的屏蔽。针对硬件平台的相关性处理,设计了指令集相关性E-R模型及指令匹配与翻译算法,定义了BRIL中间语言的语法及语义,提供了基于BRIL语义字典和VEX库的语义提升方法,实现了由汇编语言代码到 BRIL代码的快速转换。针对系统开发平台相关性处理,通过定义 XSD描述约束,给出了描述文件的结构及描述内容,设计了调用约定、库函数特征的描述约束概念图,为函数恢复及库函数识别提供支持。经平台相关性的透明化处理,目标代码被转化和映射为统一的中间语言代码及平台属性描述文件,为后续归一化静态分析奠定了基础。 3.提出了平台无关的动态信息提取技术,实现了不依赖实际硬件或仿真环境的运行时信息提取。基于跨平台的动态执行引擎,将提取的动态信息划分为抽象状态和系统视图两类。针对抽象状态提取,提出了基于中间代码的统一动态插桩方法,设计了基于扩展中间语言 BRIL#的多粒度动态插桩接口。针对系统视图,设计了系统属性描述约束概念图,定义了系统语义自省机制,设计了系统视图的提取算法,并通过制定更新策略实现了动态执行过程中系统语义视图的实时更新。不同粒度下抽象状态和系统视图提取的测试结果表明,本文采用的方法与同类工具相比具有一定的优势,能完成带有隐藏进程的进程级语义视图的准确提取。 4.提出了多维图谱的自定义抽取技术,实现了目标代码程序结构和数据流的多视角可视化。多维图谱的自定义抽取基于统一的BRI L中间语言代码以及多维图谱描述文件,改进了控制流和存储变量抽取算法,按照语句级、基本块级、结构级和过程级等多重粒度构件了算法库,实现了多维度抽象图谱的快速生成;采用图形描述语言DOT,设计基于抽象图的DOT转换接口,实现了多维抽象图谱向DOT图形描述语言的快速转换,完成了多维图谱的可视化,为更深入地分析代码漏洞及恶意行为等提供支持。通过实例测试,多维图谱的自定义抽取技术能够实现5个维度的分析结果可视化,有效提高了代码的可读性。 5.提出了动静态分析交互控制技术,实现了代码分析过程中的动静态信息之间相互补充与验证、分析流程指导及修正。按照动静态分析交互的不同方式,分别制定了由静至动STD、由动至静DTS、动静同时SDM三种信息交互机制,给出了基于异常结点的动态输入生成方法,并通过设计动态路径提取插件,实现了不同信息交互机制下的动静分析结果的相互修正,为提高反编译结果的精确性、发现隐藏代码、有效挖掘漏洞等逆向分析工作提供有力的支持。 基于上述多源反编译架构及关键技术,设计并实现的MSBAP多源二进制文件逆向分析工具已成功应用于“信息安全设备固件协同式分析与验证系统”,实现了面向x86、ARM、MIPS、PPC等多种处理器架构上可执行代码到类高级语言代码的转换,在嵌入式设备的软件逆向解析工作中发挥了重要作用。