用于解析 PS2 游戏调试符号的库和命令行工具集。 1.x 系列版本专注于 .mdebug 部分中的 STABS 符号,而 2.x 系列版本还可以解析标准 ELF 符号和 SNDLL 链接器符号。 DWARF 支持正在进行中。
C++ 符号分解器,支持新的 Itanium C++ ABI (GCC 3+) 修饰方案和旧的 GCC 2 方案。
半工作的 EE 核心 MIPS 反汇编器。可能不太有趣。
符号表解析器和转储器。它可以提取以下信息:
支持以下输出格式:
这旨在与 ghidra-emotionengine-reloaded (>= 2.1.0 或不稳定版本之一)一起使用,以将所有这些信息导入 Ghidra。请注意,尽管名称如此,但 STABS 分析器应该适用于 R3000 (IOP),也可能适用于其他 MIPS 处理器。
这与 stdump 类似,只不过它将输出组织到单独的源文件中,并且具有许多额外的功能,旨在尝试使所述输出更接近有效的源代码。输出目录中必须提供SOURCES.txt
文件,该文件可以使用stdump files
命令生成(您应该手动修复路径,以便它们相对于输出目录,并删除地址)。此外,不以// STATUS: NOT STARTED
开头的非空文件不会被覆盖。
如果输出目录中提供了FUNCTIONS.txt
文件(可以使用 Ghidra 附带的CCCDecompileAllFunctions.java
脚本生成),则该文件中的代码将用于填充输出中的函数体。在这种情况下,发出的第一组局部变量声明将从符号中恢复,第二组将从函数文件中提供的代码中恢复。函数名称被分解。
全局变量数据将根据其数据类型以结构化方式打印。
数据类型将被分类到其相应的文件中。由于此信息未存储在符号表中,因此 uncc 使用启发式方法将类型映射到文件。当类型仅出现在一个翻译单元中时,类型将被放入.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
来自 gcc(符号代码) CCC 库和相关命令行工具的源代码是根据 MIT 许可证发布的。
使用 GNU demangler,其中包含根据 GPL 和 LGPL 许可的源文件。 RapidJSON 在 MIT 许可下使用。测试套件在 3-Clause BSD 许可证下使用 GoogleTest 库。