← 开源
JusticeRage

Gepetto

IDA plugin which queries language models to speed up reverse-engineering

ApplicationsCodingPython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
3.49k
Star
331
Fork
+9
本周
22
贡献者
创建于 2022-12-04 · 更新于 2026-10-15 · 今日第 7918 名
主要开发者
JusticeRagequippy-devmahmoudimus

JusticeRage/Gepetto 排名第 7,918,有 3,487 个星标。

同类别比较

JusticeRage/Gepetto 排名第 7,918,此处有 8 个同类条目;superagent-ai/grok-cli 排名第 7,911。

同类别比较
名称排名指标
Haehnchen/crypto-trading-bot7,894
语言:
TypeScript
星标数:
3,539
分叉数:
1,018
简介:
Cryptocurrency trading bot in javascript for Bitfinex, Bitmex, Binance, Bybit ... (public edition)
smallcloudai/refact7,897
语言:
Rust
星标数:
3,533
分叉数:
319
简介:
AI Agent that handles engineering tasks end-to-end: integrates with developers’ tools, plans, executes, and iterates until it achieves a successful result.
mukulpatnaik/researchgpt7,901
语言:
Python
星标数:
3,521
分叉数:
313
简介:
A LLM based research assistant that allows you to have a conversation with a research paper
superagent-ai/grok-cli7,911
语言:
TypeScript
星标数:
3,496
分叉数:
430
简介:
An open-source coding agent for the Grok API
mshumer/Claude-of-Duty7,928
语言:
JavaScript
星标数:
3,469
分叉数:
524
简介:
A Call of Duty-quality FPS in Three.js, built from a single prompt.
Kedreamix/Linly-Talker7,930
语言:
Python
星标数:
3,467
分叉数:
544
简介:
Digital Avatar Conversational System - Linly-Talker. 😄✨ Linly-Talker is an intelligent AI system that combines large language models (LLMs) with visual models to create a novel human-AI interaction method. 🤝🤖 It integrates various technologies like Whisper, Linly, Microsoft Speech Services, and SadTalker talking head generation system. 🌟🔬
qawolf/cli7,941
语言:
TypeScript
星标数:
3,455
分叉数:
147
entropy-research/Devon7,947
语言:
Python
星标数:
3,449
分叉数:
282
简介:
Devon: An open-source pair programmer
关键参数与规格
关键参数与规格
参数值
语言Python
类别Applications
子类别Coding
关键词IDE
星标数3,487
分叉数331
贡献者22
创建日期2022-12-04
更新日期2026-10-15
1 天星标数0
7 天星标数9
排名7,918
上次排名3,698
排名变化-4,220
7 天星标排名4,151
上次 7 天星标排名3,764
7 天星标排名变化-387
总星标排名3,922
上次总星标排名3,915
总星标排名变化-7
国家USA
README 摘录

