首页/新闻资讯/正文详情

LLM4Decompile 完整指南:用大模型把二进制代码变回 C 源码的 5 个步骤

发布时间:2026/9/24 17:10:52 来源:云帆数科 栏目:资讯中心
LLM4Decompile 完整指南:用大模型把二进制代码变回 C 源码的 5 个步骤
LLM4Decompile 完整指南用大模型把二进制代码变回 C 源码的 5 个步骤【免费下载链接】LLM4DecompileReverse Engineering: Decompiling Binary Code with Large Language Models项目地址: https://gitcode.com/GitHub_Trending/ll/LLM4DecompileLLM4Decompile 是一个专注二进制反编译的大语言模型开源项目用微调过的 LLM 把 Linux x86_64 二进制的汇编还原成可读 C 代码覆盖 GCC 的 O0–O3 优化级别附带两百万对训练数据的 Decompile-Bench 基准和完整评测脚本。 先看它解决了什么源码丢失后怎么办你手头有一个二进制文件但源码找不到了——老系统维护、遗留模块分析、安全审计都是这种场景。传统反编译器比如 Ghidra、IDA能给出伪代码但变量名全是param_1、local_28读起来像天书。LLM4Decompile 做的事情更直接它把汇编或伪代码作为输入直接输出接近原始风格的 C 函数并用能不能重新编译执行并通过测试来衡量质量。举个例子给samples/sample.c里的func0函数编译出二进制项目自带 demo 能把它一步步还原回可读的 C 代码。 五分钟跑起来Docker 一键部署 LLM4Decompile 反编译环境项目提供了官方 Dockerfile里面预装好了 CUDA、PyTorch、Ghidra 11.0.3 和 Java 17省去手动装 Ghidra 的麻烦。clone 仓库后按下面任一条路径走git clone https://gitcode.com/GitHub_Trending/ll/LLM4Decompile cd LLM4Decompile # 路径一Docker预装 CUDA、Ghidra、Java 17 docker build -t llm4decompile . docker run --gpus all -it --name llm4decompile llm4decompile /bin/bash cd ghidra python demo.py # 路径二本地 conda 环境参考 requirements.txt conda create -n llm4decompile python3.9 -y pip install -r requirements.txtdemo.py默认会反编译 samples/sample.c 中的func0函数先 gcc 编译成二进制再用 Ghidra 生成伪代码最后交给 V2 模型精化成 C 代码。全程几分钟取决于显存大小和模型版本跑完你会在控制台看到原始伪代码和模型输出的对照。⚙️ 它是怎么做到的从汇编到 C 源码的完整链路核心链路是输入 → 处理 → 输出。先说一个关键限制LLM 吃的是文本不是 0 和 1所以原始二进制必须先经过objdump之类的工具反汇编成汇编指令。之后有两条路线End 路线V1.5 系列输入是纯汇编模型直接生成 C 代码。汇编越贴近源码结构O0 优化级别还原效果越好。Ref 路线V2 系列输入是 Ghidra 反编译出的伪代码——逻辑已经保住但语法生硬、命名混乱。模型只负责打磨这一步不用从汇编硬啃所以整体成功率更高。质量怎么衡量项目主用可再执行性Re-executability把反编译出的代码重新编译跑一遍预置的测试断言全部通过才算成功——这是比长得像硬得多的标准。你在 decompile-bench/ 里可以直接复现这个评测cd decompile-bench python3 run_exe_rate.py \ --model_path LLM4Binary/llm4decompile-1.3b-v1.6 \ --dataset_path ./data/humaneval-decompile.json \ --output_path ./data/humaneval多卡或想跑更大模型可用 evaluation/ 下的 vLLM 批量评测脚本。 跑通之后的进阶玩法Ref 管线、两阶段命名与自训模型Ref 两阶段管线先用 Ghidra Headless 把二进制拆成伪代码再让 LLM4Decompile-RefV2 系列精化成 C。官方数据里 22B-V2 比 6.7B-V1.5 的可再执行率高 40.1%是当前成功率最高的路线入口脚本是 ghidra/demo.py。SK²Decompile 骨架→皮肤两阶段第一骨架阶段把伪代码转成混淆后的中间表示、恢复程序结构第二皮肤阶段再填回有意义的变量名。在 505 个函数的 BringUpBench 上可再执行性达 27.0%超过 IDA Pro 的 21.7%实现见 sk2decompile/。训练自己的反编译模型decompile-bench/ 从一亿条原始函数对中筛出 200 万对二进制-源码训练数据和 7 万条评测数据450GB 二进制编译而来小数据集 decompile-ghidra-100k 配合 train/ 的 DeepSpeed 脚本单张 A100 40G 约 3.5 小时、成本 20 美元以内就能复现一个可再执行性 0.26 的模型。⚠️ 容易踩的坑函数名、优化级别与测试集不匹配demo 报 compile fails 或 bad case no function found→ 你没把脚本里的默认函数名func0换成目标函数名或编译产物里根本没有这个符号 → 改成你的实际函数名并先确认编译后的文件包含该函数。O2/O3 下效果明显变差甚至函数消失→ 高优化级别会内联、重排代码原函数可能已不存在于二进制中模型也救不回被内联掉的结构 → 先用 O0/O1 验证管线再考虑高优化级别且优先选 Ref 路线。评测结果和官方数字对不上→ 测试集和模型版本不匹配V1.5 系列要喂汇编版数据集V2 系列要喂 Ghidra 伪代码版数据集 → 按模型版本选对 legacy-test/ 里对应的gcc-obj或gcc-ghidra文件。自建数据集时编译大量报错→ 缺系统依赖库 → 按 decompile-bench 要求安装libboost-dev、libssl-dev等编译依赖。vLLM 版本冲突→ 主仓库requirements.txt锁定vllm0.4.0而 decompile-bench 要求0.5.2→ 给两类任务各建独立 conda 环境别混用一个。 适合谁用、怎么选模型版本与场景对照适合你如果你手上是Linux x86_64、GCC 编译O0–O3的 C 二进制且没有源码或者你在做反编译方向的研究、需要现成的训练数据和评测脚本。模型从 1.3B 到 22B 都有显存紧张选 1.3B/6.7B追求效果选 9B-V2可再执行性 64.9%是全家最高。局限同样要说清楚目前只支持 x86_64 架构和 C较新的数据集扩展到 CARM、Windows 二进制不在范围内最好的可再执行性也只在 65% 左右意味着三成结果仍需人工修。和传统工具比Ghidra/IDA 胜在覆盖广但命名可读性差LLM4Decompile-Ref 本身就是接在 Ghidra 之后做二次精修相比直接让通用大模型如 GPT 系列硬翻汇编专用模型的可再执行性高出 20 个百分点以上SK²Decompile 报告 21.6%。建议先把 Docker demo 跑通再用 9B-V2 模型加 Ghidra 伪代码对你自己的二进制做一次 Ref 反编译确认管线顺畅后再考虑自训模型或尝试 SK²Decompile 的两阶段命名。【免费下载链接】LLM4DecompileReverse Engineering: Decompiling Binary Code with Large Language Models项目地址: https://gitcode.com/GitHub_Trending/ll/LLM4Decompile创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

