<- нажмите здесь, чтобы присоединиться к серверу Discord.
Целью этого проекта является идеальная реконструкция исходного кода Touhou Koumakyou ~ the Embodiment of Scarlet Devil 1.02h от Team Shanghai Alice.
Этот проект все еще находится в стадии разработки и находится на ранней стадии.
Для этого проекта требуется исходный файл東方紅魔郷.exe
версии 1.02h (хэш-сумма SHA256 9f76483c46256804792399296619c1274363c31cd8f1775fafb55106fb852245, вы можете проверить хэш-сумму в Windows с помощью команды certutil -hashfile <path-to-your-file> SHA256
.)
Скопируйте東方紅魔郷.exe
в resources/game.exe
.
Система сборки имеет следующие требования к пакетам:
python3
>= 3.4msiextract
(только в Linux/Macos)wine
(только в Linux/Macos, в macOS выбирайте CrossOver, чтобы избежать возможных проблем с кучей CL.EXE)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
и запустит на нем ninja.
Вы можете найти XML-экспорт нашего Ghidra RE в сопутствующем репозитории th06-re, в ветке xml
. Этот репозиторий обновляется каждую ночь через [ scripts/export_ghidra_database.py
], и его история совпадает с историей проверок с сервера Ghidra нашей команды.
Если вы хотите помочь нам в нашем обратном проектировании, свяжитесь с @roblabla в Discord, чтобы мы могли предоставить вам учетную запись на сервере Ghidra.
Самый простой способ работать над повторной реализацией — использовать objdiff
. Вот как начать:
東方紅魔郷.exe
(версия 1.02h) в папку resources/
и переименуйте его в game.exe
. Это будет использоваться в качестве источника для сравнения повторных реализаций.python3 scripts/export_ghidra_objs.py --import-csv
. Это позволит извлечь из resources/game.exe
объектные файлы, с которыми сможет сравнить objdiff. Самый простой — просмотреть файлы config/stubbed.csv
. Это все функции, которые автоматически заглушаются. Вам следует выбрать один из них, открыть связанный с ним объектный файл в objdiff и щелкнуть интересующую функцию.
Затем откройте правильный файл cpp
, скопируйте/вставьте объявление и приступайте к взлому! Возможно, будет полезно взять за основу вывод декомпилятора ghidra. Вы можете найти этот вывод в репозитории th06-re.
Мы хотели бы выразить нашу благодарность следующим людям за их неоценимый вклад:
var_order
на MSVC7.