Gepetto Gepetto is a Python plugin which uses various large language models to provide meaning to functions decompiled by IDA Pro (≥ 7. It can leverage them to explain what a function does, and to automatically rename its variables. Here is a simple example of what results it can provide in mere seconds: Setup Using hcli (Recommended) The easiest way to install Gepetto is using the Hex-Rays CLI tool (hcli): This will automatically install the plugin to your IDA user

directory. Manual Installation Alternatively, you can manually install the plugin: 1. Drop this script ( , as well as the folder) into your IDA plugins folder ( ). The plugins directory location depends on your system: **Windows**: **macOS**: **Linux**: 3. Install the required packages to IDA's Python installation. Find which interpreter IDA is using by checking the following registry key: (default on Windows: ). With the corresponding interpreter, simply run: Configuration Gepetto keeps its configuration in your IDA user directory, so it survives plugin upgrades

: **Windows**: **macOS / Linux**: The first time the plugin runs it copies there and tells you the path on the console. Add your API keys to that file, or supply them through the environment variables named in it. For OpenAI, a key can be created on this page. Please note that API queries are usually not free (although not very expensive) and you will need to set up a payment method with the corresponding provider. Supported models 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. 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 Any local model exposed through Ollama (will not appear if Ollama is not running) Groq llama-3. 2-90b-text-preview mixtral-8x7b-32768

Together mistralai/Mixtral-8x22B-Instruct-v0. 1 (does not support renaming variables) Novita AI deepseek/deepseek-r1 deepseek/deepseek-v3 meta-llama/llama-3. 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 Any local model exposed through LM Studio (will not appear if LM Studio Developer server is not running) Adding your own provider Gepetto loads providers from three places, each overriding the last on a menu name collision: the modules shipped in , then any file in , then any installed distribution advertising a entry point. Overrides are announced on the console, so you can replace a built-in provider without forking the plugin. A

drop-in provider uses exactly the same contract as a built-in one. For an OpenAI-compatible endpoint, the whole

常见问题

记录了多少星标和分叉?

JusticeRage/Gepetto 有 3,487 个星标和 331 个分叉。

仓库排名是多少?

JusticeRage/Gepetto 排名第 7,918。

记录的语言和类别是什么?

JusticeRage/Gepetto 有 3,487 个星标,语言为 Python,类别为 Applications。

哪个仓库排名最接近?

JusticeRage/Gepetto 与 superagent-ai/grok-cli 比较,后者排名第 7,911,有 3,496 个星标。

README

Gepetto

Gepetto is a Python plugin which uses various large language models to provide meaning to functions decompiled by IDA Pro (≥ 7.6). It can leverage them to explain what a function does, and to automatically rename its variables. Here is a simple example of what results it can provide in mere seconds:

Setup

Using hcli (Recommended)

The easiest way to install Gepetto is using the Hex-Rays CLI tool (hcli):

pip install ida-hcli
hcli plugin install gepetto

This will automatically install the plugin to your IDA user directory.

Manual Installation

Alternatively, you can manually install the plugin:

  1. Drop this script (gepetto.py, as well as the gepetto/ folder) into your IDA plugins folder ($IDAUSR/plugins).
  2. The plugins directory location depends on your system:
    • Windows: %APPDATA%\Hex-Rays\IDA Pro\plugins\
    • macOS: ~/.idapro/plugins/
    • Linux: ~/.idapro/plugins/
  3. Install the required packages to IDA's Python installation. Find which interpreter IDA is using by checking the following registry key: Computer\HKEY_CURRENT_USER\Software\Hex-Rays\IDA (default on Windows: %LOCALAPPDATA%\Programs\Python\Python39).
  4. With the corresponding interpreter, simply run:
    [/path/to/python] -m pip install -r requirements.txt
    

Configuration

Gepetto keeps its configuration in your IDA user directory, so it survives plugin upgrades:

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

The first time the plugin runs it copies gepetto/config.ini there and tells you the path on the console. After that, the copy shipped with the plugin is only a template — edit the one in your user directory. Set GEPETTO_CONFIG_DIR to override the location entirely.

Add your API keys to that file, or supply them through the environment variables named in it. For OpenAI, a key can be created on this page. Please note that API queries are usually not free (although not very expensive) and you will need to set up a payment method with the corresponding provider.

Supported models

  • 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
    • Any local model exposed through Ollama (will not appear if Ollama is not running)
  • Groq
    • llama-3.1-70b-versatile
    • llama-3.2-90b-text-preview
    • mixtral-8x7b-32768
  • Together
    • mistralai/Mixtral-8x22B-Instruct-v0.1 (does not support renaming variables)
  • 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
    • Any local model exposed through LM Studio (will not appear if LM Studio Developer server is not running)

Adding your own provider

Gepetto loads providers from three places, each overriding the last on a menu name collision: the modules shipped in gepetto/models/, then any .py file in $IDAUSR/cfg/gepetto/providers/, then any installed distribution advertising a gepetto.providers entry point. Overrides are announced on the console, so you can replace a built-in provider without forking the plugin.

A drop-in provider uses exactly the same contract as a built-in one. For an OpenAI-compatible endpoint, the whole file is:

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)

Add a matching [MyProvider] section to your config.ini and restart IDA: providers are registered at load time, so a new key or a new file needs a restart before it appears in the menu.

To ship one as a package instead, expose the class or a register(register_model) callable:

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

Files in providers/ execute arbitrary Python when IDA starts. That is the same trust level as any IDA plugin, but only install providers you trust.

Usage

Once the plugin is installed properly, you should be able to invoke it from the context menu of IDA's pseudocode window, as shown in the screenshot below:

Switch between models supported by Gepetto from the Edit > Gepetto menu:

Gepetto also provides a CLI interface you can use to ask questions to the LLM directly from IDA. Make sure to select Gepetto in the input bar:

Hotkeys

The following hotkeys are available:

  • Ask the model to explain the function: Ctrl + Alt + G
  • Ask the model to add comments to the code: Ctrl + Alt + K
  • Request better names for the function's variables: Ctrl + Alt + R

Initial testing shows that asking for better names works better if you ask for an explanation of the function first – I assume because the model then uses its own comment to make more accurate suggestions. There is an element of randomness to the AI's replies. If for some reason the initial response you get doesn't suit you, you can always run the command again.

Limitations

  • The plugin requires access to the HexRays decompiler to function.
  • All supported LLMs are general-purpose and may very well get things wrong! Always be critical of results returned!

Translations

You can change Gepetto's language by editing the locale in the configuration. For instance, to use the plugin in French, you would simply add:

[Gepetto]
LANGUAGE = "fr_FR"

The chosen locale must match the folder names in gepetto/locales. If the desired language isn't available, you can contribute to the project by adding it yourself! Create a new folder for the desired locale (ex: gepetto/locales/de_DE/LC_MESSAGES/), and open a new pull request with the updated .po file, which you can create by copying and editing gepetto/locales/gepetto.pot (replace all the lines starting with msgstr with the localized version).

Acknowledgements

  • OpenAI, for making these incredible models, obviously
  • Hex Rays, the makers of IDA for their lightning fast support
  • Kaspersky, for initially funding this project
  • HarfangLab, the current backer making this work possible
  • @vanhauser-thc for contributing ideas of additional models and providers to support via his fork
  • Everyone who contributed translations: @seifreed, @kot-igor, @ruzgarkanar, @orangetw
排名相邻
同类项目