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

  • 19
    いいね
  • 0
    コメント

何これ?

午前中に、Twitter見てたらneuecc先生が
こんなツイートをしていて、何これ?と思いつつ、仕事戻ってきていじってみたら、まぁ凄すぎて草しか生えなかったので、拙速は巧遅に勝る1の精神でとにかく書いてみた。
ということで、最後までお付き合い頂ければ幸い。

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

  1. dnSpy単体でデバッグ可能
  2. dnSpy単体で有りモノのアセンブリを編集可能
  3. ILレベルでステップデバッグ可能

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

入手と配置

ここから入手可能です。

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

落としてきたら、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. 編集回数見て頂ければ、推して知るべきかと。。。