家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

.NETデコンパイラ「dnSpy」

dnSpyとは

dnSpyとは、.NETアプリケーションを「解析・デバッグ・編集」できるツールで、アセンブリ(.exeや.dll)からソースコードの編集が可能です。

 

 

入手~実行まで

以下のリンクより取得可能です。

github.com

 

Releasesよりzipファイルをダウンロードします。

zipダウンロード

 

 

zipファイルを展開します。

zipファイルの展開

 

展開されたファイル内のexe実行することでdnSpyが起動します。

起動画面

 

使用方法等

メニューバーの「File」-「Open」から、解析対象となるファイルを選択します。
選択すると画面の左側にツリーが表示されます。

dllを読み込んだ例

画面の見方

画面左のツリーは「Assembly Explorer」という名称で、dnSpyで読み込んだアセンブリの構造がツリー形式で表示されます。

ファイル解析の例

PE(Portable Executable)
Windowsの実行ファイル(.exeや.dll)のフォーマットのことです。
PEノードを開くと、ファイルの構造(ヘッダー情報やセクション)をバイナリレベルで確認できます。

 

Type References
外部ライブラリのクラスを使用している場合、その型がここにリストアップされます。

 

ルートノード
読み込んだアセンブリファイルの名前が表示されている部分です。
上記の例では「CaspCrypt.dll」の部分にあたります。

 

Namespace(名前空間)  
アセンブリ内のコードが分類されてるフォルダのようなものです。
「{}」のマークがついている部分にあたります。

.NETのNamespaceは、クラス等を管理する仕組みです。
SystemやSyste.IOのように、usingで利用することが可能です。

クラスの表示例

クラス  
名前空間の中に含まれるものです。
上記の例ではCryptoクラスが選択されていて、右側にソースコードが表示されています。
また、クラスの中には関数(メソッド)や変数(フィールド)が含まれています。

 

デバッグ機能

dnSpy上で開いたアセンブリはデバッグすることが可能です。
実行時に引数やブレークポイントの設定が可能です。

デバッグ実行の画面

BrakePoint設定のイメージ