PaddleSpeech WebSocket 服务层源码解析:`paddlespeech.server.ws` 模块的流式 ASR / TTS 接口设计
PaddleSpeech WebSocket 服务层源码解析:`paddlespeech.server.ws` 模块的流式 ASR / TTS 接口设计

人工智能语音音频 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword… · 2026/9/24 17:10:52

基于 Java Spring Boot 的在线作业管理系统设计与实现
基于 Java Spring Boot 的在线作业管理系统设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 引言 随着高校和培训机构教学规模的不断扩大,传统的人工布置、收集和批改作业的方式已经难以满足日常教学管理的需求。教师需要花费大量时间在作业的收发… · 2026/9/24 17:10:39

办公智能体集体化身 “桌宠”? ——一文拆解 Loomy Agent,看 AI 如何用情感设计打破工具感
办公智能体集体化身 “桌宠”? ——一文拆解 Loomy Agent,看 AI 如何用情感设计打破工具感

从QQ宠物到AI桌宠,20年后的“桌面陪伴”有了完全不同的技术内核。2026年,一个看似“复古”的产品形态正在技术圈悄然复兴——桌面宠物。腾讯QQ宠物以3D形象回归手机端;WorkBuddy上线Buddy猫“成长计划”,做任务攒积分、开盲盒、养… · 2026/9/24 17:10:26

