ReCopilot: 基于大模型的二进制逆向工程助手
Baby Introduction
ReCopilot 是一个专为二进制代码分析构建的专家大型语言模型(LLM),旨在解决二进制逆向工程中的关键挑战。
Observation & Insights
ReCopilot 旨在解决以下问题:
- 缺少领域知识
- 跨任务能力迁移
- Test-timescaling
- 上下文感知
ReCopilot: Overview
ReCopilot 通过以下步骤构建:
- 构建二进制大模型:ReCopilot
- Raw Dataset:
- 数据来源:
- 现成的软件包:带有调试信息和源代码的软件源(Launchpad.net)
- 交叉编译:Cross-Arch, Cross-Opti, Cross-Compiler, Cross-PlatformSoftSec-KAIST/BinKitPKGBUILD-ArchWiki
- AutoCompiler:Ad-hoc 软件/库
- Pretrain Dataset:
- SFT Dataset:
- DPO Dataset:
- 目标:提升输出格式遵循能力 & 增强推理逻辑一致性
- 收集good-bad样本对
ReCopilot: Demo
- Demovideo 展示了 ReCopilot 的实际应用效果
Evaluation: Overall Effectiveness
- Tool-level:ReCopilot 在工具层面表现出色
- Model-level:评估日期为 Oct 17 2025
Next Stage?
- 低级别的分析任务
- 需用户主动触发功能
- 有限的上下文感知
ReCopilot-Agent
ReCopilot-Agent 是 ReCopilot 的一个高级应用,支持高级别分析任务,并与自研专家模型深度集成,展示出自动化漏洞爆破的潜力。
ReCopilot-Agent: Code Embedding
- ReCopilot embedding model 用于代码嵌入
- ReCopilot embedding model performance 表现优异
ReCopilot-Agent: Case Study
- 真实案例:Firmware vulnerability exploitation
- Preliminary Analysis:
- Collect information
- Fuzzing to crash
- ReCopilot-Agent Workflow:
- 发现 Firmware 中的 hidden page
/apps_test.asp
- Fuzzing 发现 crash 在
libshared.so 文件中
- 分析 crash 原因并判断是否为可利用漏洞
- 示例分析:
notify_rc(const char *cmd_str)[EXPORT]↳notify_rc_service(cmd_str, 0, 15u);↳j_logmessage_normal(\"rc_service\", \"%s %d:notify_rc%s\",...);↳logmessage_normal(flag,fmt);↳vsnprintf(msg, 0x200u,fmt, varg_r2);
POST:action_mode=install&apps_name=AAAA&apps_flag=BBBB.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p
RESPONSE: Oct 10 10:35:24rc_service: httpd 31732:notify_rcstart_apps_installAAAA BBBB…...0x41414120.0x42422041
Summary
- ReCopilot 是一个专为二进制代码分析构建的专家LLM,以更小的模型尺寸实现了超越通用先进LLM和其他领域模型的性能
- ReCopilot-Agent 支持了高级别分析任务,与自研专家模型深度集成,展示出自动化漏洞爆破的潜力
Discussion
- 可能的未来:
- 预先执行的反编译优化产生源代码级别的结果
- 二进制分析工具中内嵌的智能体
- 智能体主导的二进制分析云服务及其规模效应
- 如何防御:
Q&A
ReCopilotWebsite
ReportPaper