2025 · 会议论文

探索大语言模型在代码去混淆中的潜力

Exploring the Potential of LLMs for Code Deobfuscation

研究将大语言模型用作源码到源码的去混淆器,处理经 Tigress 混淆器保护的 C 函数。研究从 ExeBench 选取函数并随机化标识符,再施加五种变换:MBA 算术编码、分支编码、控制流平坦化、不透明谓词和参数随机化。模型每次读入一个完整的混淆函数并输出简化后的 C 代码。DeepSeek Coder 6.7B 与 Code Llama 7B 在“混淆—原始”代码对上微调,GPT-4 通过提示使用,Clang 的 -O0 至 -O3 优化则作为编译器基线。简化效果以 Halstead 程序长度相对于原始代码与混淆代码的变化衡量,语法正确性通过编译 ExeBench 包装程序检查,语义正确性则用 ExeBench 输入/输出样例检查。微调模型在每种变换上降低复杂度的幅度都大于 GPT-4,除算术编码和参数随机化(Clang 与之相当)外也大于 Clang。模型在最多五个变换组成的链上训练,在六个和七个变换的链上得分仍保持稳定;最佳模型在最困难场景中平均将 Halstead 程序长度缩减 89.21%。随机化常量的记忆测试只发现一个样本复现了记忆中的代码。

研究范围与局限

混淆使用 Tigress(发布脚本中为 3.3.3 版),以源码到源码的方式作用于单个 C 函数。研究未评估已编译二进制、反编译器输出、商业保护器、跨过程混淆、基于虚拟机的加壳或自修改代码;作者仅指出可通过反编译从二进制得到近似的 C 代码。这是源码级简化,并非二进制去混淆或虚拟机去虚拟化。语义正确性是主要短板:在单一变换场景中,微调模型保持行为的样本比例为 50% 至 94.5%,大多低于 GPT-4,除分支编码外也低于 Clang,并且随着变换链变长而下降。复杂度得分只统计语法与语义均正确的样本。行为通过 ExeBench 输入/输出样例检查,而非等价性证明;输入受 6,144 个词元的上下文限制,模型微调时还使用了 8 位量化。研究只使用一种混淆器,因此对其他混淆器、版本、机器码或字节码的泛化仍待验证;基线是 GPT-4 与 Clang,而非专用去混淆工具。

与本合集的关联

补充利用微调代码大语言模型对受保护 C 代码进行源码级去混淆的研究,与书目中的 JavaScript(JsDeObsBench、CASCADE)和 Android(DeGuard)去混淆论文以及本节的大语言模型反编译研究互补。

发表与复核详情

发表载体
DIMVA 2025
发表状态
会议论文
出版/提交日期
2025 年 7 月 10 日
日期依据
Springer 提交的 Crossref 元数据将首次在线出版日期列为 2025-07-10,处于 7 月 9–11 日会议期间;其纸质出版与发布日期只给出年份。本条目采用出版方的在线出版日期,不依据会议日程或之后的 CISPA 存储库日期。
DOI
10.1007/978-3-031-97620-9_15

Springer 提交的 Crossref 元数据列出第 22 届 DIMVA(格拉茨,2025 年 7 月 9–11 日)的 Lecture Notes in Computer Science 论文集、第 267–286 页,以及与 PDF 署名顺序一致的九位作者。Springer 页面对自动请求返回浏览器验证,因此本次审阅依据 Crossref,以及 CISPA 存储库记录 10.60882/cispa.32771220.v1 中的开放获取 PDF(CC BY 4.0,2026-06-23 存入)。该记录与 CISPA 出版物页面将作者写作“Antonio Emanuele”和“Sébastian Bardin”;本条目的作者姓名以 Crossref 和 PDF 为准。以 Beste 为作者、标题含 deobfuscation 的 arXiv API 检索没有结果,因此 arxiv_id 为 null。PDF 链接 DavidBeste/llm-code-deobfuscation,审阅的提交为 00c9c45(2026-02-27),该提交在论文发表后才加入 MIT LICENSE。其 README 链接数据集 10.5281/zenodo.15831457(2025-07-10,CC BY 4.0,17 MB 的 deobfuscation_dataset.zip,未下载);该数据集 DOI 不用作论文标识符。脚本调用另行安装的 Tigress 3.3.3,从 Hugging Face 加载 ExeBench,并通过 OpenAI API 调用 GPT-4(README 示例中为 gpt-4-32k-0314);requirements.txt 固定了 clang 14.0 与 torch 2.4.1,但 peft 和 transformers 各列出两个相互冲突的版本。本次未运行代码或实验。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

报告条目过时 建议修正翻译

一手来源

  1. https://doi.org/10.1007/978-3-031-97620-9_15
  2. https://api.crossref.org/works/10.1007/978-3-031-97620-9_15
  3. https://ndownloader.figshare.com/files/65792754
  4. https://publications.cispa.de/articles/conference_contribution/Exploring_the_Potential_of_LLMs_for_Code_Deobfuscation/32771220
  5. https://cispa.de/en/research/publications/84747-exploring-the-potential-of-llms-for-code-deobfuscation
  6. README.md GitHub · DavidBeste/llm-code-deobfuscation · 修订 00c9c45
  7. LICENSE GitHub · DavidBeste/llm-code-deobfuscation · 修订 00c9c45
  8. requirements.txt GitHub · DavidBeste/llm-code-deobfuscation · 修订 00c9c45
  9. single_transformations/eval/create_eval_data_single.py GitHub · DavidBeste/llm-code-deobfuscation · 修订 00c9c45
  10. https://zenodo.org/records/15831457