<- haga clic aquí para unirse al servidor de Discord.
Este proyecto tiene como objetivo reconstruir perfectamente el código fuente de Touhou Koumakyou ~ the Embodiment of Scarlet Devil 1.02h del Team Shanghai Alice.
Este proyecto todavía está en proceso y se encuentra en sus primeras etapas.
Este proyecto requiere la versión original東方紅魔郷.exe
1.02h (SHA256 hashsum 9f76483c46256804792399296619c1274363c31cd8f1775fafb55106fb852245, puede verificar el hashsum en Windows con el comando certutil -hashfile <path-to-your-file> SHA256
.)
Copie東方紅魔郷.exe
a resources/game.exe
.
El sistema de compilación tiene los siguientes requisitos de paquete:
python3
>= 3.4msiextract
(solo en Linux/macos)wine
(solo en Linux/macos, prefiera CrossOver en macOS para evitar posibles problemas con el montón CL.EXE)aria2c
(opcional, permite descargas de torrents, se instalará automáticamente en Windows si se selecciona).El resto del sistema de compilación está construido a partir de Visual Studio 2002 y DirectX 8.0 del Web Archive.
Esto descargará e instalará el compilador, las bibliotecas y otras herramientas.
Si está en Windows y, por algún motivo, desea descargar las dependencias manualmente, ejecute este comando para obtener la lista de archivos para descargar:
python scripts/create_devenv.py scripts/dls scripts/prefix --no-download
Pero si desea que todo se descargue automáticamente, ejecútelo así:
python scripts/create_devenv.py scripts/dls scripts/prefix
Y si quieres usar torrent para descargar esas dependencias, usa esto:
python scripts/create_devenv.py scripts/dls scripts/prefix --torrent
En Linux y Mac, ejecute el siguiente script:
# NOTE: On macOS if you use CrossOver.
# export WINE=<CrossOverPath>/wine
./scripts/create_th06_prefix
Ejecute el siguiente script:
python3 ./scripts/build.py
Esto generará automáticamente un script de compilación ninja build.ninja
y ejecutará ninja en él.
Puede encontrar una exportación XML de nuestro Ghidra RE en el repositorio complementario th06-re, en la rama xml
. Este repositorio se actualiza todas las noches a través de [ scripts/export_ghidra_database.py
] y su historial coincide con el historial de registro del servidor Ghidra de nuestro equipo.
Si desea ayudarnos en nuestro esfuerzo de ingeniería inversa, comuníquese con @roblabla en discord para que podamos brindarle una cuenta en el servidor Ghidra.
La forma más sencilla de trabajar en la reimplementación es mediante el uso de objdiff
. A continuación le indicamos cómo empezar:
東方紅魔郷.exe
(versión 1.02h) a la carpeta resources/
y cámbiele el nombre a game.exe
. Esto se utilizará como fuente para comparar las reimplementaciones.python3 scripts/export_ghidra_objs.py --import-csv
. Esto extraerá de resources/game.exe
los archivos objeto con los que objdiff puede comparar. Lo más sencillo es mirar los archivos config/stubbed.csv
. Todas esas son funciones que se desactivan automáticamente. Debe elegir uno de ellos, abrir el archivo objeto asociado en objdiff y hacer clic en la función de interés.
Luego, abra el archivo cpp
correcto, copie/pegue la declaración y ¡comience a piratear! Puede resultar útil tomar la salida del descompilador ghidra como base. Puede encontrar este resultado en el repositorio th06-re.
Nos gustaría extender nuestro agradecimiento a las siguientes personas por sus invaluables contribuciones:
var_order
a MSVC7.