Ce projet a atteint sa fin de vie et n'est plus entretenu. Ghidra fournit actuellement des scripts pour l'analyse RTTI et la reconstruction des classes. Ces scripts doivent maintenant être utilisés et améliorés.
Une version entièrement construite et liée de la documentation est disponible sur https://astrelsky.github.io/ghidra-cpp-class-analyzer.
Exécutez la commande suivante dans un terminal de votre choix.
gradle buildExtension
Une fois terminé, la sortie sera située dans le dossier DIST.
Extraire l'archive dans un dossier de destination de votre choix. Lancez Ghidra et depuis le chef de projet, allez dans file->Install Extensions... Cliquez sur l'icône + près du coin supérieur droit de la fenêtre. Sélectionnez le chemin du dossier du dossier Ghidra-CPP-Class-Analyzer extrait et sélectionnez OK. Après le redémarrage de Ghidra, ouvrez le codebrowser et accédez à file->Configure...->Experimental et sélectionnez ClassTypeInfoManagerPlugin . Redémarrez le CodeBrowser pour permettre aux analyseurs d'être rafraîchis.

- Classe imbriquée - Classe de base - classe abstraite - Classe virtuelle - Classe abstraite virtuelle
Vous voulez faire un Ghidrascript avec un accès facile au ClasstypeInfomanager pour le CurrentProgram? Essayez d'étendre la classe CPPClassanalyzerGhidrascript au lieu de Ghidrascript. Malheureusement, cela n'est actuellement possible que pour les scripts écrits en Java.
Cliquez avec le bouton droit dans la fenêtre du décompilateur dans une fonction __thiscall avec laquelle un classtypeInfo existe contiendra une action pour remplir la classe. Il se comporte de manière similaire à la structure de remplissage Action Accepter Les membres de la classe sont déterminés via des appels vers d'autres fonctions __thiscall .
Pour les binaires GNU, une archive de projet devra être créée pour fournir des données requises pour l'analyse. Chaque bibliothèque contenant un RTTI dynamique devra être analysée et copiée dans l'archive du projet via le typeInfotree avant d'analyser le programme. À l'avenir, une archive sera distribuée pour libstdc ++.