Skip to main content
QUICK REVIEW

[论文解读] Datalog Disassembly

Antonio Flores-Montoya, Eric Schulte|arXiv (Cornell University)|Jun 7, 2019
Software Engineering Research被引用 4
一句话总结

本论文提出 Ddisasm,一种基于 Datalog 的新型反汇编框架,结合静态分析与启发式方法,从剥离的 x64 二进制文件中生成可重新汇编、符号上准确的汇编代码。通过利用 Datalog 的声明式推理来识别指令边界和符号引用歧义,Ddisasm 在 7,658 个来自不同编译器和优化级别的二进制文件上,实现了比当前最先进工具 Ramblr 更高的准确率和更快的速度。

ABSTRACT

Disassembly is fundamental to binary analysis and rewriting. We present a novel disassembly technique that takes a stripped binary and produces reassembleable assembly code. The resulting assembly code has accurate symbolic information, providing cross-references for analysis and to enable adjustment of code and data pointers to accommodate rewriting. Our technique features multiple static analyses and heuristics in a combined Datalog implementation. We argue that Datalog's inference process is particularly well suited for disassembly and the required analyses. Our implementation and experiments support this claim. We have implemented our approach into an open-source tool called Ddisasm. In extensive experiments in which we rewrite thousands of x64 binaries we find Ddisasm is both faster and more accurate than the current state-of-the-art binary reassembling tool, Ramblr.

研究动机与目标

  • 解决在缺乏源代码的情况下,对剥离二进制文件进行高精度反汇编的挑战,尤其适用于二进制重写与分析。
  • 通过集成静态分析与启发式方法,克服反汇编中的根本性歧义——即区分代码与数据,并解决符号引用问题。
  • 开发一种可扩展、高准确率的反汇编器,生成适合二进制加固、重构与插桩的可重新汇编输出。
  • 证明 Datalog 的声明式、基于规则的推理在高效且准确地组合多种反汇编分析方面具有独特优势。

提出的方法

  • 将反汇编建模为决策问题:利用来自多种分析的加权证据,确定指令边界以及操作数的符号型与字面量型。
  • 将所有反汇编逻辑实现为单一 Datalog 程序,其中逻辑依赖关系决定执行顺序,并支持分析模块的组合式构建。
  • 执行静态分析,包括定义-使用链分析、一种新颖的寄存器值分析,以及数据访问模式分析,以收集用于符号歧义消除的证据。
  • 为每项分析和启发式方法产生的证据分配权重,并通过 Datalog 规则聚合,计算每种解释的置信度分数。
  • 使用 Souffle(一种高性能 Datalog 引擎)将 Datalog 程序编译为优化后的 C++ 代码,以实现高效执行。
  • 通过语义保持不变的修改(如插入 NOP 指令)、重新汇编与回归测试验证结果,确保功能正确性。

实验结果

研究问题

  • RQ1统一的基于 Datalog 的框架能否有效结合多种静态分析与启发式方法,从而提升剥离二进制文件的反汇编准确率?
  • RQ2Datalog 的声明式特性如何相较于命令式实现,使反汇编组件的集成更具可扩展性与可维护性?
  • RQ3在处理复杂的真实世界二进制文件时,Datalog 的推理引擎在速度与准确率方面能否显著优于现有反汇编器?
  • RQ4该系统在不同编译器与优化级别下,对符号引用的解析能力以及保持重新汇编正确性的表现如何?

主要发现

  • 在使用 7 种编译器和 5–6 个优化标志编译的 7,658 个 x64 二进制文件上,Ddisasm 在速度与准确率方面均优于 Ramblr。
  • 在 Coreutils 基准测试套件中,Ddisasm 在所有编译器与优化级别下均实现 0 个假阳性和 0 个假阴性,仅在 ICC 编译下仍显著优于 Ramblr。
  • 在真实应用测试中,Ddisasm 在所有编译器下均实现 0 个损坏二进制文件与 0 个假阳性,仅在 ICC 的 -O3 与 -Ofast 模式下出现 10 个假阳性和 1 个假阴性。
  • 在 CGC 基准测试套件中,Ddisasm 在所有编译器与优化级别下均保持 0 个假阳性和 0 个假阴性,而 Ramblr 在 ICC 下报告最多 106 个损坏二进制文件。
  • Ddisasm 在最具挑战性的二进制文件上表现更优,包括使用 ICC 编译的二进制文件,此时 Ramblr 因超过 16,000 个假阳性而完全崩溃。
  • 该系统使用 Datalog 使得复杂反汇编逻辑的实现更加清晰、模块化且易于维护,执行顺序完全由数据依赖关系决定。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。