kong
Kong 是全球首款具备自主代理能力的逆向工程工具,专为自动化分析二进制文件而设计。在传统逆向工作中,即使面对只有几百个函数的程序,人工还原被剥离的函数名、类型信息和变量含义往往需要耗费数小时甚至数天。Kong 通过智能编排大语言模型(LLM),将这一繁琐过程完全自动化。
它解决了去符号化二进制文件缺乏可读上下文的核心痛点。Kong 并非简单地将反编译代码丢给 AI,而是先利用 Ghidra 构建丰富的上下文窗口(包含调用图、交叉引用和数据流),按依赖顺序自底向上分析,确保每个函数都能利用已解析的调用信息。此外,它还内置了独特的代理级去混淆流水线,能自动识别标准库函数并统一命名规范,最终输出带有清晰语义的高质量分析结果。
这款工具特别适合安全研究人员、逆向工程师以及需要深入分析恶意软件或闭源二进制文件的开发者。其技术亮点在于“进程内”集成 Ghidra 引擎,无需额外服务器即可直接操作程序数据库,同时通过语法标准化和语义合成技术,显著提升了 AI 推断的准确性与效率,让复杂的逆向任务变得高效且可控。
使用场景
某安全团队在分析一款被恶意软件作者剥离符号并高度混淆的勒索软件二进制文件时,急需快速还原其加密逻辑以制定解密方案。
没有 kong 时
- 分析师面对满屏类似
FUN_00401a30的无意义函数名,需人工逐层追踪调用关系,耗时数天才能理清执行流程。 - 由于缺乏类型信息和变量名,反编译代码难以阅读,人工推断结构体布局和参数含义极易出错且效率低下。
- 混淆技术导致控制流混乱,传统工具无法自动清理噪音,分析师必须手动编写脚本预处理数据,严重拖慢进度。
- 每次分析新函数都需重复构建上下文,无法利用已分析的底层函数成果,造成大量重复劳动。
使用 kong 后
- Kong 自动基于调用图自底向上分析,先将底层叶子函数重命名为
generate_rsa_key等语义名称,让上层调用者直接获得清晰上下文。 - 通过 LLM 引导的反编译,Kong 自动恢复出完整的结构体定义、参数名称及调用约定,将晦涩代码转化为可读性极高的伪代码。
- 内置的智能去混淆流水线自动处理控制流平坦化等干扰,并在送入大模型前完成语法标准化,显著减少无效 Token 消耗。
- 全局语义合成步骤统一了全文件的命名风格,自动关联跨函数的引用信息,一次性输出带有完整符号信息的 Ghidra 工程文件。
Kong 将原本需要数天的人工逆向工作压缩至小时级,让分析师能直接聚焦于核心漏洞挖掘而非繁琐的代码还原。
运行环境要求
- 未说明 (基于 Ghidra/Python/JDK,通常支持 Linux
- macOS
- Windows)
未说明 (主要依赖 LLM API 和本地 CPU 进行 Ghidra 分析,无本地 GPU 推理需求)
未说明 (取决于二进制文件大小和 Ghidra 运行需求,建议充足内存)

