30
17

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 3 years have passed since last update.

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

Last updated at Posted at 2019-06-29

概要

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

更新履歴

日付 内容
2021/04/01 デコンパイル結果についての記述を修正。

環境

Windows10
VisualStudio2017
JetBrains dotPeek 2019.1.2

参考

インストール

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

JetBrains社のサイトからダウンロードします。
https://www.jetbrains.com/decompiler/

インストーラーexeファイルを起動します。
とりあえず dotPeekをInstallにします。

Install00.png

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

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

起動

dotPeekを起動してみます。

起動画面

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

dotPeek_Startup.png

exeやdllをドラッグ&ドロップすると以下のような画面になります。
pdb が使用可能な場合はデコンパイル結果ではなくソースファイルが表示されます。

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#などの関数言語コードはどんな感じに表示されるのかが気になります。

30
17
0

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
30
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?