LLM4Decompile

用大模型把二进制代码翻译成可读 C 源码,逆向效率翻倍

LLM4Decompile 是一个专注于二进制代码反编译的开源大语言模型项目。它利用深度学习技术,将编译后的汇编代码或二进制代码转换为可读的 C 语言源代码,旨在解决传统反编译工具(如 Ghidra、IDA Pro)输出可读性差、逻辑还原不准确的问题。项目提供了从数据构建、模型训练到推理的完整流程,并发布了多个参数规模的模型(如 6.8B、13B),支持不同架构(如 x86、ARM)的二进制代码。其核心能力包括:基于汇编指令序列的源码级还原、函数级反编译、以及对抗性训练提升代码语义保真度。该项目为安全分析、漏洞研究、遗留代码维护等场景提供了 AI 辅助的新工具,降低了逆向工程的门槛。

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 7048
维护状态 低维护
是否开源 是
定价模式 free

项目数据

分类开源模型
开发团队albertan017
所属国家
官网地址
定价模式free
价格说明开源项目,MIT许可证,完全免费,可自行部署使用。
访问状态
是否开源是
开源协议MIT
主要语言Python
技术栈/模型binary,decompile,large-language-models,reverse-engineering
GitHub 星标★ 7048
30天Star增速
HF 下载量
上线时间2024-02-28 00:00:00
最近更新2026-09-22 00:00:00
维护状态低维护
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数2

使用教程

难度:进阶 约 30 分钟 部署方式:本地安装 6 步

环境要求

  • Linux 环境(预处理依赖 gcc 与 objdump)
  • Conda,用于创建 Python 3.9 环境 'llm4decompile'
  • NVIDIA GPU + CUDA(模型以 torch.bfloat16 加载到 .cuda())
  • 可访问 HuggingFace 下载模型权重(如 LLM4Binary/llm4decompile-6.7b-v1.5)
  • 如走 Docker 路线需 Docker 与 --gpus all 支持(nvidia-container-toolkit)