快速开始
Kong:智能代理型逆向工程师
用于二进制逆向工程的LLM编排
什么是Kong?
大多数任务都遵循线性关系:任务越难,通常所需时间越长。然而,逆向工程(以及二进制分析)却是一个看似难度不大,但执行时间却可能长达数小时甚至数天的任务,即便对于只有几百个函数的二进制文件也是如此。
Kong通过使用NSA级别的逆向工程框架,自动化处理其中的机械性工作。它能够接收完全混淆且已剥离符号信息的二进制文件,并运行完整的分析流程:对函数进行分类与筛选、构建调用图上下文、借助LLM引导的反编译恢复类型和符号信息,最后将结果写回Ghidra的程序数据库中。最终输出的二进制文件中,原本的FUN_00401a30将被重命名为parse_http_header,同时恢复了结构体、参数名称和调用约定等信息。
为何需要这样的工具?
剥离符号信息后的二进制文件会丢失所有使代码可读的上下文信息:函数名、类型信息、变量名、结构体布局等。在大多数逆向工程任务中,恢复这些上下文信息占据了绝大部分工作量,而这一过程本质上主要是模式匹配——识别标准库函数、根据使用情况推断类型、并通过调用图传播名称。
大型语言模型恰好擅长这类模式匹配任务。然而,如果直接将原始反编译结果输入LLM并询问“这段代码的作用是什么?”,得到的结果往往并不理想。这是因为模型缺乏调用上下文、交叉引用信息以及关于二进制整体结构的全局视角。此外,许多经过混淆处理的二进制文件还会采用极端的技术手段来阻碍逆向工程。
Kong通过在接触LLM之前,先利用Ghidra的程序分析功能(如调用图、交叉引用、字符串引用、数据流等)构建丰富的上下文窗口,并按照依赖顺序编排分析流程,使得每个函数都能在其被调用者已被命名的情况下进行分析。除此之外,Kong还引入了其首创的智能代理式去混淆流水线。
实际应用
功能特性
- 全自主分析流水线:只需一条命令即可完成整个分析流程。包括函数分类、功能分析、清理优化、语义合成及导出,全程无需人工干预。
- 进程内Ghidra集成:通过PyGhidra和JPype在进程中运行Ghidra的分析引擎,无需服务器、RPC或子进程开销,可直接访问程序数据库。
- 调用图驱动的分析顺序:按照调用图自底向上逐层分析函数。首先为叶子函数命名,以便调用者在反编译时能够受益于已解析的上下文。
- 丰富的上下文窗口:每次发送给LLM的提示信息不仅包含目标函数的反编译结果,还整合了交叉引用、字符串引用、调用者/被调用者签名以及邻近数据等内容,而非孤立的原始反编译输出。
- 语义合成:在分析完成后,统一整个二进制中的命名规范,根据字段访问模式合成结构体定义,并解决独立分析函数之间存在的不一致性问题。
- 签名匹配:在LLM分析之前,先通过模式匹配识别已知的标准库函数和加密函数,从而跳过对已知函数的身份推断,节省计算资源。
- 语法规范化:在反编译结果进入LLM之前,对其进行清理(如恢复模运算、修复负字面量、移除无效赋值等操作),以减少噪声和不必要的Token消耗。
- 智能代理式去混淆:Kong采用智能代理式的去混淆流水线,能够从反编译结果中识别并移除各种混淆技术(如控制流平坦化、虚假控制流、指令替换、字符串加密、虚拟机保护等)。
- 评估框架:内置评估工具,可根据真实源代码对分析结果进行打分,衡量符号准确率(基于词级Jaccard指数)和类型准确率(基于签名组件评分)。
- 多模型支持:开箱即用,兼容Anthropic(Claude)和OpenAI(GPT-4o)。交互式设置向导可配置不同提供商,并根据是否有有效密钥自动选择最优模型。
- 成本追踪:跨不同提供商跟踪各模型的Token使用量及费用,并提供针对不同提供商的价格信息。
支持的架构
目前,Kong适用于大多数可由Ghidra反编译的二进制文件(未来还将支持更多架构)。
分析信心等级
| C | C++ | Go | Rust | |
|---|---|---|---|---|
| x86 | 高 | 高 | 中 | 中 |
| x86-64 | 高 | 高 | 中 | 中 |
| ARM(32位) | 高 | 高 | 中 | 低 |
| AArch64 | 高 | 高 | 中 | 低 |
| MIPS | 中 | 中 | 低 | 低 |
| PowerPC | 中 | 中 | 低 | 低 |
高:Kong能够可靠地完成反编译、去混淆,并成功恢复函数名、类型和程序结构。 中:反编译结果可用,但噪声较大,预计只能部分恢复,置信度较低。 低:反编译结果存在显著缺失,分析结果将保持不完整、噪声过多或难以阅读。 注:二进制文件的大小与函数数量、LLM成本及完成时间呈正相关,但同时也与分析置信度呈负相关。因此,在分析大型二进制文件时,请务必考虑这一点。
架构
Kong 使用由监督器协调的五阶段流水线,负责分诊、并行分析和后处理:
┌──────────────────────┐
│ Triage │
│ 枚举、分类、 │
│ 构建调用图、 │
│ 匹配签名 │
└──────────┬───────────┘
│
▼
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Analyze │ │ Analyze │ │ ... │
│ (leaf fns) │ │ (next tier) │ │ │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────┬───────┴────────────────┘
│
▼
┌──────────────────────┐
│ Cleanup │
│ 规范化、去重 │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Synthesis │
│ 统一命名、构建 │
│ 结构体、去混淆 │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Export │
│ analysis.json + │
│ Ghidra 写回 │
└──────────────────────┘
工作原理
Triage 阶段会枚举二进制文件中的所有函数,按大小将其分类为琐碎/小型/中型/大型,构建调用图,检测源语言,并对已知的标准库和加密函数进行签名匹配。通过签名匹配的函数会被标记为已解析,从而完全跳过 LLM 分析。
Analysis 阶段使用工作队列,按照调用图的自底向上顺序处理函数。对于每个函数,Kong 会从 Ghidra 的程序数据库中构建上下文窗口——包括反编译结果、交叉引用、字符串引用以及已分析被调用函数的签名等信息——并对反编译输出进行规范化处理,然后将其发送给 LLM 进行名称、类型和参数的恢复。如果在某个函数的反编译结果中检测到混淆,Kong 会在生成分析结果之前,利用符号工具执行一次代理式的去混淆操作。分析结果会立即写回到 Ghidra 中,以便下游调用者能够看到更新后的名称。
Cleanup 阶段会统一在分析过程中积累的结构体类型建议,并重新尝试那些在分析阶段未能应用的函数签名。
Synthesis 阶段会对所有已分析的函数进行全局审视。它会通过一次 LLM 调用来审查连接最紧密的函数,统一命名规范,根据字段访问模式合成结构体定义,并优化在更广泛背景下显得不一致的名称。
Export 阶段会生成最终的 analysis.json 文件,并将所有恢复的名称、类型和签名写回到 Ghidra 程序数据库中。
技术栈
- 运行时: Python 3.11+,使用 uv 进行管理
- 二进制分析: Ghidra 通过 PyGhidra 实现(进程内,JPype)
- LLM: Anthropic SDK(Claude)和 OpenAI SDK(GPT-4o)
- 符号分析: z3-solver
- CLI: Click
- TUI: Textual
- 显示: Rich
- 构建: hatchling
- 测试: pytest
设置
先决条件
- Python 3.11+ — (python.org 或系统包管理器)
- uv — Python 包管理器(安装 uv)
- Ghidra — 美国国家安全局的逆向工程框架(安装 Ghidra)
- JDK 21+ — Ghidra 所需(Adoptium)
- LLM API 密钥 — 至少选择以下之一:
快速入门
# 1. 安装 Kong
uv pip install kong-re
# 2. 设置你的 API 密钥
export ANTHROPIC_API_KEY="sk-ant-..."
# 和/或
export OPENAI_API_KEY="sk-..."
# 3. 运行设置向导(仅首次使用)
kong setup
# 4. 分析一个二进制文件
kong analyze ./path/to/stripped_binary
设置向导允许你选择要使用的 LLM 提供商,并设置默认选项。Kong 会自动检测你的 Ghidra 和 JDK 安装情况,将二进制文件加载到进程内的 Ghidra 实例中,并运行完整的流水线。
从源码安装
git clone https://github.com/amruth-sn/kong.git
cd kong
uv sync
uv run kong setup
uv run kong analyze ./path/to/stripped_binary
环境变量
| 变量 | 是否必需 | 描述 |
|---|---|---|
ANTHROPIC_API_KEY |
至少一个 | Anthropic API 密钥(Claude) |
OPENAI_API_KEY |
至少一个 | OpenAI API 密钥(GPT-4o) |
GHIDRA_INSTALL_DIR |
否 | Ghidra 安装路径(未设置时自动检测) |
JAVA_HOME |
否 | JDK 路径(未设置时自动检测) |
KONG_CONFIG_DIR |
否 | 配置目录覆盖(默认:~/.config/kong) |
使用方法
# 运行设置向导
kong setup
# 分析一个剥离的二进制文件(使用你配置的默认提供商)
kong analyze ./binary
# 使用特定提供商进行分析
kong analyze ./binary --provider openai
# 覆盖模型
kong analyze ./binary --provider openai --model gpt-4o-mini
# 显示二进制元数据而不运行分析
kong info ./binary
# 将分析结果与原始源代码对比
kong eval ./analysis.json ./source.c
输出
结果会写入输出目录(默认:./kong_output_{binary_name}/):
kong_output_{binary_name}/
├── analysis.json # 所有恢复的函数名称、类型和参数
└── events.log # 流水线执行轨迹
基准测试
Kong 自主地从一个剥离的 liblzma.so.5.4.1 中重建了完整的 XZ 后门(CVE-2024-3094)攻击链——在 15 分钟内以 90%-95% 的置信度识别出了全部五个核心植入函数,耗资 6.63 美元。
完整案例研究及复现说明,请参阅 BENCHMARKS.md。
项目结构
kong/
├── __main__.py # CLI 入口点(click)
├── config.py # KongConfig、LLMProvider、LLMConfig
├── db.py # SQLite 配置存储(~/.config/kong/)
├── banner.py # ASCII 封面图、API 密钥辅助工具
├── agent/
│ ├── supervisor.py # 管道编排器
│ ├── triage.py # 函数枚举 + 分类
│ ├── analyzer.py # LLM 引导的函数分析
│ ├── queue.py # 基于调用图的 BFS 工作队列
│ ├── signatures.py # 已知函数签名匹配
│ ├── prompts.py # 系统提示词 + 输出模式
│ ├── events.py # 管道跟踪的阶段/事件类型
│ └── models.py # FunctionResult 数据类
├── ghidra/
│ ├── client.py # 进程内 GhidraClient(PyGhidra/JPype)
│ ├── types.py # FunctionInfo、BinaryInfo、XRef 等
│ └── environment.py # Ghidra/JDK 自动检测
├── llm/
│ ├── client.py # AnthropicClient
│ ├── openai_client.py # OpenAIClient
│ ├── usage.py # TokenUsage、费用跟踪、定价注册表
│ └── limits.py # 模型特定限制 + 速率限制器
├── normalizer/
│ └── syntactic.py # 反编译输出规范化
├── synthesis/
│ └── semantic.py # 全局名称统一 + 结构体合成
├── evals/
│ ├── harness.py # 真值提取 + 打分
│ └── metrics.py # symbol_accuracy、type_accuracy
├── export/
│ └── source.py # analysis.json + 写回 Ghidra
├── signatures/
│ ├── stdlib.json # C 标准库函数签名
│ └── crypto.json # 加密函数签名
└── tui/
└── app.py # Textual TUI
许可证
Kong 采用 Apache 许可证 2.0 版本授权。Kong 是一个免费且开源的项目。
该许可证与 Ghidra 许可证兼容,并允许商业使用。
贡献
欢迎通过 GitHub Issues 提交问题和功能请求。
致谢
特别感谢 KeygraphHQ 的 Shannon 项目,它为本项目提供了灵感。我的开发动机是复现 Shannon 在其基于 Web 的渗透测试工具中使用的相同流程,并将其适配用于二进制分析和反编译。
敬畏这只猴子。
Kong:全球首个 AI 反向工程师
版本历史
v0.2.22026/03/18v0.2.12026/03/18v0.2.02026/03/16v0.1.22026/03/13常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
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 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备