JusticeRage/Gepetto

GitHub: JusticeRage/Gepetto

一款集成多种大语言模型的 IDA Pro 插件,能够自动解释反编译函数语义并重命名变量,从而加速二进制逆向分析流程。

Stars: 3406 | Forks: 327

# Gepetto Gepetto 是一个 Python 插件,它使用各种大型语言模型为 IDA Pro(≥ 7.6)反编译的函数提供语义解释。它可以利用这些模型来解释函数的功能,并自动重命名其变量。以下是一个简单的示例,展示了它在短短几秒钟内就能提供的效果: ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b379646a9a184224.png) ## 安装说明 ### 使用 hcli(推荐) 安装 Gepetto 最简单的方法是使用 [Hex-Rays CLI 工具](https://github.com/HexRaysSA/ida-hcli): ``` pip install ida-hcli hcli plugin install gepetto ``` 这会自动将插件安装到您的 IDA 用户目录中。 ### 手动安装 或者,您也可以手动安装该插件: 1. 将此脚本(`gepetto.py` 以及 `gepetto/` 文件夹)放入您的 IDA 插件文件夹(`$IDAUSR/plugins`)中。 2. 插件目录的位置取决于您的操作系统: - **Windows**: `%APPDATA%\Hex-Rays\IDA Pro\plugins\` - **macOS**: `~/Library/Application Support/IDA Pro/plugins/` - **Linux**: `~/.idapro/plugins/` 3. 将所需的包安装到 IDA 的 Python 环境中。通过检查以下注册表项来查找 IDA 正在使用的解释器: `Computer\HKEY_CURRENT_USER\Software\Hex-Rays\IDA`(Windows 上的默认路径:`%LOCALAPPDATA%\Programs\Python\Python39`)。 4. 使用相应的解释器,只需运行: [/path/to/python] -m pip install -r requirements.txt ⚠️ 您还需要编辑配置文件(位于 `gepetto/config.ini`)并添加您自己的 API 密钥。对于 OpenAI,可以在[此页面](https://platform.openai.com/api-keys)找到。 请注意,API 查询通常不是免费的(尽管并不昂贵),您需要在相应的提供商处设置付款方式。 ## 支持的模型 - [OpenAI](https://playground.openai.com/) - gpt-5 - gpt-5-mini - gpt-5-nano - gpt-4-turbo - gpt-4o - o4-mini - gpt-4.1 - o3 - o3-pro - [Google Gemini](https://ai.google.dev/) - gemini-2.0-flash - gemini-2.5-pro - gemini-2.5-flash - gemini-2.5-flash-lite-preview-06-17 - [Azure OpenAI](https://ai.azure.com/) - gpt-35-turbo - gpt-35-turbo-1106 - gpt-35-turbo-16k - gpt-4-turbo - gpt-4-turbo-2024-0409-gs - [Ollama](https://ollama.com/) - 通过 Ollama 暴露的任何本地模型(如果 Ollama 未运行则不会显示) - [Groq](https://console.groq.com/playground) - llama-3.1-70b-versatile - llama-3.2-90b-text-preview - mixtral-8x7b-32768 - [Together](https://api.together.ai/) - mistralai/Mixtral-8x22B-Instruct-v0.1(不支持重命名变量) - [Novita AI](https://novita.ai/) - deepseek/deepseek-r1 - deepseek/deepseek-v3 - meta-llama/llama-3.3-70b-instruct - meta-llama/llama-3.1-70b-instruct - meta-llama/llama-3.1-405b-instruct - [Kluster.ai](https://kluster.ai/) - deepseek-ai/DeepSeek-R1 - deepseek-ai/DeepSeek-V3-0324 - google/gemma-3-27b-it - klusterai/Meta-Llama-3.1-8B-Instruct-Turbo - klusterai/Meta-Llama-3.1-405B-Instruct-Turbo - klusterai/Meta-Llama-3.3-70B-Instruct-Turbo - meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8 - meta-llama/Llama-4-Scout-17B-16E-Instruct - Qwen/Qwen2.5-VL-7B-Instruct - [LM Studio](https://lmstudio.ai/) - 通过 LM Studio 暴露的任何本地模型(如果 LM Studio Developer server 未运行则不会显示) 只要您考虑的提供商提供了类似于 OpenAI 的 API,为其他模型添加支持应该不会太难。请查看 `gepetto/models` 文件夹以获取灵感,如果仍然无法解决,可以提交一个 issue。 ## 使用方法 插件安装正确后,您应该能够从 IDA 的伪代码窗口的上下文菜单中调用它,如下图所示: ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5a8cc62605184241.png) 从 Edit > Gepetto 菜单中切换 Gepetto 支持的模型: ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5ca983f5e2184258.png) Gepetto 还提供了一个 CLI 接口,您可以使用它直接从 IDA 中向 LLM 提问。请确保在输入栏中选择 `Gepetto`: ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/7582f986a8184316.png) ### 快捷键 以下快捷键可用: - 要求模型解释函数:`Ctrl` + `Alt` + `G` - 要求模型为代码添加注释:`Ctrl` + `Alt` + `K` - 请求为函数的变量提供更好的命名:`Ctrl` + `Alt` + `R` 初步测试表明,如果您先要求解释函数,再要求提供更好的名称效果会更好——我推测是因为模型随后会使用它自己的注释来做出更准确的建议。 AI 的回复存在一定的随机性。如果出于某种原因,您得到的初次回复并不令人满意,您可以随时再次运行该命令。 ## 限制 - 该插件需要访问 HexRays 反编译器才能运行。 - 所有受支持的 LLM 均为通用模型,极有可能会出错!请务必对返回的结果保持批判态度! ## 翻译 您可以通过编辑配置中的 locale 来更改 Gepetto 的语言。例如,要使用法语运行该插件,只需添加: ``` [Gepetto] LANGUAGE = "fr_FR" ``` 所选的 locale 必须与 `gepetto/locales` 中的文件夹名称相匹配。如果所需的语言不可用,您可以通过自行添加来为项目做出贡献!为所需的 locale 创建一个新文件夹(例如:`gepetto/locales/de_DE/LC_MESSAGES/`),并使用更新后的 `.po` 文件开启一个新的 pull request,您可以通过复制并编辑 `gepetto/locales/gepetto.pot` 来创建该文件(将所有以 `msgstr` 开头的行替换为本地化版本)。 ## 致谢 - [OpenAI](https://openai.com),显然,感谢他们提供了这些令人难以置信的模型 - [Hex Rays](https://hex-rays.com/),IDA 的开发者,感谢他们闪电般快速的响应和支持 - [Kaspersky](https://kaspersky.com),感谢其为该项目提供的初始资金 - [HarfangLab](https://harfanglab.io/),目前的赞助者,让这项工作得以持续 - [@vanhauser-thc](https://github.com/vanhauser-thc),感谢他通过其 [fork](https://github.com/vanhauser-thc/gepetto/) 贡献了支持更多模型和提供商的想法 - 所有贡献了翻译的人:@seifreed, @kot-igor, @ruzgarkanar, @orangetw
标签:AI风险缓解, API集成, DLL 劫持, Gepetto, GPT-4, IDA插件, OpenAI, Petitpotam, Python开发, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码分析, 内存规避, 凭证管理, 可观测性, 大语言模型, 自动化分析, 跨站脚本, 辅助分析, 逆向工具, 逆向工程, 静态分析