paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Control-Flow Deobfuscation using Trace-Informed Compositional Program Synthesis

基于轨迹信息组合式程序合成的控制流反混淆
OOPSLA 8(OOPSLA2)2024匹配度 2/10 · 该论文研究基于程序合成的控制流反混淆,属于传统程序分析与合成领域,不涉及用户关注的LLM/Agent与静态分析交叉、浮点程序分析或贝叶斯程序分析等核心方向,匹配度低。引用 7 inbox
Benjamin Mariano, Ziteng Wang, Shankara Pailoor, Christian Collberg, Işil Dillig
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:提出 Chisel:用轨迹引导的组合程序合成实现通用控制流反混淆,86% 案例还原出原程序。

代码反混淆旨在简化被故意混淆的代码,是恶意软件检测等安全分析的关键环节,但现有方法大多无法处理修改控制流的混淆,或仅针对特定混淆类型。本文将反混淆建模为程序合成问题:给定混淆程序 P,合成一个 P 的控制流约简且语义等价的最小程序。由于不假设混淆类型,该合成问题极具挑战。作者提出轨迹信息引导的组合式合成算法,利用动态执行轨迹中的线索推断去混淆后的控制流骨架,并将问题分解为各基本块的独立合成。在 Chisel 工具中实现并在 546 个使用六种混淆技术组合的基准上评估,86% 情况下生成代码与原程序几乎相同(仅变量重命名),且显著优于现有技术。

问题
现有代码反混淆技术难以处理修改控制流的混淆,或仅针对特定混淆类别,无法应对新混淆或组合混淆。
方法
将反混淆建模为程序合成:合成语义等价且控制流最小的程序;提出轨迹信息引导的组合合成算法,用动态轨迹推断控制流骨架并分块独立合成。
评估
在 Chisel 中实现,于 546 个由六种混淆技术组合生成的基准上评估;86% 案例生成代码与原程序几乎一致,并显著优于现有技术。
原文摘要(Abstract)

Code deobfuscation, which attempts to simplify code that has been intentionally obfuscated to prevent understanding, is a critical technique for downstream security analysis tasks like malware detection. While there has been significant prior work on code deobfuscation, most techniques either do not handle control flow obfuscations that modify control flow or they target specific classes of control flow obfuscations, making them unsuitable for handling new types of obfuscations or combinations of existing ones. In this paper, we study a new deobfuscation technique that is based on program synthesis and that can handle a broad class of control flow obfuscations. Given an obfuscated program P , our approach aims to synthesize a smallest program that is a control-flow reduction of P and that is semantically equivalent. Since our method does not assume knowledge about the types of obfuscations that have been applied to the original program, the underlying synthesis problem ends up being very challenging. To address this challenge, we propose a novel trace-informed compositional synthesis algorithm that leverages hints present in dynamic traces of the obfuscated program to decompose the synthesis problem into a set of simpler subproblems. In particular, we show how dynamic traces can be useful for inferring a suitable control-flow skeleton of the deobfuscated program and performing independent synthesis of each basic block. We have implemented this approach in a tool called Chisel and evaluate it on 546 benchmarks that have been obfuscated using combinations of six different obfuscation techniques. Our evaluation shows that our approach is effective and that it produces code that is almost identical (modulo variable renaming) to the original (non-obfuscated) program in 86% of cases. Our evaluation also shows that Chisel significantly outperforms existing techniques.

链接与引用

DOI 原文 · PDF(开放获取) · DBLP

BibTeX
@article{MarianoWPCD24,
  title = {Control-Flow Deobfuscation using Trace-Informed Compositional Program Synthesis},
  author = {Benjamin Mariano and Ziteng Wang and Shankara Pailoor and Christian Collberg and Işil Dillig},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {OOPSLA2},
  year = {2024},
  doi = {10.1145/3689789}
}