ILSpy - .NET デコンパイラ チートシート
ILSpy はオープンソースの**.NET アセンブリブラウザーおよびデコンパイラー**。コンパイルプロセスをリバース、Microsoft Intermediate Language(MSIL/CIL)を読める高レベルの C#(および他の言語)に変換します。マルウェア分類からソースなしのサードパーティライブラリのデバッグまで、.NET バイナリを検査、分析、リバースエンジニアリングするための標準の無料ツールです。Windows GUI、クロスプラットフォーム Avalonia アプリ、VS Code 拡張機能、ilspycmd CLI として実行されます。
インストール
| バリアント | 方法 |
|---|
| Windows GUI | GitHub Releases からインストーラー/zip をダウンロード |
| クロスプラットフォーム GUI | AvaloniaILSpy ビルド(Linux/macOS) |
CLI(ilspycmd) | dotnet tool install --global ilspycmd |
| VS Code | 「ILSpy .NET Decompiler」拡張機能をインストール |
| CLI を確認 | ilspycmd --version |
GUI エッセンシャル
| アクション | 方法 |
|---|
| アセンブリを開く | File → Open、または .dll/.exe をドラッグ |
| 依存関係を読み込み | ILSpy は参照されたアセンブリを自動的に解決 |
| ナビゲート | ツリーを展開:アセンブリ → 名前空間 → 型 → メンバー |
| メンバーをデコンパイル | クリック;C# がメインペインに表示 |
| 使用方法を分析 | 右クリック → Analyze(誰がこれを呼び出し/使用するか) |
| 検索 | Ctrl+F / 検索ボックスで型とメンバーを検索 |
| 言語バージョンを変更 | ツールバードロップダウン(C# 1.0 … 最新) |
| デコンパイルされたプロジェクトを保存 | File → Save Code(完全な .csproj をエクスポート) |
分析(相互参照)
| 右クリック → Analyze が表示 |
|---|
| Instantiated By |
| Used By |
| Assigned By / Read By(フィールド) |
| Overridden By / Overrides |
| Exposed By |
これは RE ワークフローの中核:疑わしいメソッドを選び、誰がそれを呼び出し、何に触れるかをトレース。
ilspycmd(コマンドライン)
| コマンド | 説明 |
|---|
ilspycmd Assembly.dll | アセンブリ全体をデコンパイルして標準出力に |
ilspycmd -o out/ Assembly.dll | ディレクトリにデコンパイル |
ilspycmd -p -o proj/ Assembly.dll | コンパイル可能な .csproj プロジェクトをエクスポート |
ilspycmd -t Namespace.Type Assembly.dll | 単一の型をデコンパイル |
ilspycmd -il Assembly.dll | C# の代わりに raw IL を表示 |
ilspycmd -lv CSharp10_0 Assembly.dll | C# 言語バージョンを設定 |
ilspycmd --nested-directories -p -o out/ A.dll | 名前空間をフォルダーとしてミラー |
ilspycmd -r LIBDIR Assembly.dll | アセンブリ参照検索パスを追加 |
メタデータ & リソースを検査
| ターゲット | 方法 |
|---|
| 埋め込みリソース | Tree → Resources ノード;Save で抽出 |
| メタデータテーブル | View → 「Metadata」(raw テーブル、トークン) |
| 文字列/IL | 言語ドロップダウンを IL に切り替え |
| PInvoke/ネイティブ | メソッドシグネチャに表示 |
一般的なワークフロー
# 疑わしい .NET サンプルを分類:全ソースダンプを grep
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/
# 紛失したソースの DLL から構築可能なプロジェクトを復旧
ilspycmd -p -o recovered/ MyLib.dll
# C# デコンパイルが難読化されている場合、raw IL を見て
ilspycmd -il obfuscated.dll | less
強力に難読化されたアセンブリの場合、ILSpy を難読化除去ツール(例:de4dot)とペアリングしてから、クリーンなバイナリをデコンパイル。
ILSpy vs その他の .NET ツール
| ツール | タイプ | 注釈 |
|---|
| ILSpy | デコンパイラー + ブラウザー | 無料、オープンソース、CLI + GUI |
| dnSpy / dnSpyEx | デコンパイラー + デバッガー | アセンブリを編集 & デバッグ |
| dotPeek | デコンパイラー | 無料(JetBrains)、Windows |
| ILDASM | ディスアセンブラー | IL のみ、.NET SDK に付属 |
リソース