
IDA-Plugin, das Sprachmodelle abfragt, um Reverse-Engineering zu beschleunigen
Gepetto ist ein Python-Plugin, das verschiedene große Sprachmodelle verwendet, um Funktionen, die von IDA Pro (≥ 7.6) dekompiliert wurden, mit Bedeutung zu versehen. Es kann sie nutzen, um zu erklären, was eine Funktion tut, und um ihre Variablen automatisch umzubenennen. Hier ist ein einfaches Beispiel dafür, welche Ergebnisse es in nur wenigen Sekunden liefern kann:

Der einfachste Weg, Gepetto zu installieren, ist die Verwendung des Hex-Rays CLI-Tools (hcli):
pip install ida-hcli
hcli plugin install gepetto
Dadurch wird das Plugin automatisch in deinem IDA-Benutzerverzeichnis installiert.
Alternativ kannst du das Plugin manuell installieren:
gepetto.py sowie den Ordner gepetto/) in deinem IDA-Plugins-Ordner ($IDAUSR/plugins) ab.%APPDATA%\Hex-Rays\IDA Pro\plugins\~/.idapro/plugins/~/.idapro/plugins/Computer\HKEY_CURRENT_USER\Software\Hex-Rays\IDA (Standard unter Windows: %LOCALAPPDATA%\Programs\Python\Python39).[/path/to/python] -m pip install -r requirements.txt
Gepetto speichert seine Konfiguration in deinem IDA-Benutzerverzeichnis, sodass sie Plugin-Upgrades übersteht:
%APPDATA%\Hex-Rays\IDA Pro\cfg\gepetto\config.ini~/.idapro/cfg/gepetto/config.iniBeim ersten Ausführen des Plugins kopiert es gepetto/config.ini dorthin und
teilt dir den Pfad auf der Konsole mit. Danach ist die mit dem Plugin
ausgelieferte Kopie nur noch eine Vorlage — bearbeite die Datei in deinem
Benutzerverzeichnis. Setze GEPETTO_CONFIG_DIR, um den Speicherort vollständig
zu überschreiben.
Füge deine API-Schlüssel zu dieser Datei hinzu oder stelle sie über die darin genannten Umgebungsvariablen bereit. Für OpenAI kann ein Schlüssel auf dieser Seite erstellt werden. Bitte beachte, dass API-Abfragen in der Regel nicht kostenlos sind (wenn auch nicht sehr teuer) und du eine Zahlungsmethode beim entsprechenden Anbieter einrichten musst.
Gepetto lädt Anbieter von drei Orten, wobei jeder den vorherigen bei einer
Namenskollision im Menü überschreibt: die in gepetto/models/ ausgelieferten
Module, dann jede .py-Datei in $IDAUSR/cfg/gepetto/providers/, dann jede
installierte Distribution, die einen gepetto.providers-Entry-Point
bewirbt. Überschreibungen werden auf der Konsole angekündigt, sodass du einen
eingebauten Anbieter ersetzen kannst, ohne das Plugin zu forken.
Ein Drop-in-Anbieter verwendet exakt denselben Vertrag wie ein eingebauter. Für einen OpenAI-kompatiblen Endpoint besteht die gesamte Datei aus:
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)
Fügen Sie einen passenden Abschnitt [MyProvider] zu Ihrer config.ini hinzu und starten Sie IDA neu: Anbieter werden beim Laden registriert, daher benötigt ein neuer Schlüssel oder eine neue Datei einen Neustart, bevor er im Menü erscheint.
Um einen stattdessen als Paket auszuliefern, stellen Sie die Klasse oder ein aufrufbares register(register_model) bereit:
[project.entry-points."gepetto.providers"]
myprovider = "myprovider:MyProvider"
Dateien in providers/ führen beliebigen Python-Code aus, wenn IDA startet. Das ist dieselbe
Vertrauensstufe wie bei jedem IDA-Plugin, aber installiere nur Provider, denen du vertraust.
Sobald das Plugin ordnungsgemäß installiert ist, solltest du es über das Kontextmenü des Pseudocode-Fensters von IDA aufrufen können, wie im folgenden Screenshot gezeigt:

Wechsle zwischen den von Gepetto unterstützten Modellen über das Menü Edit > Gepetto:

Gepetto bietet außerdem eine CLI-Schnittstelle, mit der du dem LLM direkt aus IDA heraus Fragen stellen kannst. Stelle sicher, dass du
Gepetto in der Eingabeleiste auswählst:

Die folgenden Tastenkombinationen sind verfügbar:
Ctrl + Alt + GCtrl + Alt + KCtrl + Alt + R