<- 디스코드 서버에 참여하려면 여기를 클릭하세요.
이 프로젝트는 Team Shanghai Alice의 동방 코우마쿄 ~ 홍마 1.02h의 구현의 소스 코드를 완벽하게 재구성하는 것을 목표로 합니다.
이 프로젝트는 여전히 진행 중이며 초기 단계입니다.
이 프로젝트에는 원본東方紅魔郷.exe
버전 1.02h(SHA256 hashsum 9f76483c46256804792399296619c1274363c31cd8f1775fafb55106fb852245)가 필요합니다. certutil -hashfile <path-to-your-file> SHA256
명령을 사용하여 Windows에서 해시합을 확인할 수 있습니다. certutil -hashfile <path-to-your-file> SHA256
.)
東方紅魔郷.exe
resources/game.exe
에 복사하세요.
빌드 시스템에는 다음과 같은 패키지 요구 사항이 있습니다.
python3
>= 3.4msiextract
(Linux/macos에만 해당)wine
(Linux/macos에만 해당, CL.EXE 힙 문제를 방지하려면 macOS에서 CrossOver를 선호함)aria2c
(선택 사항, 토렌트 다운로드 허용, 선택하면 Windows에 자동으로 설치됩니다.)나머지 빌드 시스템은 웹 아카이브의 Visual Studio 2002 및 DirectX 8.0으로 구성됩니다.
그러면 컴파일러, 라이브러리 및 기타 도구가 다운로드되어 설치됩니다.
Windows를 사용 중이고 어떤 이유로든 종속성을 수동으로 다운로드하려는 경우 다음 명령을 실행하여 다운로드할 파일 목록을 가져옵니다.
python scripts/create_devenv.py scripts/dls scripts/prefix --no-download
하지만 모든 항목을 자동으로 다운로드하려면 대신 다음과 같이 실행하세요.
python scripts/create_devenv.py scripts/dls scripts/prefix
토렌트를 사용하여 해당 종속성을 다운로드하려면 다음을 사용하세요.
python scripts/create_devenv.py scripts/dls scripts/prefix --torrent
Linux 및 Mac에서는 다음 스크립트를 실행합니다.
# NOTE: On macOS if you use CrossOver.
# export WINE=<CrossOverPath>/wine
./scripts/create_th06_prefix
다음 스크립트를 실행합니다.
python3 ./scripts/build.py
그러면 자동으로 닌자 빌드 스크립트 build.ninja
가 생성되고 여기서 닌자가 실행됩니다.
xml
분기의 동반 저장소 th06-re에서 Ghidra RE의 XML 내보내기를 찾을 수 있습니다. 이 저장소는 [ scripts/export_ghidra_database.py
]를 통해 매일 밤 업데이트되며 해당 기록은 우리 팀 Ghidra 서버의 체크인 기록과 일치합니다.
우리의 리버스 엔지니어링 노력에 도움을 주고 싶다면, Ghidra 서버 계정을 제공할 수 있도록 디스코드로 @roblabla에 연락해 주세요.
재구현 작업을 수행하는 가장 쉬운 방법은 objdiff
를 사용하는 것입니다. 시작하는 방법은 다음과 같습니다.
東方紅魔郷.exe
파일(버전 1.02h)을 resources/
폴더에 복사하고 이름을 game.exe
로 바꾸세요. 이는 재구현을 비교하기 위한 소스로 사용됩니다.python3 scripts/export_ghidra_objs.py --import-csv
실행하세요. 그러면 objdiff와 비교할 수 있는 개체 파일이 resources/game.exe
에서 추출됩니다. 가장 쉬운 방법은 config/stubbed.csv
파일을 살펴보는 것입니다. 이것들은 모두 자동으로 스텁아웃되는 기능입니다. 그 중 하나를 선택하고 objdiff에서 관련 개체 파일을 열고 관심 있는 기능을 클릭해야 합니다.
그런 다음 올바른 cpp
파일을 열고 선언을 복사/붙여넣은 후 해킹을 시작하세요! Ghidra 디컴파일러 출력을 기본으로 사용하는 것이 유용할 수 있습니다. 이 출력은 th06-re 저장소에서 찾을 수 있습니다.
귀중한 기여를 해주신 다음 분들께 감사의 말씀을 전하고 싶습니다.
var_order
pragma를 MSVC7로 포팅해 주신 @EstexNT.