Dieses Projekt hat sein Lebensende erreicht und wird nicht mehr aufrechterhalten. Ghidra bietet derzeit Skripte für die RTTI -Analyse und die Klassenrekonstruktion. Diese Skripte sollten nun verwendet und verbessert werden.
Eine vollständig erstellte und verknüpfte Version der Dokumentation finden Sie unter https://astrelsky.github.io/ghidra-cpp-cpp-cpp-analyzer.
Führen Sie den folgenden Befehl in einem Terminal Ihrer Wahl aus.
gradle buildExtension
Nach Abschluss befindet sich die Ausgabe im DIST -Ordner.
Extrahieren Sie das Archiv in einen Zielordner Ihrer Wahl. Starten Sie Ghidra und aus dem Projektmanager gehen Sie zu file->Install Extensions... Klicken Sie auf das Symbol + in der oberen rechten Ecke des Fensters. Wählen Sie den Pfad des extrahierten Ghidra-CPP-Klasse-Analysator-Ordners und wählen Sie OK. Öffnen Sie nach dem Neustart von Ghidra den CodeBrowser und gehen Sie zu file->Configure...->Experimental und wählen Sie ClassTypeInfoManagerPlugin aus. Starten Sie den CodeBrowser neu, damit die Analysatoren aktualisiert werden können.

- verschachtelte Klasse - Grundklasse - abstrakte Klasse - virtuelle Klasse - Virtuelle abstrakte Klasse
Möchten Sie ein Ghidrakript mit einfachem Zugriff auf den Classtypeinfomanager für das CurrentProgram erstellen? Versuchen Sie, die CPPCLASSANALYZERGHIDRASSCIP -Klasse anstelle von Ghidracript zu erweitern. Leider ist dies derzeit nur für Skripte in Java möglich.
Klicken Sie mit der rechten Maustaste im Dekompilerfenster in einer __thiscall -Funktion, mit der ein Classtypeinfo existiert, eine Aktion, um die Klasse auszufüllen. Es verhält sich ähnlich wie die Ausfüllstrukturaktionen Akzeptanzklassenmitglieder werden durch Anrufe an andere __thiscall -Funktionen bestimmt.
Für GNU -Binärdateien muss ein Projektarchiv erstellt werden, um Daten bereitzustellen, die für die Analyse erforderlich sind. Jede Bibliothek mit dynamischem RTTI muss vor der Analyse des Programms analysiert und in das Projektarchiv kopiert werden. In Zukunft wird ein Archiv für libstdc ++ verteilt.