[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
229
243

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-17

#何これ?

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

229
243
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
229
243

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?