LLM4Decompile:用大语言模型将二进制代码“翻译”回源代码

你是否曾经面对一个没有源代码的二进制程序,试图理解其逻辑时感到无从下手?或者在进行软件安全分析、遗留系统维护时,被晦涩难懂的汇编代码所困扰?LLM4Decompile 的出现,旨在彻底解决这个逆向工程中的核心难题。它是一个专门用于反编译的开源大语言模型,能够将 Linux x86_64 平台的二进制可执行文件(包括 GCC 从 O0 到 O3 不同优化级别编译的产物)直接转换回人类可读的 C 语言源代码。本文将带你全面了解这个在软件逆向领域掀起变革的潜力新星。

截至收录:
LLM4Decompile项目stars数:6247
LLM4Decompile项目forks数:439

LLM4Decompile项目目录截图

LLM4Decompile项目核心亮点

  • 🚀 首创的LLM反编译模型:LLM4Decompile 是首个公开发布的、专门为反编译任务训练的大语言模型,开创了利用AI进行自动化逆向工程的新范式。
  • 🎯 支持多级优化代码:模型经过精心训练,能够处理由 GCC 编译器在 O0、O1、O2、O3 不同优化级别下生成的二进制代码,覆盖了从调试版本到高度优化版本的全场景。
  • ⚙️ 双模式工作流:项目提供两种核心模型:LLM4Decompile-End 直接从二进制/汇编代码生成C源码;LLM4Decompile-Ref 则作为后处理工具,用于优化 Ghidra 等传统反编译工具输出的伪代码,使其更易读、更准确。
  • 📊 科学的评估体系:项目不仅提供模型,还建立了完整的评估基准(如 HumanEval-Decompile, ExeBench)和核心指标“重执行率”,用于客观衡量反编译代码的功能正确性,确保研究成果的可复现和可比较。

LLM4Decompile项目快速开始

只需几步,你就能体验使用大语言模型进行反编译的神奇过程:

  1. 环境搭建:克隆项目并安装依赖。
    git clone https://github.com/albertan017/LLM4Decompile.git
    cd LLM4Decompile
    conda create -n  llm4decompile  python=3.9 -y
    conda activate llm4decompile
    pip install -r requirements.txt
  2. 预处理(编译与反汇编):首先,你需要将C源代码编译成二进制,再使用 objdump 将其反汇编成汇编指令。项目提供了详细的Python脚本示例来完成这一过程,并生成模型所需的提示格式。
  3. 运行反编译:使用 Hugging Face Transformers 库加载预训练模型,将汇编指令“翻译”回C代码。
    from transformers import AutoTokenizer, AutoModelForCausalLM
    import torchmodel_path = LLM4Binary/llm4decompile-6.7b-v1.5
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16).cuda()
    

    asm_func 为预处理得到的汇编提示文本

    inputs = tokenizer(asm_func, return_tensors="pt").to(model.device) with torch.no_grad(): outputs = model.generate(**inputs, max_new_tokens=2048) c_func_decompile = tokenizer.decode(outputs[0][len(inputs[0]):-1]) print(f Decompiled function:\n{c_func_decompile} )

LLM4Decompile项目应用场景

  • 软件安全与漏洞分析:安全研究人员可以快速将无源码的恶意软件或存在漏洞的闭源组件反编译为高级语言,大幅降低分析二进制漏洞的门槛和时间成本。
  • 遗留系统维护与重构:当面对年代久远、源代码丢失的遗留系统时,开发团队可以使用此工具恢复出近似源码,为理解逻辑、修复问题或进行现代化重构提供关键依据。
  • 编译器与优化技术研究:研究人员可以通过对比原始源码和从不同优化级别二进制反编译回来的代码,直观地研究编译器的优化行为及其对代码结构的影响。
  • 数字取证与知识产权调查:在法律和技术调查中,帮助专家理解可疑二进制程序的实际功能,辅助进行知识产权侵权鉴定。

用户案例:作为一个前沿的研究型开源项目,LLM4Decompile 的主要用户包括全球的软件安全实验室、大学研究团队(如项目作者所在的学术机构)以及对逆向工程和程序分析感兴趣的开发者。其模型已托管在 Hugging Face 平台,供社区下载、评估与应用。

LLM4Decompile项目链接

albertan017 / LLM4Decompile项目地址:https://github.com/albertan017/LLM4Decompile

本文地址:https://www.tgoos.com/32115

声明:本站资源均整理自互联网,版权归原作者所有,仅供学习交流使用,请勿直接商用,若需商用请购买正版授权。因违规使用产生的版权及法律责任由使用者自负。部分资源可能包含水印或引流信息,请自行甄别。若链接失效可联系站长尝试补链。若侵犯您的权益,请邮件(将 # 替换为 @)至 feedback#tgoos.com,我们将及时处理删除。转载请保留原文链接,感谢支持原创。