LLM4Decompile

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 开源模型 🍴 复刻 585 🐛 待处理 47 👀 关注 83
GitHub ↗
GitHub 星标 ★ 7272
维护状态 低维护
是否开源 开源
定价模式 🏷️完全免费 开源项目,MIT许可证,完全免费,可自行部署使用。

项目预览

LLM4Decompile 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类开源模型
开发团队albertan017
定价模式🏷️完全免费
价格说明开源项目,MIT许可证,完全免费,可自行部署使用。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议MIT
主要语言Python
技术栈/模型binary,decompile,large-language-models,reverse-engineering
GitHub 星标★ 7272
上线时间2024-02-28 00:00:00
代码更新2026-02-12
仓库体积30.4 MB
本站数据更新2026-11-09
维护状态低维护
收录时间2026-08-09
浏览次数4

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 7272

使用教程

难度:进阶 约 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:\n{func}')
    print(f'decompiled function:\n{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>: 标签。需把脚本中的 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

上一篇:video-SALMONN-2

下一篇:moment

同类项目推荐

LabVLA 开源

让机器人看懂实验手册,自动完成科研操作

LabVLA: Grounding Vision–Language–Action Models in Scientific Laboratories

★ 110 2026-08-09
cosmos 开源

用世界模型造物理AI训练数据,省真机成本

NVIDIA Cosmos is an open platform of world models, datasets, and tools that enables ···

★ 12320 2026-09-21
Awesome-AITools 开源

一个列表,网罗AI实用工具,省去全网搜索。

220+ AI tools across 37+ categories — chatbots, coding agents, AI video/image/voice···

★ 6284 2026-08-09
S2D2 开源

在 Notebook 里几行代码跑通 Stable Diffusion 文生图

S2D2: Simple Stable Diffusion based on Diffusers (Hires.fix on jupyter notebook, ipy···

★ 54 2026-08-09
SwiftDiffusion 开源

在苹果设备上原生运行 Stable Diffusion,打造本地 AI 画图应用

Stable Diffusion implementation using CoreML, PyTorch and SwiftUI

★ 164 2026-08-09
audio-ai-hub 开源

音频 AI 研究资料一站式导航,想找什么都有门路

The hub for audio AI research: papers, open models, benchmarks & datasets across aud···

★ 963 2026-08-09
HermesFlow 开源

一个模型搞定看图说话和文字生图,无缝切换多模态任务

[NeurIPS 2025] HermesFlow: Seamlessly Closing the Gap in Multimodal Understanding an···

★ 79 2026-08-09
Chat-UniVi 开源

一个模型同时看懂图片和视频,统一视觉理解新方案

[CVPR 2024 Highlight] Chat-UniVi: Unified Visual Representation Empowers Large Langu···

★ 945 2026-08-09
OralGPT 开源

让 AI 看懂口腔影像,辅助诊断和报告生成

[NeurIPS'25 | CVPR'26] The official repo of OralGPT & MMOral Bench.

★ 110 2026-08-09