Posted at

.NetデコンパイルツールdotPeekを試してみる


概要

JetBrains社の.Net言語デコンパイルツール dotPeek を試してみたメモです。


環境

Windows10

VisualStudio2017

JetBrains dotPeek 2019.1.2


参考

https://pleiades.io/help/decompiler/dotPeek_Introduction.html


インストール


ダウンロード&インストール

JetBrains社のサイトからダウンロードします。

https://www.jetbrains.com/decompiler/

インストーラーexeファイルを起動します。

とりあえず dotPeekをInstallにします。

Install00.png

画面下部のライセンス同意にチェックを入れて[Next]をクリック、インストールが始まります。

Install01.png

完了です、特に問題になることはありませんでした。


起動

dotPeekを起動してみます。


起動画面

起動直後は以下の様になります。

dotPeek_Startup.png

exeやdllをドラッグ&ドロップすると以下のような画面になります。

表示されているソースはデコンパイルされたものです。

dotPeek_Decompile.png

コメントもついているとは思いませんでした。

表示はC#のみのようですが、元ソースがVBとかの場合はどうなるのかは試していません。


操作メモ

いくつか操作を試したメモです。


File Structure

[windows] -> [File Structure]

で現在開いているファイルの変数リストが見られます。

filestructure.png


プロパティ

右クリック -> [Properties] でアセンブリ情報が見られます。

property.png


Find Usages

Assembly Explorer のツリーから右クリック -> [Find Usages]を選択すると、使用されている箇所が表示されます。

findusages.png


IL Viewer

[windows] -> [IL Viewer] で中間言語を見ることができます。

ILViewer.png


Show Compiler-generated Code

これを有効にすると、コンパイラが生成したコードが見られるようです。


元ソース

namespace ConsoleApp1

{
class Program
{
// ラムダ式
static public Func<int, int> func = x => x * 10;

static void Main(string[] args)
{

Console.WriteLine("Result : {0}", func(5));

}
}
}


generatedcode.png

<.cctor>b__3_0(int x):int というのが元ソースのラムダ式から生成されたコードの様です。


まとめ

ドラッグ&ドロップで手軽にデコンパイルできたので、すごいツールだと思います。

リリースノートを見ると、細かくアップデートされているようです。

デコンパイルした後の表示はC#のみのようですが、F#などの関数言語コードはどんな感じに表示されるのかが気になります。