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 또는 불안정한 빌드 중 하나)와 함께 사용하기 위한 것입니다. 이름에도 불구하고 STABS 분석기는 R3000(IOP) 및 기타 MIPS 프로세서에서도 작동해야 합니다.
이는 출력을 별도의 소스 파일로 구성하고 해당 출력을 유효한 소스 코드에 더 가깝게 만들도록 설계된 여러 추가 기능이 있다는 점을 제외하면 stdump와 유사합니다. SOURCES.txt
파일은 stdump files
명령을 사용하여 생성할 수 있는 출력 디렉터리에 제공되어야 합니다. 경로가 출력 디렉터리에 상대적이 되도록 수동으로 수정하고 주소를 제거해야 합니다. 또한 // STATUS: NOT STARTED
로 시작하지 않는 비어 있지 않은 파일은 덮어쓰지 않습니다.
포함된 Ghidra용 CCCDecompileAllFunctions.java
스크립트를 사용하여 생성할 수 있는 것처럼 FUNCTIONS.txt
파일이 출력 디렉터리에 제공되는 경우 해당 파일의 코드는 출력의 함수 본문을 채우는 데 사용됩니다. 이 경우, 내보낸 지역 변수 선언의 첫 번째 그룹은 기호에서 복구된 선언이고, 두 번째 그룹은 함수 파일에 제공된 코드에서 가져온 것입니다. 함수 이름이 demangle되었습니다.
전역 변수 데이터는 데이터 유형에 따라 구조화된 방식으로 인쇄됩니다.
데이터 유형은 해당 파일로 정렬됩니다. 이 정보는 기호 테이블에 저장되지 않으므로 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
(기호 코드) CCC 라이브러리 및 관련 명령줄 도구의 소스 코드는 MIT 라이선스에 따라 공개됩니다.
GPL 및 LGPL에 따라 라이센스가 부여된 소스 파일이 포함된 GNU demangler가 사용됩니다. RapidJSON은 MIT 라이선스에 따라 사용됩니다. GoogleTest 라이브러리는 3-Clause BSD 라이센스에 따라 테스트 모음에서 사용됩니다.