dwgx@blog:~$dwgx
> cd ../posts

satsuki: 東方 06 のバイナリ diff 小ツール(fork)

// created

Simple binary comparison helper tool for Touhou 06

satsuki は Touhou 06 東方紅魔郷 のバイナリ diff 専用に作られた Rust の小ツールだ。元プロジェクトは GensokyoClub/satsuki で、自分のアカウント下に fork した。オリジナルを名乗るつもりはなく、なぜ持ってきたか、何に使っているかを記録しておくだけだ。

東方の逆向をやると EoSD のバージョン乱立問題は避けて通れない。リリース違い、マイナーバージョン違い、patch 前後で、同じ exe でもバイナリがまるで別物になる。ある関数、あるオフセット、ある変更箇所を特定しようとしても、hex を目で追うのはすぐに限界が来る。satsuki はまさにこの作業を自動化する。2 つのバイナリを読み込み、位置を合わせ、差分を見つけ、結果を分かりやすくまとめてくれる。名前もかなり東方らしい、十六夜咲夜の雰囲気だ。

fork してから 2 点を見ている。1 つは手頃なツールとして直接使うこと。比較して差分を特定し、毎回自分でスクリプトを組む手間を省く。もう 1 つは学習素材として、作者が比較ロジックをどう分解しているかを見ること。Rust はバイト単位でデータを切っても境界を越えにくく、この考え方を読み解けば、別のゲームや別のフォーマットでも自分で再現できる。

この fork はローカルでの実験とバックアップにすぎず、upstream との同期は保証しない。本当に使うなら直接 GensokyoClub/satsuki の upstream を見てほしい。docs も license も issue もすべてそこにある。私の fork を upstream の代わりに使う前に、まず diff を一目見ておくこと。

それからずっと守っているルールが 1 つ。逆向の私的な素材はリポジトリに入れない。ゲーム本体のバイナリ、個人の分析ノート、token やローカルのパスは、どれも git には入れない。ツールはツール、素材は素材だ。