Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Gepetto — Plugin de IDA que consulta modelos de lenguaje para acelerar la ingeniería inversa | Kitploit
Herramientas/GitHubGitHub/justicerage/gepetto
Análisis de CódigoIngeniería InversaAnálisis de BinariosAprendizaje AutomáticoReversing Asistido por IA
GitHubjusticerage/gepetto

Gepetto

Plugin de IDA que consulta modelos de lenguaje para acelerar la ingeniería inversa

Ver Repositorio
3.5k33254hace 2 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Gepetto

Gepetto es un plugin de Python que utiliza varios modelos de lenguaje grandes para dar significado a las funciones descompiladas por IDA Pro (≥ 7.6). Puede aprovecharlos para explicar qué hace una función y para renombrar automáticamente sus variables. Aquí hay un ejemplo sencillo de los resultados que puede proporcionar en apenas segundos:

Configuración

Usando hcli (Recomendado)

La forma más sencilla de instalar Gepetto es usando la herramienta CLI de Hex-Rays (hcli):

pip install ida-hcli
hcli plugin install gepetto

Esto instalará automáticamente el plugin en tu directorio de usuario de IDA.

Instalación manual

Alternativamente, puedes instalar el plugin manualmente:

  1. Coloca este script (gepetto.py, así como la carpeta gepetto/) en tu carpeta de plugins de IDA ($IDAUSR/plugins).
  2. La ubicación del directorio de plugins depende de tu sistema:
    • Windows: %APPDATA%\Hex-Rays\IDA Pro\plugins\
    • macOS: ~/.idapro/plugins/
    • Linux: ~/.idapro/plugins/
  3. Instala los paquetes requeridos en la instalación de Python de IDA. Averigua qué intérprete está usando IDA consultando la siguiente clave del registro: Computer\HKEY_CURRENT_USER\Software\Hex-Rays\IDA (predeterminado en Windows: %LOCALAPPDATA%\Programs\Python\Python39).
  4. Con el intérprete correspondiente, simplemente ejecuta:
    [/path/to/python] -m pip install -r requirements.txt
    

Configuración

Gepetto guarda su configuración en tu directorio de usuario de IDA, de modo que sobrevive a las actualizaciones del plugin:

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

La primera vez que se ejecuta el plugin, copia gepetto/config.ini allí y te indica la ruta en la consola. A partir de entonces, la copia incluida con el plugin es solo una plantilla: edita la de tu directorio de usuario. Establece GEPETTO_CONFIG_DIR para sobrescribir la ubicación por completo.

Añade tus claves de API a ese archivo, o proporciónalas mediante las variables de entorno indicadas en él. Para OpenAI, se puede crear una clave en esta página. Ten en cuenta que las consultas a la API normalmente no son gratuitas (aunque no son muy caras) y tendrás que configurar un método de pago con el proveedor correspondiente.

Modelos compatibles

  • 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
    • Cualquier modelo local expuesto a través de Ollama (no aparecerá si Ollama no está en ejecución)
  • Groq
    • llama-3.1-70b-versatile
    • llama-3.2-90b-text-preview
    • mixtral-8x7b-32768
  • Together
    • mistralai/Mixtral-8x22B-Instruct-v0.1 (no admite el renombrado de 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
    • Cualquier modelo local expuesto a través de LM Studio (no aparecerá si el servidor LM Studio Developer no está en ejecución)

Añadir tu propio proveedor

Gepetto carga los proveedores desde tres lugares, cada uno sobrescribiendo al anterior en caso de colisión de nombres en el menú: los módulos incluidos en gepetto/models/, luego cualquier archivo .py en $IDAUSR/cfg/gepetto/providers/, y después cualquier distribución instalada que anuncie un punto de entrada gepetto.providers. Las sobrescrituras se anuncian en la consola, de modo que puedes reemplazar un proveedor integrado sin bifurcar el plugin.

Un proveedor drop-in utiliza exactamente el mismo contrato que uno integrado. Para un endpoint compatible con OpenAI, el archivo completo es:

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)

Añade una sección [MyProvider] correspondiente a tu config.ini y reinicia IDA: los proveedores se registran en el momento de la carga, por lo que una nueva clave o un nuevo archivo requiere un reinicio antes de que aparezca en el menú.

Para distribuirlo como un paquete en su lugar, expón la clase o un register(register_model) invocable:

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

Los archivos en providers/ ejecutan Python arbitrario cuando IDA se inicia. Eso es el mismo nivel de confianza que cualquier plugin de IDA, pero solo instala proveedores en los que confíes.

Uso

Una vez que el plugin esté instalado correctamente, deberías poder invocarlo desde el menú contextual de la ventana de pseudocódigo de IDA, como se muestra en la captura de pantalla a continuación:

Cambia entre los modelos compatibles con Gepetto desde el menú Edit > Gepetto:

Gepetto también proporciona una interfaz CLI que puedes usar para hacer preguntas al LLM directamente desde IDA. Asegúrate de seleccionar Gepetto en la barra de entrada:

Atajos de teclado

Los siguientes atajos de teclado están disponibles:

  • Pedir al modelo que explique la función: Ctrl + Alt + G
  • Pedir al modelo que añada comentarios al código: Ctrl + Alt + K
  • Solicitar mejores nombres para las variables de la función: Ctrl + Alt + R

Las pruebas iniciales muestran que pedir mejores nombres funciona mejor si primero solicitas una explicación de la función; supongo que se debe a que el modelo entonces utiliza su propio comentario para hacer sugerencias más precisas. Hay un elemento de aleatoriedad en las respuestas de la IA. Si por alguna razón la respuesta inicial que obtienes no te resulta adecuada, siempre puedes ejecutar el comando de nuevo.

Limitaciones

Descargar herramienta