#何これ?
午前中に、Twitter見てたらneuecc先生が
改めてdnSpy、とんでもなく素晴らしい出来で、本物のハッカーだなぁという感じ。本物のハッカーはGUIも完璧に作れる……。 https://t.co/DoZFNTpDUg
— neuecc (@neuecc) 2017年3月16日
というツイートをしていて、何これ?と思いつつ、仕事戻ってきていじってみた。
そしたら、まぁ凄すぎて草しか生えなかったので、拙速は巧遅に勝る1の精神でとにかく書いてみた。ということで、最後までお付き合い頂ければ幸い。
C#やら、VBやらのデコンパイラはIL Spyとかが有名ですが、その遙か上を突き抜けたようなデコンパイラ。
何が凄いって言うと
- dnSpy単体でデバッグ可能
- dnSpy単体で有りモノのアセンブリを編集可能
- ILレベルでステップデバッグ可能
などなど、上げればキリが無いほど素晴らしいツールになってます。
#入手と配置
ここから入手可能です。
Readmeの部分にある"Binaries"から、ダウンロード可能です。(下図参照)
落としてきたら、Zipを適当な場所に展開すれば配置は完了。
#実行方法
デコンパイルだけで有れば、特に問題にはならないですが、dnSpyでデバッグする場合は、32bitと64bitでアプリケーションを分ける必要があります。
32bitアセンブリの場合はdnSpy-x86.exeを、64bitアセンブリの場合はdnSpy.exeを使います。
また、AnyCpuでビルドしている場合は、ビルドオプション中の32bitの優先が入っていれば、32bit版、入っていなければ64bit版のアプリケーションを使って下さい。
実行後、
- File
- 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との相性があんまり良くない。
なので、適宜妥当に使い分けると多分幸せになれると思います。
-
編集回数見て頂ければ、推して知るべきかと。。。 ↩