osu!は、.Net C# で書かれたリズムゲームです。そして自分はosu!が大好きです<3
何故逆コンパイルを行おうと試みたのか?理由はカスタムクライアントです。有名なものといえばAuto+やAkatsukiなどでしょうか?
しかし、ソースコードは非公開なのでゲームの根本にはアクセスできません。
どのようにカスタムを行われているのか、という興味本意です。
念のため言っておきますが、osu!を再構築するつもりはありません。
目的は大まかなゲームの構造を理解する事なので、プログラムの改造やチート行為については書きません。
osu!をDnSpy等でソースコードを復元しようとすると乱雑な識別子名が取得され、すべての文字列定数が難読化された大きなバイナリBLOBに隠蔽されてしまいます。
うん。読めませんね。
これが難読化(obfuscated)と言いソースコードを見せない様にする一つの手です。
そこでde4dotを使います。
使用方法はソースコードからビルドして、アプリケーションで読み込むだけです。
最新のosu!のバージョンだともしかしたらエラーが起きるかもしれません。2016年から2019年中盤辺りかフォールバックバージョンをおすすめします。
バージョンによって難読化に使用しているものが違います。今回難読化に使用されていたのはEazfuscatorでした。
ConfuserEx2がバージョンによっては使用されていました。
成功するとosu!-cleaned.exeとかかれたアプリケーションが排出されるはずです。
これを読み込むと難読化済みとは違いクリーンなコードが見れるはずです。
ただ、完璧に難読化を解除出来た訳ではなく、DnSpyの機能で難読化解除後のコードをVS(Visual Studio)にエクスポートしてみると、
プロジェクト全体で4,000個を超えるエラーがありました。バージョンによっては1000個から12000個近くと難読化に使用された物によっては
違いがあるのかもしれません。