PS2 ゲームのデバッグ シンボルを解析するためのライブラリとコマンド ライン ツールのセット。 1.x シリーズのリリースは .mdebug セクションの STABS シンボルに焦点を当てていましたが、2.x シリーズのリリースでは標準の ELF シンボルと SNDLL リンカー シンボルも解析できます。 DWARF のサポートは現在準備中です。
新しい Itanium C++ ABI (GCC 3+) マングリング スキームと古い GCC 2 スキームの両方をサポートする C++ シンボル デマングラー。
半分動作している EE コア MIPS 逆アセンブラ。おそらくあまり面白くないでしょう。
シンボルテーブルパーサーとダンパー。次の情報を抽出できます。
次の出力形式がサポートされています。
これは、このすべての情報を Ghidra にインポートするために、ghidra-emotionengine-reloaded (>= 2.1.0 または不安定なビルドの 1 つ) とともに使用することを目的としています。名前にもかかわらず、STABS アナライザは R3000 (IOP) および場合によっては他の MIPS プロセッサでも機能するはずであることに注意してください。
これは stdump に似ていますが、出力を個別のソース ファイルに編成し、出力を有効なソース コードに近づけるように設計された追加機能が多数あります。 SOURCES.txt
ファイルは出力ディレクトリに指定する必要があります。このファイルはstdump files
コマンドを使用して生成できます (出力ディレクトリを基準にしてパスを手動で修正し、アドレスを削除する必要があります)。さらに、 // STATUS: NOT STARTED
で始まらない空でないファイルは上書きされません。
出力ディレクトリにFUNCTIONS.txt
ファイルが提供されている場合 (Ghidra 用に含まれているCCCDecompileAllFunctions.java
スクリプトを使用して生成できるため)、そのファイルのコードを使用して出力に関数本体が設定されます。この場合、発行されるローカル変数宣言の最初のグループはシンボルから復元されたものとなり、2 番目のグループは関数ファイルで提供されたコードからのものになります。関数名は分解されます。
グローバル変数データは、そのデータ型に基づいて構造化された方法で出力されます。
データ型は対応するファイルに分類されます。この情報はシンボル テーブルに格納されないため、uncc はヒューリスティックを使用してタイプをファイルにマップします。型が出現する翻訳単位が 1 つだけの場合、型は.c
または.cpp
ファイルに配置され、複数ある場合 (したがって、変換単位を配置する場所を決定するためにヒューリスティックを使用する必要がある場合) は.h
ファイルに配置されます。
出力には、 clang-format
やastyle
などのコード フォーマッタを使用することをお勧めします。
cmake -B bin/
cmake --build bin/
mdebugread.c
(読み取り)ecoff.c
(書き込み)include/coff/sym.h
(ヘッダー)stabs.c
(読み取り)stabsread.c
(読み取り)dbxread.c
(読み取り)dbxout.c
(書き込み)stab.def
(シンボル コード) CCC ライブラリと関連コマンド ライン ツールのソース コードは、MIT ライセンスに基づいてリリースされています。
GNU デマングラーが使用されます。これには、GPL および LGPL に基づいてライセンスされたソース ファイルが含まれています。 RapidJSON は MIT ライセンスに基づいて使用されます。 GoogleTest ライブラリは、3 条項 BSD ライセンスに基づいてテスト スイートで使用されます。