GEPETTO est un plugin Python qui utilise divers modèles de langues importants pour donner un sens aux fonctions décompilées par IDA Pro (≥ 7,4). Il peut les exploiter pour expliquer ce qu'une fonction fait et renommer automatiquement ses variables. Voici un exemple simple des résultats qu'il peut fournir en quelques secondes:

Déposez simplement ce script ( gepetto.py , ainsi que le dossier gepetto/ ) dans votre dossier Plugins IDA ( $IDAUSR/plugins ). Par défaut, sur Windows, cela devrait être %AppData%Hex-RaysIDA Proplugins (vous devrez peut-être le créer).
Vous devrez ajouter les packages requis à l'installation Python d'IDA pour que le script fonctionne. Trouvez l'interprète IDA utilise en vérifiant la touche de registre suivante: ComputerHKEY_CURRENT_USERSoftwareHex-RaysIDA (par défaut sur Windows: %LOCALAPPDATA%ProgramsPythonPython39 ). Enfin, avec l'interprète correspondant, exécutez simplement:
[/path/to/python] -m pip install -r requirements.txt
gepetto/config.ini ) et ajouter vos propres touches API. Pour OpenAI, il peut être trouvé sur cette page. Veuillez noter que les requêtes API ne sont généralement pas gratuites (mais pas très coûteuses) et vous devrez configurer un mode de paiement avec le fournisseur correspondant.
L'ajout de support pour des modèles supplémentaires ne devrait pas être trop difficile, à condition que tout le fournisseur que vous envisagez expose une API similaire à celle d'Openai. Regardez dans le dossier gepetto/models pour inspirer, ou ouvrez un problème si vous ne pouvez pas le comprendre.
Une fois le plugin correctement installé, vous devriez être en mesure de l'invoquer à partir du menu contextuel de la fenêtre pseudocode d'IDA, comme indiqué dans la capture d'écran ci-dessous:

Communiquez entre les modèles pris en charge par GEPETTO à partir du menu Edit> GEPETTO:

GEPETTO fournit également une interface CLI que vous pouvez utiliser pour poser des questions au LLM directement depuis IDA. Assurez-vous de sélectionner Gepetto dans la barre d'entrée:

Les raccourcis clavier suivants sont disponibles:
Ctrl + Alt + GCtrl + Alt + RLes tests initiaux montrent que demander de meilleurs noms fonctionne mieux si vous demandez d'abord une explication de la fonction - je suppose que le modèle utilise ensuite son propre commentaire pour faire des suggestions plus précises. Il y a un élément d'aléatoire aux réponses de l'IA. Si, pour une raison quelconque, la réponse initiale que vous obtenez ne vous convient pas, vous pouvez toujours exécuter la commande à nouveau.
Vous pouvez modifier la langue de Gepetto en modifiant les paramètres régionaux dans la configuration. Par exemple, pour utiliser le plugin en français, vous ajouteriez simplement:
[Gepetto]
LANGUAGE = " fr_FR " Les paramètres régionaux choisis doivent correspondre aux noms de dossiers dans gepetto/locales . Si la langue souhaitée n'est pas disponible, vous pouvez contribuer au projet en l'ajoutant vous-même! Créez un nouveau dossier pour les paramètres régionaux souhaités (ex: gepetto/locales/de_DE/LC_MESSAGES/ ), et ouvrez une nouvelle demande de traction avec le fichier .po mis à jour, que vous pouvez créer en copie et en modifiant gepetto/locales/gepetto.pot (Remplacez toutes les lignes commençant par msgstr par la version localisée).