博客系统接口测试用例设计
博客系统接口测试用例设计

· 2026/9/24 17:54:46

长上下文旗舰同日登场,推理成本战改写产业算力格局|林伽一 · AI科技日报 | 2026年09月23日
长上下文旗舰同日登场,推理成本战改写产业算力格局|林伽一 · AI科技日报 | 2026年09月23日

今日 AI 产业出现一组相互印证的信号:阶跃星辰发布 600B 参数的 Step 5 Preview、xAI 的 Grok 4.6 上线 Amazon Bedrock、阿里巴巴发布 7B 的 Qwen-Image-2.1,同日还有 RBS-Attention 提出 20.65 倍的预填充加速方法、AWS 开源 Strands Harness 智能体框… · 2026/9/24 17:54:46

第一章-导言
第一章-导言

1.1入门 咱们学习一门编程语言&#xff0c;第一个程序当然是打印"hello worlld". #include <stdio.h>int main() {printf("hello world\n");return 0; } 一个C语言程序的运行必须要有main函数&#xff0c;他是函数的入口。printf("hello world… · 2026/9/24 17:54:46

从零开始用 Linux:文件与目录操作
从零开始用 Linux:文件与目录操作

先确认你在哪&#xff1a;看终端的提示符——fjxfjx:~$ → 已经在 Ubuntu 里&#xff0c;直接往下敲C:\Users\72344> → 还是 Windows 的 cmd&#xff0c;先敲 wsl 回车进去第一步&#xff1a;装 g&#xff08;三条命令&#xff0c;依次敲&#xff09;sudo —— 怎么以管理员… · 2026/9/24 17:54:46

技术碎碎念01
技术碎碎念01

一、多智能体系统1.1 受控多智能体 vs 开放式多智能体开放式的多智能体稳定性太难控制&#xff0c;操作不可预期。受控多智能体是一种很好的解决方案&#xff0c;虽然会丢失一些灵活性&#xff0c;但从企业场景的稳定性来看&#xff0c;很值得考虑。先固定再谈论自由&#xff0… · 2026/9/24 17:54:46

数据分析最常用的9个模型,撑起80%的分析工作
数据分析最常用的9个模型,撑起80%的分析工作

做数据分析这些年&#xff0c;我越来越觉得&#xff0c;真正高频、真正能解决业务问题的分析模型&#xff0c;其实没有想象中那么多。刚开始做分析的时候&#xff0c;很容易有一种错觉&#xff1a;模型越高级&#xff0c;分析能力越强。于是很多人会去学回归、聚类、决策树、时… · 2026/9/24 17:54:40

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介&#xff1a;面向时间序列数据建模的一维卷积神经网络完整实现&#xff0c;适合深度学习入门者及需要快速验证时序模型的研究者&#xff0c;能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小&#xff0c;只有3KB&#xff0c;内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L&#xff0c;而是舌尖上的L最近在几个方言群和语音教学社群里&#xff0c;反复看到有人发一句&#xff1a;“也说字母L&#xff1a;柔软的长舌”。初看以为是英语发音课笔记&#xff0c;点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码