DAILA

GitHub
693 60 中等 1 次阅读 4天前BSD-2-Clause语言模型插件
AI 解读 由 AI 自动生成,仅供参考

DAILA(反编译器人工智能语言助手)是一款专为软件逆向工程设计的智能插件,旨在让安全研究人员和开发者在反编译过程中无缝集成各类大语言模型。它解决了传统逆向分析中人工理解汇编代码耗时费力、门槛高的问题,通过 AI 辅助自动生成函数摘要、重命名变量及解释逻辑,显著提升分析效率。

这款工具特别适合二进制安全分析师、恶意软件研究员以及从事软件逆向工作的开发者使用。其核心亮点在于“反编译器无关”的架构设计:基于 LibBS 库,DAILA 能够统一支持 IDA Pro、Ghidra、Binary Ninja 和 angr 等多种主流反编译平台,用户无需为不同工具重复配置。同时,它兼容广泛的 AI 模型,既支持 ChatGPT、Claude 等云端服务,也能部署 Llama2 等本地模型,甚至集成了专用于变量重命名的 VarBERT 模型,兼顾了灵活性与数据隐私。

无论是通过图形界面右键快捷调用,还是在脚本中编程交互,DAILA 都提供了直观的操作体验。作为曾在 HITCON CMT keynote 展示并经 NDSS 学术研究验证的工具,它将前沿的 AI 能力转化为实用的逆向工程助力,是人机协作探索软件内部逻辑的得力伙伴。

使用场景

某安全研究员正在对一款闭源的商业恶意软件进行逆向分析,面对经过高度混淆且变量名毫无意义的二进制代码,急需快速理解核心函数的逻辑。

没有 DAILA 时

  • 研究人员必须手动逐行阅读晦涩的汇编或伪代码,耗费数小时才能推测出某个加密循环的真实意图。
  • 所有识别出的关键变量和函数都需要人工重命名,不仅效率低下,还容易因疲劳导致上下文理解不一致。
  • 若需切换不同的反编译器(如从 IDA Pro 转到 Ghidra)或尝试不同的 AI 模型,必须重新配置环境或编写独立的脚本,工作流频繁中断。
  • 面对复杂的算法逻辑,缺乏即时的智能摘要辅助,只能依赖个人经验盲目猜测,极易陷入分析死胡同。

使用 DAILA 后

  • 研究人员只需在反编译器中右键点击函数,DAILA 即可调用 GPT-4 或本地模型瞬间生成准确的函数功能摘要,将数小时的工作缩短至几分钟。
  • 利用集成的 VarBERT 等本地模型,DAILA 能自动根据代码语义批量重命名变量,使伪代码可读性大幅提升且保持上下文一致。
  • 通过统一的 LibBS 接口,DAILA 让研究人员能在 IDA Pro、Ghidra 或 Binary Ninja 中无缝切换,并使用相同的脚本接口调用任意支持的 LLM,无需重复配置。
  • 遇到复杂逻辑时,可直接在 GUI 中与 AI 对话询问具体代码块的含义,获得针对性的解释,显著降低了逆向分析的认知门槛。

DAILA 通过将多模型 AI 能力深度嵌入反编译工作流,把原本枯燥耗时的手动逆向过程转变为高效的人机协作模式。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 未说明 (本地模型 VarBERT 依赖 CPU 或通用 GPU,具体配置未列出
  • 云端 LLM 无本地 GPU 需求)
内存

未说明

依赖
notes1. 核心功能通过 LibBS 库支持多种反编译器:IDA Pro (>=8.4), Ghidra (>=12.0), Binary Ninja (>=2.4), angr-management (>=9.0)。 2. Ghidra 用户需额外步骤:必须在 PyGhidra 模式下运行,确保系统路径中有 python3,并在脚本管理器中启用 daila 脚本。 3. 支持通过 LiteLLM 连接各类远程大模型(如 ChatGPT, Claude, Llama2 等),需提供相应的 API Key。 4. 若需使用本地变量重命名模型 VarBERT,需安装完整版 ('dailalib[full]'),首次安装会自动下载模型;离线环境建议使用提供的 Docker 镜像。 5. Docker 镜像包含 Ghidra 和 DAILA,适用于 x86_64 Linux,使用时需配置 X11 转发以显示图形界面。
python3.x (Ghidra 集成明确要求路径中包含 python3,且提到从 Python 2 环境调用 python3)
dailalib
libbs
litellm
varbert_api (可选,用于本地变量重命名)
DAILA hero image

快速开始

DAILA

反编译器人工智能语言助手(DAILA)是用于反编译器中的人工智能系统的统一接口。 借助 DAILA,您可以在多个反编译器中使用相同的脚本和 GUI 界面来调用各种本地及远程大语言模型等 AI 系统。 DAILA 曾在 HITCON CMT 2023 的主题演讲中亮相,并被纳入 NDSS 2026 年论文《协同反编译:软件逆向工程中人机协作的实证研究》(链接)进行深入探讨。 如需该论文的代码库,请访问 此处

欢迎加入下方 Discord 社区获取更多在线帮助(托管于 BinSync 服务器):

Discord

支持的反编译器与 AI 系统

DAILA 通过 LibBS 库以抽象方式与反编译器交互。 这使得 DAILA 能够支持以下反编译器:

  • IDA Pro:≥ 8.4
  • Ghidra:≥ 12.0
  • Binary Ninja:≥ 2.4
  • angr-management:≥ 9.0

DAILA 支持 LiteLLM 中所支持的任何大语言模型,例如:

  • ChatGPT
  • Claude
  • Llama2
  • Gemini
  • 以及其他更多……

