Библиотека и набор инструментов командной строки для анализа символов отладки из игр для PS2. Выпуски серии 1.x были ориентированы на символы STABS в разделах .mdebug, тогда как выпуски серии 2.x также могут анализировать стандартные символы ELF и символы компоновщика SNDLL. Поддержка DWARF находится в разработке.
Средство разбора символов C++ с поддержкой как новой схемы преобразования Itanium C++ ABI (GCC 3+), так и старой схемы GCC 2.
Полурабочий дизассемблер MIPS EE core. Наверное, это не слишком интересно.
Анализатор и дампер таблицы символов. Он может извлечь следующую информацию:
Поддерживаются следующие форматы вывода:
Это предназначено для использования с ghidra-emotionengine-reloaded (>= 2.1.0 или одной из нестабильных сборок) для импорта всей этой информации в Ghidra. Обратите внимание, что, несмотря на название, анализатор STABS должен работать и с R3000 (IOP), и, возможно, с другими процессорами MIPS.
Это похоже на stdump, за исключением того, что он организует вывод в отдельные исходные файлы и имеет ряд дополнительных функций, предназначенных для того, чтобы попытаться приблизить вывод к допустимому исходному коду. В выходном каталоге должен быть предоставлен файл SOURCES.txt
, который можно создать с помощью команды stdump files
(необходимо исправить пути вручную, чтобы они относились к выходному каталогу, и удалить адреса). Кроме того, непустые файлы, которые не начинаются с // STATUS: NOT STARTED
не будут перезаписаны.
Если в выходном каталоге имеется файл FUNCTIONS.txt
, который можно сгенерировать с помощью прилагаемого сценария CCCDecompileAllFunctions.java
для Ghidra, код из этого файла будет использоваться для заполнения тел функций в выходных данных. В этом случае первая группа созданных объявлений локальных переменных будет восстановлена из символов, а вторая группа будет из кода, предоставленного в файле функций. Имена функций расчленены.
Данные глобальной переменной будут распечатаны в структурированном виде в зависимости от типа данных.
Типы данных будут отсортированы по соответствующим файлам. Поскольку эта информация не хранится в таблице символов, uncc использует эвристику для сопоставления типов с файлами. Типы будут помещены в файлы .c
или .cpp
если существует только одна единица перевода, в которой указан тип, и в файлы .h
, если их несколько (и, следовательно, когда необходимо использовать эвристику для определения того, куда их поместить).
Рекомендуется использовать на выходе средство форматирования кода, такое как clang-format
или astyle
.
cmake -B bin/
cmake --build bin/
mdebugread.c
из GDB (чтение)ecoff.c
от газа (пишу)include/coff/sym.h
из binutils (заголовки)stabs.c
из binutils (чтение)stabsread.c
из GDB (чтение)dbxread.c
из GDB (чтение)dbxout.c
из gcc (запись)stab.def
из gcc (коды символов) Исходный код библиотеки CCC и связанных с ней инструментов командной строки распространяется под лицензией MIT.
Используется деманглер GNU, который содержит исходные файлы под лицензией GPL и LGPL. RapidJSON используется по лицензии MIT. Библиотека GoogleTest используется набором тестов по лицензии BSD из 3 пунктов.