Qreanalyzer ist ein Ghidra-Analysator, mit dem Binärdateien umgekehrt sind, die das QT-Framework verwenden. Seine Hauptfunktion ist es, QT-spezifische Objekt- und Methodeninformationen wiederherzustellen und wertvolle Einblicke in binäre Strukturen zu liefern.
Dieser Analysator ist an die Ghidra -Version gebunden, auf der er installiert wird. Derzeit ist es notwendig, es zu bauen; Für die neuesten Ghidra -Versionen werden in Zukunft gebaute Erweiterungen bereitgestellt.
QtREAnalyzerQtREAnalyzer cd QtREAnalyzer Q tREAnalyzer$GHIDRA_DIR durch Ihr Installationsverzeichnis). Wenn Sie beispielsweise den folgenden Ghidra -Installationspfad C:ghidra_11.0.3_PUBLIC haben, würden Sie gradle -PGHIDRA_INSTALL_DIR=C:ghidra_11.0.3_PUBLIC ausführen. gradle -PGHIDRA_INSTALL_DIR= $GHIDRA_DIR File -> Install Extensions... klicken Sie auf das + Zeichen und wählen Sie den QtREAnalyzerQtREAnalyzerdistghidra_*_QtREAnalyzer.zip und klicken Sie auf OK. Um zu überprüfen, ob QTreanalyzer korrekt installiert ist, können Sie den CodeBrowser öffnen und Analysis auswählen -> Auto Analyze ... A und überprüfen Sie, ob die Option QtReAnalyzer vorliegt.

Derzeit funktioniert QTreanalyzer nur mit X32- oder X64 -Binärdateien mit RTTI (dh mit dem MSVC -Compiler zusammengestellt). Dies ist der Fall, da QTreanalyzer RTTI verwendet, um zu finden, ob Klassen von QObject erben. Wenn man diesen Analysator so erweitern möchte, dass man mit Binärdateien ohne RTTI arbeitet, ist nur die erforderliche Änderung der RttiClass.java -Datei angemessen zu ändern.
In sehr seltenen Fällen wird eine falsche Signatur auf eine Funktion angewendet, oder eine Eigenschaft wird einem Datentyp in der falschen Adresse hinzugefügt. Dies ist fast unmöglich zu beheben, da QTreanalyzer QT -Signale, Slots und Eigenschaften zu der entsprechenden Funktionsadresse/Propertie -Offset heuristisch basiert. Dies sollte keine große Einschränkung sein, in einer Datei mit über 10 000 QT -Signalen und Slots, die manuell eine umfangreiche Stichprobe überprüfen, fand ich nur eine Handvoll fälschlicherweise beschrifteter Symbole.
Qreanalyzer wäre ohne die folgenden erstaunlichen Ressourcen nicht möglich gewesen: