troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

dotPeekで.NETアプリのデコンパイル

今回は無料で使える.NETのデコンパイラであるdotPeekを取り上げます。
dotPeekの作成元によるとdotPeekの他のデコンパイラと比べての特徴はナビゲーションの機能の豊富さとのことです。
以下、インストール、デコンパイル方法から、ナビゲーションの機能を含む種々の機能を見ていきます。
なお、2012/5/7現在ベータ版です。(2012/4/19にベータ版がリリースされています)

2012/5/11 追記:本日 dotPeekの1.0がリリースされました。大き目な機能追加は、ソースのダウンロードがメニューバーでの設定でできるようになり、簡単になったことです。下の”ソースのダウンロード”の部分で詳細を黄色で記載しております。

インストール
JetBrainsのサイトよりバイナリをダウンロードします。

インストールはLicense agreementに同意し、Installを押せばインストールは完了です。




デコンパイル
File->Openからアセンブリファイルを開くか、アセンブリファイルを画面上にドラッグアンドドロップをすると、左にアセンブリファイルの情報、右にC#にデコンパイルされたものを表示できます。

以下が今回のサンプルアプリのソースです。一致していることがわかります。

デコンパイル先の言語は、C#のみです。

ナビゲーションの機能
ナビゲーション機能の特徴的なものを見ていきます。
・Find Usages
選択したものがどこで使われているかを検索できます。
以下はMyWriteLine()の定義の部分で右クリックをしてFind Usagesをしたものです。

MyWriteLine()を使用しているMainの中にカーソルが移動します。

探索結果が二つ以上ある場合(2か所以上で使用されている場合)は、以下のように画面下のウィンドウに結果が表示されます。

検索結果の部分の文字列をダブルクリックすると、外套のソースの部分がデコンパイルされ開きます。
・Usages of Symbol
Find Usages同様選択したものがどこで使われているかを検索できます。
検索結果が1つの場合はFind Usagesと同様検索結果の部分に移動しますが、結果が複数ある場合はウィンドウを表示する代わりにポップアップを表示します。


・Go to Type
メニューのNavigate-> Go to Typeをクリックすると、Go To Typeが使用できます。

Go To Typeを選択すると、以下のようなウィンドウが表示され、入力したTypeを開くことができます。
たとえば、Programと入力し、サンプルアプリ(=MyAppFordotPeekTest.exe)のProgramを選択すると、Programの部分のデコンパイル部分を開くことができます。


・Go to File/ Go to Symbol/ Go to File Member
これらもメニューから選択することができ、Go to Typeと同様の動きをします。検索するものがFileなのかSymbolなのかFile Memberなのかの違いです。
- Go to File

- Go to Symbol

- Go to File Member

・Go to Declaration
選択したものの宣言部に移動することができます。
たとえばMainの中で使われている関数MyWriteLIne()に対してGo To Declarationをすると、その関数の定義部分が開きます。


・Go to Implementation/ Base Symbols/ Derived Symbols
Go to Declarationと同様の動きです。Go to Implementationは実装部分に、Base Symbolsはベースに、Derived Symbolsは継承部分に移動します。
・Type Hierarchy
メニューから選択でき、タイプの階層構造を表示できます。

その他の代表的な特徴
File Structure
メニューのWindows -> File Structureを選択すると、現在開いているファイルのメンバーの情報がわかります。

右のウィンドウにa:int、MyWriteLine(): voidといった情報があることが確認できます。

・ソースのダウンロード
デコンパイルではなく、Microsoft Reference Source Code CenterSymbolSource.orgで公開されているソースをdotPeekからダウンロードし開くことができます。
これにより、.NET作成者のコメントも読めるようになります。

5/11 追記:5/11にdotPeek 1.0がリリースされ、ソースのダウンロードがメニューバーからの設定でできるようになりました。以下、System.Data.dllのGetHashEntry()のソースのダウンロードを例にとり、方法を見ていきます。
1. メニューバーにあるドロップダウンを"PDB, External Sources, Decompiler"に設定します。


補足:それぞれのオプションの意味は以下です。
"Decomiler only":その名の通りアセンブリのデコンパイルのみを行います。
"PDB, Decompiler": 可能な限りPDBファイル(=シンボルファイル)を利用することにより、ローカルのソースコードを開きます。
"PDB, External Sources, Decompiler":可能な限り外部のソースサーバーからソースをダウンロードします。
2. ダウンロードが始まります。


3. 初回はEnd User License Agreementが表示されます。

4. ソースコードが表示されます。
コメントも表示されていることがわかります。



以下はBeta版でのソースダウンロード方法です。

System.Data.dllのGetHashEntry()のソースのダウンロードを例にとり、方法を見ていきます。
1. Open from GACをクリックからSystem.Data.dllを開きます。


2. ソースを確認したい関数をAssembly Explorerから選択します。ここではGetHashEntry(RuntimeType EnumType)を選択しました。

3. デコンパイルされたGetHashEntry()を選択し、メニューからNavigate->Navigate Toと開き、Sources from Symbol Filesを選択します。

4. ダウンロードが始まります。

5. 初回はEnd User License Agreementが表示されます。

6. ソースコードが表示されます。
コメントも表示されていることがわかります。

URL
dotPeekのダウンロード
http://www.jetbrains.com/decompiler/
・Introducing JetBrains dotPeek
http://confluence.jetbrains.net/display/NETPEEK/Introducing+JetBrains+dotPeek


  1. 2012/05/11(金) 14:51:51|
  2. ツール
  3. | トラックバック:0
  4. | コメント:0
<<Visual Studioでプロファイル(CPUサンプリング) | ホーム | Windows Azureストレージに対してVisual StudioのWebパフォーマンステストの実行>>

コメント

コメントの投稿


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

トラックバック

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

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (23)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。