9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

.NETのexe/dllとMSILを相互に変換する

exe/dll → msil

ildasm.exeを使います。格納位置は以下の様な場所です。お察しの通りVisualStudioなどをインストールすると一緒に入ってくるようです。簡易なILSpyのようなGUIもついています。クラス名などの確認だけなら普通に使えます。


C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ildasm.exe

構文

ildasm [options] [PEfilename] [options]

よく使うオプション

名前 意味
/out=filename.il GUIで表示せずに、ファイルへ出力する
/nobar 変換中のプログレスバーを非表示
/utf8 ANSIではなく、UTF8で出力する

例によってUnityのDLLをilに変換します。
> ildasm /out=Assembly-CSharp.il Assembly-CSharp.dll

公式ドキュメント
https://msdn.microsoft.com/ja-jp/library/f7dy01k1(v=vs.110).aspx

msil → exe/dll

ilasm.exeを使います。こちらは、VSが入っていなくとも使えます。


C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe

よく使うオプション

名前 意味
/dll 標準のexeではなく、dllを出力
/output:filename ファイル名を拡張子付きで指定。標準は入力ファイルと同等
/x64 ターゲットをAMD64に設定
/pe64 標準ではitaniumの64bitに設定

> ilasm.exe /dll Assembly-CSharp.il

公式ドキュメント
https://msdn.microsoft.com/ja-jp/library/496e4ekx(v=vs.110).aspx

MSILを読みあたって、参考にしたサイト
http://www.asukaze.net/etc/cil/opcode.html

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
9
Help us understand the problem. What are the problem?