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