← 最新论文
💻 computer science

Can LLMs Deobfuscate Binary Code? A Systematic Analysis of Large Language Models into Pseudocode Deobfuscation

本文提出了首个涵盖多种混淆阶段的二进制代码去混淆基准 BinDeObfBench,通过系统评估发现 LLM 的去混淆效果更依赖于推理能力与领域专业知识而非模型规模,且任务特定的监督微调优于通用预训练。

原作者: Li Hu, Xiuwei Shang, Jieke Shi, Shaoyin Cheng, Junqi Zhang, Gangyang Li, Zhou Yang, Weiming Zhang, David Lo

发布于 2026-04-10
📖 1 分钟阅读☕ 轻松阅读

原作者: Li Hu, Xiuwei Shang, Jieke Shi, Shaoyin Cheng, Junqi Zhang, Gangyang Li, Zhou Yang, Weiming Zhang, David Lo

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文就像是在做一场**“超级侦探大比拼”**。

想象一下,黑客或软件保护者把一段原本清晰的程序代码(就像一本写好的书),经过各种手段“加密”和“伪装”,变成了让人看不懂的乱码(就像把书撕碎、打乱顺序、用密码重写,甚至把页码都涂黑)。这个过程叫**“混淆”**(Obfuscation)。

而**“反混淆”**(Deobfuscation)就是要把这些乱码还原成能读懂的书。以前,这主要靠人类专家或传统的自动化工具,就像靠老侦探凭经验去拼凑碎片,既慢又容易出错。

最近,大语言模型(LLM)(比如现在的 AI 聊天机器人)火了。大家很好奇:这些 AI 能不能像超级侦探一样,把被“加密”的乱码程序还原出来?

这篇论文就是专门为了回答这个问题,设计了一套**“终极考试”**(叫 BINDEOBFBENCH),把各种 AI 模型拉来考考看。


🕵️‍♂️ 核心故事:这场考试是怎么考的?

1. 出题:制造“乱码”试卷

研究者没有用现成的题目,而是自己造了一套超大规模的题库

  • 原材料:他们从网上找了 75 万行 C/C++ 代码(就像找来了很多本正常的书)。
  • 施法:他们用了 6 种不同的“魔法”(混淆技术),比如:
    • 控制流扁平化:把原本像楼梯一样有层次的代码,压扁成一个巨大的、乱糟糟的“开关迷宫”。
    • 虚假分支:在代码里塞进很多永远不走的“死胡同”,迷惑侦探。
    • 指令替换:把简单的“加法”变成复杂的“数学公式”,虽然结果一样,但看起来像天书。
  • 难度分级:他们把这些魔法组合起来,从“轻度混淆”(Level 1)一直加到“地狱级混淆”(Level 6),甚至模拟了病毒软件(Malware)那种故意写得极其恶心的代码。

2. 考生:谁在参加?

他们邀请了 9 位“选手”来解题:

  • 普通学霸:通用的 AI(如 GPT-4o, Llama 3.1)。
  • 编程专才:专门学过写代码的 AI(如 CodeLlama, Qwen2.5-Coder)。
  • 推理大师:那些会“慢思考”、能一步步推导的 AI(如 DeepSeek-R1, OpenAI-o1)。
  • 行业老手:专门做过二进制分析训练的 AI(如 ReCopilot)。
  • 传统工具:以前用的老式自动化工具(作为对照组)。

3. 阅卷:怎么打分?

光看答案对不对不行,还要看“写得漂不漂亮”。他们用了四个维度:

  • 词汇一致性:还原出来的代码,名字起得像不像原来的?(比如变量名是 x 还是 temp)。
  • 语义保留度这是最重要的! 代码逻辑变没变?功能还一样吗?
  • 代码简洁度:是把乱码变干净了,还是越还原越啰嗦?
  • 可读性:人类工程师看了能不能一眼看懂?

💡 核心发现:谁赢了?为什么?

🏆 发现一:个头大不一定赢,会“思考”的才赢

以前大家觉得,AI 参数越大(脑子越大)就越聪明。但这次考试发现,单纯靠“死记硬背”的大模型(参数多)反而输给了会“推理”的模型。

  • 比喻:这就好比,一个背下了所有字典的“大书呆子”(大参数模型),遇到一个复杂的逻辑迷宫,只会死记硬背地乱撞;而一个**“推理大师”(如 DeepSeek-R1),虽然书没背那么多,但它会一步步推演**:“如果这里走不通,那一定是因为前面有个陷阱,我要换个思路……"
  • 结论:在破解复杂代码时,“推理能力”比“模型大小”更重要

🏆 发现二:专门训练比“博闻强记”更管用

那些专门针对“反混淆”任务进行微调(Fine-tuning)的模型,表现比那些什么代码都学过的通用模型要好得多。

  • 比喻:就像让一个全科医生(通用模型)去修精密手表,不如让一个专门修手表的技师(任务微调模型)去修。虽然全科医生知道很多医学知识,但面对手表的齿轮,技师更懂行。

🏆 发现三:给“提示”反而可能帮倒忙?

通常我们认为,给 AI 看几个例子(少样本学习,Few-shot),它能学得更好。

  • 普通模型:看了例子,确实变聪明了,知道怎么模仿。
  • 推理模型:反而变笨了
  • 比喻:推理模型就像是一个正在深度思考的数学家。如果你在他解题时,在旁边一直给他看“标准答案的写法”,他反而会分心,觉得自己是在“模仿”而不是在“思考”,结果把原本清晰的逻辑搞乱了。

🏆 发现四:AI 是“去噪”高手

面对那种被故意写得极其混乱、充满垃圾指令的病毒代码,传统的工具(像 D810)经常直接“死机”或报错。但 AI 模型,特别是推理模型,能把那些没用的垃圾指令“过滤”掉,把代码还原得干干净净,让人类工程师能看懂。


🚀 总结:这篇论文告诉我们什么?

  1. AI 真的能破解乱码:大语言模型在还原被混淆的代码方面,展现出了惊人的潜力,甚至能处理人类都觉得头疼的复杂病毒代码。
  2. 不要迷信“大”:在破解代码这件事上,“会思考”(推理能力)和“懂行”(领域知识)比“脑子大”(参数量)更重要
  3. 未来的方向
    • 与其盲目堆砌模型参数,不如让 AI 学会一步步推理
    • 与其让 AI 什么代码都学,不如让它专门练习“反混淆”这项技能
    • 对于推理型 AI,少给提示,多让它自己思考,效果可能更好。

一句话总结
这就好比在解一个超级复杂的魔方,以前我们以为谁手里拿的魔方多(参数大)谁就能赢,结果发现,那个愿意停下来、一步步分析魔方结构、并且专门练过解魔方技巧的人(推理 + 微调),才是最终的冠军。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →