biniamf/ai-reverse-engineering

GitHub: biniamf/ai-reverse-engineering

通过 AI 聊天界面驱动 Ghidra 进行自动化二进制逆向分析,让安全研究人员可以用自然语言直接向二进制文件提问。

Stars: 151 | Forks: 16

# 使用 Ghidra 进行 AI 辅助逆向工程 该工具为安全研究人员提供了一个 AI 聊天界面,能够通过 MCP 驱动 Ghidra,让他们可以直接针对二进制文件提出高层次的问题,而无需手动深入挖掘。该智能体工作流会在 Ghidra 内部自动执行所需的逆向工程步骤以生成答案。 #### 使用以 REST API 形式暴露的 Headless Ghidra 分析结果 ``` docker run --rm -p 9090:9090 -v $(pwd)/data:/data/ghidra_projects biniamfd/ghidra-headless-rest:latest ``` ## Headless Ghidra 端点(位于 GHIDRA_API_BASE = http://localhost:9090) | 端点 | 方法 | 描述 | 参数 | 返回值 | | --------------------------- | ------ | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | `/tools/analyze` | POST | 上传 base64 编码的二进制文件并启动 headless Ghidra 分析。 | **file_b64** *(string, required)* – Base64 编码的二进制文件
**filename** *(string, required)* – 原始文件名 | **job_id** *(string)* – 分析任务标识符 | | `/tools/status` | POST | 获取现有分析任务的状态。 | **job_id** *(string, required)* – 分析任务标识符 | **job_id** *(string)*
**status** *(string)* – `queued \| running \| completed \| failed` | | `/tools/list_functions` | POST | 检索某个任务已发现的函数列表。 | **job_id** *(string, required)* – 分析任务标识符 | **functions** *(array)* – `{ name: string, address: string }` 列表 | | `/tools/decompile_function` | POST | 获取指定地址处函数的反编译伪代码。 | **job_id** *(string, required)* – 分析任务标识符
**addr** *(string, required)* – 函数地址 (十六进制字符串) | **address** *(string)*
**pseudocode** *(string)* – 反编译的类 C 代码 | | `/tools/get_xrefs` | POST | 获取函数的调用者和被调用者(交叉引用)。 | **job_id** *(string, required)* – 分析任务标识符
**addr** *(string, required)* – 函数地址 | **address** *(string)*
**callers** *(string[])*
**callees** *(string[])* | | `/tools/list_imports` | POST | 列出二进制文件导入的库和符号。 | **job_id** *(string, required)* – 分析任务标识符 | **imports** *(array)* – `{ library: string, symbol: string }` 列表 | | `/tools/list_strings` | POST | 返回从二进制文件中提取的可打印字符串。 | **job_id** *(string, required)* – 分析任务标识符
**min_length** *(integer, optional)* – 最小字符串长度 | **strings** *(string[])* | | `/tools/query_artifacts` | POST | 对构建产物进行自然语言风格的查询。 | **job_id** *(string, required)* – 分析任务标识符
**query** *(string, required)* – 查询文本 | **results** *(array)* – 匹配的函数 / 代码片段 | ## 架构 image ## 设置 - 拉取 Docker 镜像并运行 - 设置兼容 OpenAI 的 API base URL - API key - 模型名称 ``` python webui/app.py ``` 然后通过 http://localhost:5000 访问该服务 https://github.com/user-attachments/assets/77f1645a-cd8e-470f-826b-585a73e48bf4
标签:DLL 劫持, Ghidra, MCP, Petitpotam, 云安全监控, 云资产清单, 人工智能, 后端开发, 大语言模型, 用户模式Hook绕过, 请求拦截, 逆向工具, 逆向工程, 静态分析