.NET アセンブリのデコンパイルやデバッグ、そしてソースの編集も可能なオープンソースのツール dnSpy を紹介します。
dnSpy のダウンロード方法
dnSpy は、フリーでダウンロードすることが可能です。
1. dnSpy の GitHub のページに移動します。
2. 「Binaries」の「Latest release」をクリックします。
3. 最新のビルドをクリックします。
4. ダウンロードサイトより dnSpy をダウンロードします。
dnSpy の特徴
.NET アセンブリのデコンパイル
1. ダウンロードした Zip を展開した中にある dnSpy.exe (64 bit)、もしくは、dnSpy-x86.exe (32 bit) を起動します。
2. .NET アセンブリを「Assembly Explorer」のウィンドウにドラッグアンドドロップします。
3. デコンパイルされます。
.NET アセンブリのデバッグ
上記アプリの実行結果が 1 となるアプリを用いて、ソースデバッグをしてみます。デコンパイルが利用できるので、実際のソースコードは必要ありません。
1. 64bit アプリをデバッグする際は dnSpy.exe を、32bit アプリをデバッグする際は dnSpy-x86.exe を起動します。
2. 「Debug」→「Debug an Assembly」をクリックします。
3. デバッグ対象のアセンブリを「Assembly」に指定します。
4. エントリーポイントでブレークします。
5. 「Debug」→「Step Into」もしくは F11 で、Step Into を実行できます。
6. 「Locals」にはローカル変数が表示されます。
7. ローカル変数を右クリックし「Edit Value」をすると、ローカル変数の変更も可能です。
ローカル変数を 1 から 5 に変更してみました。
8. ソースの行をクリックすることで、ブレークポイントを張ることも可能です。
9. 「Debug」→「Continue」か F5 を押し、プログラムを再開します。
10. 変更した値が表示され、ローカル変数の変更がされたことが確認できます。
.NET アセンブリのソースの編集
.NET アセンブリのソースの編集も可能です。デコンパイルが利用できるので、実際のソースコードは必要ありません。
1. dnSpy.exe (64 bit)、もしくは、dnSpy-x86.exe (32 bit) を起動します。
2. ソースを編集したいアセンブリを開き、デコンパイルされたソースを右クリックし「Edit C# Code」をクリックします。
3. ソースを編集できます。IntelliSense も有効になっています。
4. 編集が終わったら「Compile」をします。
5. 「File」→「Save Module」をクリックし、保存します。
6. 保存したモジュールを実行すると、確かにコードの修正が反映されていることがわかります。