Edited at

凄すぎて大草原不可避な.NET デコンパイラdnSpyを使ってみる

More than 1 year has passed since last update.


何これ?

午前中に、Twitter見てたらneuecc先生が

というツイートをしていて、何これ?と思いつつ、仕事戻ってきていじってみた。

そしたら、まぁ凄すぎて草しか生えなかったので、拙速は巧遅に勝る1の精神でとにかく書いてみた。ということで、最後までお付き合い頂ければ幸い。

C#やら、VBやらのデコンパイラはIL Spyとかが有名ですが、その遙か上を突き抜けたようなデコンパイラ。

何が凄いって言うと


  1. dnSpy単体でデバッグ可能

  2. dnSpy単体で有りモノのアセンブリを編集可能

  3. ILレベルでステップデバッグ可能

などなど、上げればキリが無いほど素晴らしいツールになってます。


入手と配置

ここから入手可能です。

Readmeの部分にある"Binaries"から、ダウンロード可能です。(下図参照)

落としてきたら、Zipを適当な場所に展開すれば配置は完了。


実行方法

デコンパイルだけで有れば、特に問題にはならないですが、dnSpyでデバッグする場合は、32bitと64bitでアプリケーションを分ける必要があります。

32bitアセンブリの場合はdnSpy-x86.exeを、64bitアセンブリの場合はdnSpy.exeを使います。

また、AnyCpuでビルドしている場合は、ビルドオプション中の32bitの優先が入っていれば、32bit版、入っていなければ64bit版のアプリケーションを使って下さい。

実行後、

1. File

2. Open

の手順を踏んで、目標のファイルを開くか、又は対象となるファイルをドラッグ&ドロップすればOKです。


ちょっとした注意

IL Spyとは異なり、参照中のアセンブリはファイルロックされるので、コンパイルし直すなどする場合は、Assembly Explorerから対象となるアセンブリを指定後Deleteするなど、参照を解除することが必須となります。


使い方

後はほとんどVisual StudioとUIもUXも同じなので、VisualStudioをお使いになってる方は不自由なく使えるかと思います。

余りまだいじってないのですが、現時点で個人的に少しハマったところは、


メソッドの編集

編集したいメソッドを選択して、ショートカットメニューから、EditMethodを選択。編集後に必ず右下のCompileを選択して、Editorを抜ける

ぐらいでした。


まとめ

アセンブリのみ存在する状態で、デバッグ、エディットが可能な上、Visual Studioでやろうとするととんでもなく面倒なことになるILレベルのステップデバッグが可能という、素晴らしいツールでした。


雑記:IL Spyはいらない子?

最初dnSpyだけで良いかなって思ったけど、IL Spy必要なの?と言われればYesだね!

先に挙げたとおり、Fileロックかかるので、PerCompilingとの相性があんまり良くない。

なので、適宜妥当に使い分けると多分幸せになれると思います。





  1. 編集回数見て頂ければ、推して知るべきかと。。。