Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Gepetto — 查询语言模型以加速逆向工程的 IDA 插件 | Kitploit
工具/GitHubGitHub/justicerage/gepetto
代码分析逆向工程二进制分析机器学习AI 辅助逆向
GitHubjusticerage/gepetto

Gepetto

查询语言模型以加速逆向工程的 IDA 插件

查看仓库
3.5k332542个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Gepetto

Gepetto 是一个 Python 插件,它使用各种大型语言模型为 IDA Pro(≥ 7.6)反编译的函数赋予含义。它可以利用这些模型来解释函数的作用,并自动重命名其变量。以下是一个简单的示例,展示了它能在短短几秒内提供的结果:

安装

使用 hcli(推荐)

安装 Gepetto 最简单的方法是使用 Hex-Rays CLI 工具(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:~/.idapro/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 将配置保存在你的 IDA 用户目录中,因此插件升级后配置依然保留:

  • Windows:%APPDATA%\Hex-Rays\IDA Pro\cfg\gepetto\config.ini
  • macOS / Linux:~/.idapro/cfg/gepetto/config.ini

插件首次运行时会将 gepetto/config.ini 复制到该位置,并在控制台告知你路径。此后,插件随附的副本仅作为模板——请编辑你用户目录中的那一份。设置 GEPETTO_CONFIG_DIR 可完全覆盖该位置。

将你的 API 密钥添加到该文件中,或通过文件中指定的环境变量提供。对于 OpenAI,可在此页面创建密钥。请注意,API 查询通常并非免费(尽管并不昂贵),你需要向相应提供商设置支付方式。

支持的模型

  • Anthropic
    • claude-opus-4-7
    • claude-sonnet-4-6
    • claude-haiku-4-5
  • OpenAI
    • gpt-5
    • gpt-5-mini
    • gpt-5-nano
    • gpt-4-turbo
    • gpt-4o
    • o4-mini
    • gpt-4.1
    • o3
    • o3-pro
  • Google Gemini
    • gemini-2.0-flash
    • gemini-2.5-pro
    • gemini-2.5-flash
    • gemini-2.5-flash-lite-preview-06-17
  • Azure OpenAI
    • gpt-35-turbo
    • gpt-35-turbo-1106
    • gpt-35-turbo-16k
    • gpt-4-turbo
    • gpt-4-turbo-2024-0409-gs
  • Ollama
    • 通过 Ollama 暴露的任意本地模型(若 Ollama 未运行则不会显示)
  • Groq
    • llama-3.1-70b-versatile
    • llama-3.2-90b-text-preview
    • mixtral-8x7b-32768
  • Together
    • mistralai/Mixtral-8x22B-Instruct-v0.1(不支持重命名变量)
  • 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
    • 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
    • 通过 LM Studio 暴露的任意本地模型(若 LM Studio Developer 服务器未运行则不会显示)

添加你自己的提供商

Gepetto 从三个位置加载提供商,在菜单名称冲突时后者覆盖前者:gepetto/models/ 中随附的模块,然后是 $IDAUSR/cfg/gepetto/providers/ 中的任意 .py 文件,最后是任何声明了 gepetto.providers 入口点的已安装发行版。覆盖情况会在控制台公布,因此你无需分叉插件即可替换内置提供商。

即插即用提供商使用与内置提供商完全相同的约定。对于兼容 OpenAI 的端点,整个文件就是:

import openai
import gepetto.config
import gepetto.models.model_manager
from gepetto.models.openai import GPT


class MyProvider(GPT):
    @staticmethod
    def get_menu_name() -> str:
        return "MyProvider"

    @staticmethod
    def supported_models():
        return ["my-model-v1"]

    @staticmethod
    def is_configured_properly() -> bool:
        return bool(gepetto.config.get_config("MyProvider", "API_KEY", "MYPROVIDER_API_KEY"))

    def __init__(self, model):
        try:
            super().__init__(model)
        except ValueError:
            pass  # No OpenAI key needed for this provider.
        self.model = model
        self.client = openai.OpenAI(
            api_key=gepetto.config.get_config("MyProvider", "API_KEY", "MYPROVIDER_API_KEY"),
            base_url="https://api.example.com/v1",
        )


gepetto.models.model_manager.register_model(MyProvider)

将匹配的 [MyProvider] 段添加到你的 config.ini 中,然后重启 IDA:提供程序在加载时注册,因此新的键或新的文件需要重启后才会出现在菜单中。

若要以包的形式发布,请暴露该类或一个 register(register_model) 可调用对象:

[project.entry-points."gepetto.providers"]
myprovider = "myprovider:MyProvider"

providers/ 目录中的文件会在 IDA 启动时执行任意 Python 代码。这与任何 IDA 插件的信任级别相同,但请只安装你信任的 provider。

使用方法

插件正确安装后,你应该能够从 IDA 伪代码窗口的上下文菜单中调用它,如下方截图所示:

通过 Edit > Gepetto 菜单在 Gepetto 支持的模型之间切换:

Gepetto 还提供了一个 CLI 接口,你可以用它直接从 IDA 向 LLM 提问。请确保在输入栏中选择 Gepetto:

快捷键

以下快捷键可用:

  • 让模型解释该函数:Ctrl + Alt + G
  • 让模型为代码添加注释:Ctrl + Alt + K
  • 请求为函数的变量提供更好的命名:Ctrl + Alt + R

初步测试表明,如果你先请求解释该函数,再请求更好的命名,效果会更好——我推测是因为模型随后会利用自己生成的注释来给出更准确的建议。 AI 的回复存在一定的随机性。如果出于某种原因,你得到的初始回复不适合你,你可以随时再次运行该命令。

限制

  • 该插件需要访问 HexRays 反编译器才能正常工作。
  • 所有支持的 LLM 都是通用模型,很可能会出错!请始终对返回的结果保持批判性!

翻译

你可以通过编辑配置中的 locale 来更改 Gepetto 的语言。例如,要以法语使用该插件,你只需添加:

[Gepetto]
LANGUAGE = "fr_FR"

所选区域设置必须与 gepetto/locales 中的文件夹名称匹配。如果所需语言不可用, 你可以通过自行添加该语言来为项目做出贡献!为所需区域设置创建一个新文件夹 (例如 gepetto/locales/de_DE/LC_MESSAGES/),并提交一个包含更新后 .po 文件的拉取请求,你可以通过 复制并编辑 gepetto/locales/gepetto.pot 来创建该文件(将所有以 msgstr 开头的行替换为 本地化版本)。

致谢

  • OpenAI,显然,感谢其打造了这些令人惊叹的模型
  • Hex Rays,IDA 的开发者,感谢其闪电般的支持
  • Kaspersky,感谢其最初为本项目提供资金
  • HarfangLab,当前的支持者,使这项工作得以实现
  • @vanhauser-thc,感谢其通过他的分支贡献了关于支持更多模型和提供商的想法
  • 所有贡献翻译的人:@seifreed、@kot-igor、@ruzgarkanar、@orangetw
下载工具