Pustaka dan seperangkat alat baris perintah untuk mengurai simbol debug dari game PS2. Rilis seri 1.x difokuskan pada simbol STABS di bagian .mdebug, sedangkan rilis seri 2.x juga dapat mengurai simbol ELF standar dan simbol linker SNDLL. Dukungan DWARF sedang dikerjakan.
Demangler simbol C++ dengan dukungan untuk skema mangling Itanium C++ ABI (GCC 3+) baru dan skema GCC 2 lama.
Pembongkaran MIPS inti EE yang setengah berfungsi. Mungkin tidak terlalu menarik.
Pengurai dan dumper tabel simbol. Itu dapat mengekstrak informasi berikut:
Format keluaran berikut ini didukung:
Ini dimaksudkan untuk digunakan dengan ghidra-emotionengine-reloaded (>= 2.1.0 atau salah satu build tidak stabil) untuk mengimpor semua informasi ini ke Ghidra. Perhatikan bahwa meskipun namanya penganalisa STABS harus bekerja untuk R3000 (IOP) dan mungkin prosesor MIPS lainnya juga.
Ini mirip dengan stdump kecuali ia mengatur keluarannya ke dalam file sumber terpisah, dan memiliki sejumlah fitur tambahan yang dirancang untuk mencoba dan membuat keluaran tersebut mendekati kode sumber yang valid. File SOURCES.txt
harus disediakan di direktori keluaran, yang dapat dihasilkan menggunakan perintah stdump files
(Anda harus memperbaiki jalur secara manual sehingga relatif terhadap direktori keluaran, dan menghapus alamatnya). Selain itu, file tidak kosong yang tidak dimulai dengan // STATUS: NOT STARTED
tidak akan ditimpa.
Jika file FUNCTIONS.txt
disediakan di direktori output, seperti yang dapat dihasilkan menggunakan skrip CCCDecompileAllFunctions.java
yang disertakan untuk Ghidra, kode dari file tersebut akan digunakan untuk mengisi isi fungsi dalam output. Dalam hal ini, grup pertama dari deklarasi variabel lokal yang dipancarkan adalah grup yang dipulihkan dari simbol, dan grup kedua akan berasal dari kode yang disediakan dalam file fungsi. Nama fungsi dihilangkan.
Data variabel global akan dicetak secara terstruktur berdasarkan tipe datanya.
Tipe data akan diurutkan ke dalam file yang sesuai. Karena informasi ini tidak disimpan dalam tabel simbol, uncc menggunakan heuristik untuk memetakan tipe ke file. Jenis akan dimasukkan ke dalam file .c
atau .cpp
ketika hanya ada satu unit terjemahan yang jenisnya muncul, dan file .h
ketika ada beberapa (dan karenanya heuristik harus digunakan untuk menentukan di mana menempatkannya).
Disarankan untuk menggunakan pemformat kode seperti clang-format
atau astyle
pada output.
cmake -B bin/
cmake --build bin/
mdebugread.c
dari gdb (membaca)ecoff.c
dari gas (menulis)include/coff/sym.h
dari binutils (header)stabs.c
dari binutils (membaca)stabsread.c
dari gdb (membaca)dbxread.c
dari gdb (membaca)dbxout.c
dari gcc (menulis)stab.def
dari gcc (kode simbol) Kode sumber untuk perpustakaan CCC dan alat baris perintah terkait dirilis di bawah lisensi MIT.
Demangler GNU digunakan, yang berisi file sumber yang dilisensikan di bawah GPL dan LGPL. RapidJSON digunakan di bawah lisensi MIT. Pustaka GoogleTest digunakan oleh rangkaian pengujian di bawah lisensi 3-Clause BSD.