此外,DAILA 还支持多种类型的本地模型,比如 VarBERT,这是一种用于反编译过程中变量重命名的本地模型,并发表于 S&P 2024 年会议。

安装

通过 pip 安装我们的库后端,并使用安装程序为反编译器安装插件:

pip3 install dailalib && daila --install 

以上为轻量模式。若需使用 VarBERT,则必须安装完整版

pip3 install 'dailalib[full]' && daila --install 

此命令还将通过 VarBERT API 为您下载 VarBERT 模型。
若您正在一台无法联网的设备上安装 DAILA,例如安全网络环境,可参考下方“Docker 容器”部分使用我们的 Docker 镜像。

Ghidra 特别说明

为了让 Ghidra 正常运行,您需要执行一些额外步骤。首先,确保以 PyGhidra 模式运行。您可以通过进入 Ghidra 安装目录并执行 ./support/pyghidraRun 来实现。 接下来启用 DAILA 插件:

  1. 启动 Ghidra 并打开二进制文件。
  2. 前往 Windows > Script Manager 菜单。
  3. 搜索 daila 并启用该脚本。

Ghidra 版本要求您的系统路径中包含 python3。我们实际上是从 Python 2 内部调用它的。此外,您可能还需要在 Ghidra 中将 $USER_HOME/ghidra_scripts 设置为有效的脚本路径。

手动安装(若上述方法失败)

如果上述安装步骤失败,您需要手动安装。首先在仓库中运行 pip3 install dailalib,然后将 daila_plugin.py 文件复制到您的反编译器插件目录。

使用方法

DAILA 设计为两种使用方式:

  1. 作为带有 GUI 的反编译器插件。
  2. 作为反编译器中的脚本库。

反编译器 GUI

除 Ghidra 外(见下文),当您启动反编译器时,会在函数区域的任意位置右键单击时出现一个新的上下文菜单:

DAILA 上下文菜单

如果您使用的是 Ghidra,请前往 Tools->DAILA->Start DAILA Backend 启动后端服务。完成此操作后,即可按照上述方式使用上下文菜单。

脚本使用

您可以通过导入 dailalib 包在自己的脚本中使用 DAILA。以下是使用 OpenAI API 的示例:

from dailalib import LiteLLMAIAPI
from libbs.api import DecompilerInterface

deci = DecompilerInterface.discover()
ai_api = LiteLLMAIAPI(decompiler_interface=deci)
for function in deci.functions:
    summary = ai_api.summarize_function(function)

Docker 容器

如果您计划在不联网的环境中一次性安装 DAILA,例如安全网络,可以使用我们的 Docker 容器。您可以自行构建容器、将其保存为 tarball 并在目标机器上加载,也可以直接使用我们预构建的镜像。
自行构建容器的方法是在本仓库根目录下运行 docker build . -t daila
您也可以通过运行 docker pull mahaloz/daila:latest 下载我们预构建的镜像(该镜像适用于 x86_64 架构的 Linux)。
容器内包含了 DAILA 和一份 Ghidra。

接下来,您需要将 X11 转发到容器中,以便能够看到 GUI。为此,请使用以下参数运行容器:

docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest

在容器中,您可以从 /tools/ghidra_10.4_PUBLIC/ghidraRun 启动 Ghidra。随后按照 Ghidra 特别说明 启用 DAILA 插件,即可开始使用!

支持的 AI 后端

LiteLLM(多种后端)

DAILA 支持 LiteLLM API,而 LiteLLM 又兼容包括 OpenAI 在内的多种后端。
要使用商业大语言模型 API,您必须提供自己的 API 密钥。
例如,使用 OpenAI API 时,您需要拥有 OpenAI API 密钥。
如果您的反编译器无法访问 OPENAI_API_KEY 环境变量,则需通过 DAILA 提供的选项来设置 API 密钥。

在“设置”中,您还可以添加或使用任何基于 OpenAI 的大语言模型端点,比如 Llama2。

目前,DAILA 支持以下功能:

  • 总结函数
  • 重命名变量
  • 重命名函数
  • 识别函数来源
  • 查找函数中的潜在漏洞
  • 总结库函数的手册页
  • 自定义提示……只需输入您自己的提示即可!

VarBERT

VarBERT 是来自 S&P 2024 年论文《“长度、索引还是计数?除了 v1 之外什么都行”:利用迁移学习预测反编译输出中的变量名称》() 的本地 BERT 模型。
VarBERT 专门用于在反编译过程中对变量(包括栈变量、寄存器变量和参数)进行重命名。
如需了解如何将 VarBERT 作为库使用,请参阅 VarBERT API 文档。
在 DAILA 中使用它非常简单——只需在函数上点击右键,选择 GUI 上下文菜单即可。

演示

您可以在下方观看 VarBERT 在 DAILA 中运行的演示:

VarBERT 演示

支持的反编译器

  • IDA

  • Binja

  • Ghidra

  • angr management

版本历史

v3.20.02026/03/24
v3.19.02026/01/02
v3.18.02025/03/22
v3.17.02025/03/11
v3.16.22025/03/11
v3.16.12025/02/05
v3.16.02025/01/30
v3.15.62025/01/30
v3.15.52025/01/30
v3.15.42025/01/14
v3.15.32024/12/28
v3.15.22024/12/28
v3.15.12024/12/18
v3.15.02024/12/05
v3.14.02024/11/27
v3.13.32024/11/21
v3.13.22024/11/21
v3.13.12024/11/21
v3.13.02024/11/20
v3.12.02024/11/20

常见问题

相似工具推荐

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

153.6k|★★☆☆☆|今天
开发框架Agent语言模型

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|4天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|1周前
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|3天前
图像数据工具视频