Hacker News 中文摘要

RSS订阅

更优的Ghidra MCP服务器——GhidrAssistMCP -- A better Ghidra MCP server – GhidrAssistMCP

文章摘要

GhidrAssistMCP是一个强大的Ghidra扩展,通过实现模型上下文协议(MCP)服务器,使AI助手和其他工具能够通过标准化API与Ghidra的反向工程功能进行交互。该扩展集成了31个内置分析工具,提供可配置的用户界面、实时日志记录和动态工具管理,支持外部工具与Ghidra的无缝交互,提升反向工程分析的效率和灵活性。

文章总结

主要内容总结

项目名称: GhidrAssistMCP
项目地址: GitHub - jtang613/GhidrAssistMCP

概述:
GhidrAssistMCP 是一个强大的 Ghidra 扩展,通过实现模型上下文协议(MCP),为 AI 助手和其他工具提供了与 Ghidra 逆向工程能力交互的标准化 API。该扩展弥合了 AI 分析工具与 Ghidra 逆向工程平台之间的鸿沟,使得外部 AI 助手、自动化分析工具和自定义脚本能够无缝地与 Ghidra 的分析功能进行交互。

主要功能:
- MCP 服务器集成: 使用官方 SDK 实现完整的 MCP 服务器。
- 31 个内置工具: 提供涵盖函数、数据、交叉引用等的全面分析工具。
- 可配置的 UI: 易于使用的界面,用于管理工具和监控活动。
- 实时日志记录: 跟踪所有 MCP 请求和响应,提供详细的日志记录。
- 动态工具管理: 可以单独启用/禁用工具,并持久化设置。
- 当前上下文感知: 工具能够理解 Ghidra 的当前光标位置和活动函数。

客户端支持:
GhidrAssist 直接支持 GhidrAssistMCP。

截图:
图片 1: 截图
图片 2: 截图

安装:
- 先决条件: Ghidra 11.4+ 和 MCP 客户端(如 GhidrAssist)。
- 二进制发布版(推荐): 从 Releases 页面下载最新版本,并在 Ghidra 中安装和启用插件。
- 从源码构建: 克隆仓库,设置 Ghidra 安装路径,使用 Gradle 构建扩展并安装。

配置:
- 初始设置: 打开控制面板,配置服务器设置(主机、端口、启用/禁用)。
- 工具管理: 查看、启用/禁用工具,保存配置并实时监控工具状态。
- 可用工具: 包括程序分析、函数分析、位置导航、修改工具和高级分析工具。

使用示例:
提供了获取程序信息、函数分析、反编译、结构创建和设置函数原型等操作的 JSON 请求示例。

架构:
- 核心组件: 包括主插件入口点、MCP 服务器、后端工具管理和 UI 组件提供者。
- MCP 协议实现: 使用 HTTP 和服务器发送事件(SSE)进行传输,支持工具注册和会话管理。
- 插件架构: 使用观察者模式、事务管理、工具注册、设置持久化和线程安全机制。

开发:
- 项目结构: 包括主插件类、UI 提供者、MCP 服务器实现、后端工具管理和工具接口。
- 添加新工具: 实现 McpTool 接口并在后端注册。
- 构建命令: 使用 Gradle 进行清理、构建和调试。
- 依赖: 包括 MCP SDK、Jetty 服务器、Jackson 和 Ghidra API。

日志记录:
- UI 日志: 提供实时监控,包括会话事件、工具请求、工具响应和错误消息。
- 控制台日志: 记录工具注册、MCP 服务器生命周期事件、数据库事务操作和错误堆栈信息。

故障排除:
- 常见问题: 包括服务器无法启动、工具未显示、MCP 客户端连接问题和工具执行失败。
- 调试模式: 通过添加启动参数启用调试日志记录。

贡献:
欢迎通过 Fork 仓库、创建功能分支、提交更改和拉取请求来贡献代码。遵循代码标准,包括 Java 21+ 特性、异常处理、事务安全、线程安全和全面的文档。

许可证:
项目采用 MIT 许可证,详情见 LICENSE 文件。

致谢:
感谢 NSA/Ghidra 团队提供的优秀逆向工程平台和 Anthropic 的模型上下文协议规范。

问题或反馈:
如有问题或反馈,请在项目仓库中提交 issue。

评论总结

  1. 对Ghidra逆向工程工具的回归与使用体验的探讨

    • its-kostya 表达了对重新使用Ghidra进行逆向工程的担忧,认为这项技能是“用进废退”,并好奇是否能快速重新上手,或者是否会陷入无用的“兔子洞”。
      • 引用:“The skill is very 'use it or lose it' so I wonder if this will help me get back into it quicker.”
      • 引用:“Or... a ton of hallucinations leading down dead end rabbit holes.”
    • 0xbadc0de5 对GhidrAssist和MCP工具表示赞赏,认为它们效果很好。
      • 引用:“Works great! GhidrAssist + MCP are awesome.”
  2. 对工具改进与其他工具的对比

    • leoqa 提问该工具为何优于其他工具,显示出对工具性能的对比兴趣。
      • 引用:“Why is this better than the other one?”
    • electroglyph 希望看到类似工具在x64dbg上的应用,表达了对其他工具的期待。
      • 引用:“nice, now do x64dbg!”
  3. 对AI技术在CTF和逆向工程中应用的展望

    • PradeetPatel 对AI技术(如MCP)在未来CTF场景中的影响表示兴趣,认为AI可能会改变这一领域。
      • 引用:“I’m interested to see how MCP and the development in AI will impact the CTF scene in the future.”
    • gg82 提出使用开源代码和库创建嵌入,并用于恢复代码中的变量和函数名的可能性,探讨了AI在逆向工程中的潜在应用。
      • 引用:“I wonder if embeddings could be created from open source and library code and then used to convert back the code with all the correct variable and function names.”
  4. 对用户体验和工具改进的反馈

    • flowerthoughts 提到原始扩展的用户体验不佳,转而使用Claude Code手动处理导出的列表文件,但认为列表文件缺乏完整地址,不是理想的源材料。
      • 引用:“The original extension definitely felt user unfriendly, so I was using Claude Code manually, feeding it an exported listing file.”
      • 引用:“The listing files lack full addresses, so it wasn’t optimal source material.”

总结:评论主要围绕Ghidra及其相关工具的使用体验、改进需求以及AI技术在逆向工程和CTF中的潜在应用展开。部分用户对工具的回归和效果表示担忧或赞赏,另一些用户则期待工具的进一步改进和在其他平台上的应用。AI技术的未来发展也被认为可能对CTF和逆向工程领域产生重要影响。