<- ここをクリックして Discord サーバーに参加してください。
このプロジェクトは、上海アリス幻樂団による東方紅魔郷 ~ the Embody of Scarlet Devil 1.02h のソースコードを完全に再構築することを目的としています。
このプロジェクトはまだ進行中であり、初期段階にあります。
このプロジェクトには、original東方紅魔郷.exe
バージョン 1.02h (SHA256 ハッシュサム 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 に自動的にインストールされます。)残りのビルド システムは、Web アーカイブの 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
これにより、ninja ビルド スクリプトbuild.ninja
自動的に生成され、その上で ninja が実行されます。
Ghidra RE の XML エクスポートは、コンパニオン リポジトリ th06-re のxml
ブランチにあります。このリポジトリは [ scripts/export_ghidra_database.py
] を通じて毎晩更新され、その履歴はチームの Ghidra Server からのチェックイン履歴と一致します。
リバース エンジニアリングの取り組みにご協力いただける場合は、Discord の @roblabla までご連絡ください。Ghidra サーバーのアカウントを提供いたします。
再実装に取り組む最も簡単な方法は、 objdiff
を使用することです。開始方法は次のとおりです。
東方紅魔郷.exe
ファイル (バージョン 1.02h) をresources/
フォルダーにコピーし、名前をgame.exe
に変更します。これは、再実装を比較するためのソースとして使用されます。python3 scripts/export_ghidra_objs.py --import-csv
を実行します。これにより、objdiff が比較できるオブジェクト ファイルがresources/game.exe
から抽出されます。最も簡単な方法は、 config/stubbed.csv
ファイルを確認することです。これらはすべて、自動的にスタブアウトされる関数です。そのうちの 1 つを選択し、関連するオブジェクト ファイルを objdiff で開き、目的の関数をクリックします。
次に、正しいcpp
ファイルを開き、宣言をコピー/ペーストして、ハッキングを開始します。 gidra デコンパイラの出力をベースとして利用すると便利な場合があります。この出力は th06-repository にあります。
貴重な貢献をしていただいた以下の方々に感謝の意を表します。
var_order
プラグマを MSVC7 に移植してくれた @EstexNT。