安装与启动步骤

  1. 1克隆项目仓库

    把官方仓库克隆到本地并进入项目根目录,后续安装命令都在此目录执行。

    git clone https://github.com/albertan017/LLM4Decompile.git
    cd LLM4Decompile
  2. 2创建 Conda 环境

    按 README 指定使用 Python 3.9 创建名为 llm4decompile 的独立环境,避免依赖冲突。

    conda create -n 'llm4decompile' python=3.9 -y
  3. 3安装项目依赖

    激活环境后用 requirements.txt 一次性装齐 transformers、torch 等依赖。

    conda activate llm4decompile
    pip install -r requirements.txt
  4. 4编译并反汇编

    把待反编译的 C 文件用 GCC 编译成目标文件,再用 objdump 反汇编为 .s 汇编文件;随后按 README 的 Python 脚本清洗汇编并拼成提示词,注意把 func0 换成真实函数名。

    gcc -o samples/sample_O0.o samples/sample.c -O0 -lm
    objdump -d samples/sample_O0.o > samples/sample_O0.s
  5. 5运行模型反编译

    加载 V1.5 模型与分词器到 GPU,读取 .asm 提示词生成 C 源码,并打印原始函数与反编译结果对比。首次运行会下载权重,请留足显存与时间。

    from transformers import AutoTokenizer, AutoModelForCausalLM
    import torch
    
    model_path = 'LLM4Binary/llm4decompile-6.7b-v1.5'
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16).cuda()
    
    with open('samples/sample_O0.asm','r') as f:
        asm_func = f.read()
    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])
    
    with open('samples/sample.c','r') as f:
        func = f.read()
    
    print(f'original function:
    {func}')
    print(f'decompiled function:
    {c_func_decompile}')
  6. 6Docker 方式运行

    也可用仓库自带 Dockerfile 构建镜像;运行时加 --gpus all 挂载 GPU,进入容器后到 ghidra 目录跑 demo。需按自身资源选择合适尺寸的模型。

    docker build -t llm4decompile .
    docker run --gpus all -it --name llm4decompile llm4decompile /bin/bash
    cd ghidra
    python demo.py

关键配置

配置项必填说明示例
model_path是指定要加载的反编译模型,README 示例为 V1.5 版本LLM4Binary/llm4decompile-6.7b-v1.5
func_name是待反编译的函数名,需与汇编中出现的函数符号一致func0
OPT否编译优化级别列表,脚本会为每个级别各生成一份汇编["O0", "O1", "O2", "O3"]
max_new_tokens否生成的最大新 token 数,不应超过 4096 上下文范围2048

如何确认成功

终端先后打印出 original function 与 decompiled function,即模型成功生成了反编译 C 代码。

常见问题

Q:报错 “compile fails” 是什么原因?

A:说明反汇编结果里找不到 : 标签。需把脚本中的 func0 替换成目标 C 文件里真实的函数名再重新编译反汇编。

Q:没有 GPU 能运行吗?

A:README 中的推理示例使用 .cuda() 和 --gpus all,均假定有 NVIDIA GPU;README 未给出 CPU 运行方案,CPU 运行可能非常慢或报错。

Q:一次能反编译整个文件吗?

A:不能。README 明确说明只反编译一个函数,原始文件可以包含多个函数,需要逐个函数处理。

Q:生成结果被截断怎么办?

A:可调整 max_new_tokens,但 README 提示模型上下文最大 4096,该值需控制在此范围内。

注意事项

  • 必须把示例里的 func0 替换成真实函数名,否则预处理阶段会抛 ValueError。
  • 反编译是函数级任务,输出只对应一个函数,不等同于还原完整源文件。
  • 首次运行会从 HuggingFace 下载数 GB 级模型权重,建议提前配好网络与磁盘空间。
  • Docker 运行示例的 demo.py 位于容器的 ghidra 目录下,运行前需先 cd ghidra。

核心亮点

  • 模型直接输出 C 代码,比传统反编译器可读性高,便于理解程序逻辑
  • 提供完整训练流程和预训练模型,支持自定义微调,适配特定架构
  • 在 HumanEval 反编译基准上表现优于现有工具,还原准确率较高

不足之处

  • 对复杂控制流和优化后代码的还原仍有限,可能产生语义偏差
  • 模型推理资源消耗大,需 GPU 环境,轻量场景部署成本高
  • 文档/社区待观察

适用场景

  • 恶意代码分析:快速还原恶意样本的源码逻辑,辅助安全研判
  • 漏洞研究:对补丁或固件进行反编译,定位潜在安全缺陷
  • 遗留软件维护:将无源码的旧程序转换为可维护的 C 代码

替代项目

Ghidra、IDA Pro、RetDec

项目介绍

LLM4Decompile 是开源模型领域的开源项目,由 albertan017 开发,2024 年首次发布。

在全站 13,090 个收录项目中,它的 GitHub 星标数(7,048)位列前 7%,在开源模型分类的 424 个项目里位列前 11%。

近 41 天,它的 GitHub 星标从 6,955 增加到 7,048,净增 93。

项目已超过三个月没有代码更新,维护节奏明显放缓,最近一次代码更新于 2026-09-22。MIT许可证,完全免费,可自行部署使用。

它主要面向的使用场景是:恶意代码分析:快速还原恶意样本的源码逻辑,辅助安全研判。同类可对比的替代方案包括 Ghidra、IDA Pro、RetDec。

上一篇:video-SALMONN-2

下一篇:moment

同类项目推荐

Machine-Learning 开源

跟着博客笔记,边看边跑机器学习代码

All content related to machine learning from my blog

★ 115 2026-08-09
CoreML-Models 开源

下载即用的苹果端 AI 模型库,免去转换烦恼

Core ML model zoo for iOS/macOS — PyTorch models converted to ready-to-use .mlpacka···

★ 1873 2026-08-10