troushoo

.NET のデコンパイル、デバッグ、ソースの編集も可能なオープンソースのツール dnSpy

概要

.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. 保存したモジュールを実行すると、確かにコードの修正が反映されていることがわかります。



情報元
dnSpy

関連記事
共にフリーで使えるJustDecompileとReflexilで、.NETアセンブリの編集
任意のPowerShell コマンドレットのソースコードを確認


  1. 2016/10/30(日) 21:03:01|
  2. .NET
  3. | トラックバック:1
  4. | コメント:1
<<Visual Studio Enterprise 2015 で、1st チャンスの例外の発生場所、原因を調査 | ホーム | カーネルの問題でブートできない Linux のカーネルバージョンを変更する方法 : chroot>>

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
  1. 2020/06/09(火) 11:09:18 |
  2. |
  3. #
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://troushoo.blog.fc2.com/tb.php/312-11c79d54
この記事にトラックバックする(FC2ブログユーザー)

PC ゲーム Press X to Not Die 日本語化メモ

PC ゲーム Press X to Not Die 日本語化メモです。
  1. 2019/08/24(土) 21:23:42 |
  2. awgs Foundry

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (104)
ネットワーク (48)
Wireshark (45)
Visual Studio (56)
WinDbg (46)
SOS・Psscor2/Psscor4 (25)
Linux (24)
コンテナ (4)
Azure (17)
Tips (26)
AD (32)
.NET (24)
Python (9)
Java (5)
SQL (4)
事例 (1)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する