User:Sil/解析してみたい方に向けた解説/環境構築
概要
解析してみたいと思ったことはありませんか。 ここでは解析するうえで必要な環境構築と簡単な使い方について解説します。
解析するためには解析対象のソースコードが必要ですが、まずそのソースコードを見る環境を整える必要があります。
Elinのソースコードを見る方法は主に2つあります。
- Elin Modding Wikiを使う方法
- デコンパイラを使う方法
ここからはそれぞれについて説明します。
(注意)要所でリンクを貼っていますが、悪意の有無によらず危険にさらす可能性があるため、できれば自分で検索して安全だと判断してからダウンロード等した方が良いです。
Elin Modding Wikiを使う方法
Elin Modding Wikiは有志の方がElinの復元されたソースコードやMOD作成の仕方を公開してくれているWikiです。
ありがたく使わせていただきましょう。
メリット・デメリット
メリット
- 自分のPCに環境を構築する必要がない
- 手軽にソースコードを確認できる
デメリット
- 最新のソースコードでない場合がある
- GitHubにログインできないと検索機能が不便
使い方
Elin Modding Wikiの上部にある「Elin Decompiled」から全体のソースコードを確認できます。
特定のコードを探したい場合は、「Elin Decompiled」の左横にあるバージョン(例:EA23.99)をクリックし、「Drakeny's Elin Decompiled」からGitHubのリポジトリにアクセスしましょう。 GitHubでは、ログインしないとファイル単位の検索しかできませんが、ログインすると右上の「Type / to search」から単語レベルの検索が可能です。
またバージョンをクリックして「Drakeny's Elin Decompiled」に移動する前に、左側に見出しのようなものが表示されています。その中から「Important Changes」をクリックすると、前バージョンとの差分を確認できます。
デコンパイラをインストールして使う方法
こちらは自分のPCにデコンパイラをインストールすることでプログラムからソースコードを復元する方法です。
メリット・デメリット
メリット
- いつでも最新のソースコードを確認できる
- C#に対応しているエディタで自分用の環境構築が好きにできる
- 複数のデコンパイラを活用することでより正確なソースコードを得ることができる
デメリット
- インストールがやや面倒
主なデコンパイラ
Elinを解析する際に主に使われるデコンパイラは以下の3つです。
- ILSpy(推奨)
- dotPeek(推奨)
- dnSpy(一部非対応)
注意点: dnSpyは人気がありますが、対応していない C# バージョンの言語機能があるため、一部のメソッドが正常にデコンパイルされない場合があります。 そのため、ILSpyやdotPeekの使用をおすすめします。
ILSpyのインストール方法と使い方
インストール方法・変更した方が良い設定
- ILSpyのリリースページ内の「Assets」から適切なファイルをダウンロードし、展開しましょう。(基本はILSpy_binaries_9.0.0.7889-x64.zipでOK)
- .NET 8.0以降が必要なので、未インストールならインストールしてください。
- ILSpy.exeを起動して問題なくインストールできたか確認しましょう。
- 確認出来たらデフォルトではツリーが畳まれた状態になるため設定を変更(View → Options → Display → Expand Member Definitions after decompilation にチェック)。
基本的な使い方
左上の 「File」→「Open」 から、以下のパスにある Elin.dll を選択して開いてください。(※Elin.exe ではありません)
\Steam\steamapps\common\Elin\Elin_Data\Managed\Elin.dll
開くと、左側の 「Assemblies」 に Elin.dll が表示されているはずです。このツリーを展開すると、「References」 の下に ハイフンのみの項目 があると思います。この中に含まれる多数のクラスが、Elinのソースコードです。
そのまま ILSpy 上でソースコードを閲覧できますが、Elin.dll を右クリックして 「Save Code」 を選択すると、.cs ファイルとして保存できます。保存したファイルをC#に対応したエディタで開くことで、より見やすい環境を構築できます。
また、コードを表示しているウィンドウの コンボボックス では、通常 「C#」 が選択されていますが、これを 「IL」 に変更すると ILコード を確認できます。 基本的には C# のみで十分ですが、ILコードを読むことで、より詳細な挙動を理解できるため、覚えておいて損はありません。
検索機能を使いたい場合は、ILSpyの 中央上部にある虫眼鏡アイコンをクリックし、検索したいクラス名やメソッド名を入力してください。
メソッドをクリックすると、その中身が表示されます。
さらに、右クリック → 「Decompile to new tab」を選択すると、新しいタブでメソッドの内容を表示できます。
また、右クリック → 「Analyze」 機能を使うと、主に以下の情報を調べられます。
- Uses(使用しているメソッド)
- Used by(使用されているメソッド)
- オーバーライドしているメソッド / オーバーライド元のメソッド
ILSpyには他にもさまざまな機能がありますが、基本的な使い方は以上です。
詳しく知りたい場合は、日本語の解説記事が多数あるので、検索して参考にしてください。
dotPeekのインストール方法と使い方
インストール方法
- dotPeek公式サイト にアクセスし、「dotPeekの取得」 をクリックしてインストーラーをダウンロードしてください。
- ダウンロードしたインストーラーを起動し、画面の指示に従ってインストールを進めます。
- dotPeekを起動して正常にインストールできたか確認しましょう。
基本的な使い方
左上の 「File」→「Open」 から、以下のパスにある Elin.dll を選択して開いてください。(※Elin.exe ではありません)
\Steam\steamapps\common\Elin\Elin_Data\Managed\Elin.dll
左側の 「Assembly Explorer」 に Elin.dll が表示されるので、ツリーを展開します。
「References」 の下に 「<Root Namespace>」 という項目があり、その中に大量のクラスが含まれています。 これらが Elinのソースコード です。
dotPeek 上でそのままソースコードを閲覧できますが、Elin.dll を右クリックして 「Export to Project」 を選択すると、プロジェクトファイルとして保存できます。 保存したファイルを C# 対応のエディタで開くことで、より見やすい環境を構築できます。
ファイル内の適当な場所で右クリック → 「IL Code」 を選択すると、IL Viewer が開き、ILコードを確認できます。 基本的にはC#で十分ですが、ILコードを読むことで、より詳細な挙動を理解できます。
左上の「Navigate」→「Search Everywhere」を選択すると、検索ウィンドウが開きます。 検索したいクラス名やメソッド名を入力すると、該当するコードを素早く見つけることができます。
メソッドを右クリック → 「Go to Declaration」 を選択すると、その宣言元に移動できます。
メソッドを右クリック → 「Find Usages」または「Find Usages Advanced」を選択すると、そのメソッドや変数がどこで使用されているか調べることができます。
dotPeek には他にも多くの機能がありますが、基本的な使い方は以上です。 さらに詳しく知りたい場合は、以下の公式ドキュメントを参考にしてください。
dnSpyのインストールと使い方
インストール方法・変更した方が良い設定
- dnSpyのリリースページにアクセスし、「Assets」 内の dnSpy-net-win64.zip をダウンロードしてください。
- ダウンロードしたZIPファイルを任意のフォルダに展開しましょう。
- dnSpy.exeを起動して問題なくインストールが完了したか確認してください。
- 左上の 「View」→「Options」 を開きます。
- decompilerタブにある「Show tokens, RVAs and file offsets」のチェックを外してください(これをしないと、デコンパイルされたソースコードが見にくくなります)
基本的な使い方
左上の「File」→「Open」 を選択し、以下のパスにある Elin.dll を開いてください。(※ Elin.exe ではありません)
\Steam\steamapps\common\Elin\Elin_Data\Managed\Elin.dll
左側の 「Assembly Explorer」 に Elin.dll が表示され、ツリーを展開すると「References」の下にハイフンのみの項目があり、その中に大量のクラスが含まれています。 これらが Elinのソースコード です。
dnSpy 上でそのままソースコードを閲覧できますが、「File」→「Export to Project」 を選択すると、プロジェクトファイルとして保存できます。 保存したファイルを C# 対応のエディタで開くことで、より見やすい環境を構築できます。
左上の「Edit」→「Search Assembly」 を選択すると、検索ウィンドウが開きます。 クラス名やメソッド名を入力すると、該当するコードを素早く見つけることができます。
ファイルの中身を表示している欄の名前の上にある コンボボックス では、通常 C# が選択されています。 これを IL に変更すると、ILコード を確認できます。 基本的には C# で十分ですが、ILコードを読むことで、より詳細な挙動を理解できます。
メソッドをクリックすると、その中身が表示されます。 メソッドを右クリック → 「Open in New Tab」を選択すると、新しいタブでメソッドの中身を確認できます。
メソッド右クリック → 「Analyze」を選択すると、以下のような情報を調べることができます。
- 「Used by」(使用されたメソッド)
- 「Uses」(使用しているメソッド)
- オーバーライドしているメソッド / オーバーライド元のメソッド
dnSpy には他にも多くの機能がありますが、基本的な使い方は以上です。 解析を進めるうえで便利な機能が多いので、色々試してみてください。
最後に
Elin Modding Wikiを使う方法とデコンパイラを使う方法どちらも一長一短があるため普段はデコンパイラで復元したソースコードを見て、PCが手元にないときはElin Modding Wikiで見るなど上手く使い分けして良い解析ライフを!
このページが解析の一歩を踏み出す一助になればと思います。