QTREANALYZERは、QTフレームワークを利用するバイナリを逆転させるように設計されたGhidraアナライザーです。その主な機能は、QT固有のオブジェクトとメソッド情報を回復し、バイナリ構造に関する貴重な洞察を提供することです。
このアナライザーは、インストールされているGhidraバージョンに関連付けられています。現在、それを構築するために必要です。最新のGhidraバージョンのビルドエクステンションは、将来的に提供されます。
QtREAnalyzerQtREAnalyzerフォルダーに移動します cd QtREAnalyzer Q tREAnalyzer$GHIDRA_DIRインストールディレクトリに置き換えます)。たとえば、次のGhidraインストールパスC:ghidra_11.0.3_PUBLICがある場合gradle -PGHIDRA_INSTALL_DIR=C:ghidra_11.0.3_PUBLICを実行します。 gradle -PGHIDRA_INSTALL_DIR= $GHIDRA_DIR File - > Install Extensions... 、 +サインをクリックして、 QtREAnalyzerQtREAnalyzerdistghidra_*_QtREAnalyzer.zipを選択し、[OK]をクリックします。QTREANALYZERが正しくインストールされていることを確認するには、CodeBrowserを開いてAnalysis - > Auto Analyze ... Aを選択し、 QtReAnalyzerオプションが存在することを確認できます。

現在、QTREANALYZERは、RTTI(つまり、MSVCコンパイラにコンパイルされた)を持つX32またはX64バイナリのみで動作します。これは、QTREANALYZERがRTTIを使用してQobjectから継承されるかどうかを確認するためです。これは、このアナライザーをRTTIなしでバイナリと連携するように拡張したい場合、 RttiClass.javaファイルを適切に変更することだけです。
まれに、誤った署名が関数に適用されるか、誤ったアドレスのデータ型にプロパティが追加されます。これは、QTREANALYZERがQT信号、スロット、プロパティの署名を対応する関数アドレス/プロパティオフセットにマッピングする方法であるため、修正することはほとんど不可能です。これは大きな制限ではありません。10000000を超えるQT信号とスロットが手動でチェックするファイルでは、誤ってラベル付けされたシンボルのみを見つけました。
QTREANALYZERは、次の驚くべきリソースなしでは不可能だったでしょう。