MSIL Disassembler(ildasm.exe) -- 将C#程序或类库反汇编处理,显示C#编译器生成的CIL代码
C:Program FilesMicrosoft SDKsWindowsv6.0ABinildasm.exe 版本号:3.5.30729.1 32位
C:Program FilesMicrosoft SDKsWindowsv6.0ABinx64ildasm.exe 版本号:3.5.30729.1 64位
C:Program Files (x86)Microsoft SDKsWindowsv7.0ABinildasm.exe 版本号:3.5.30729.1 32位
C:Program Files (x86)Microsoft SDKsWindowsv7.0ABinx64ildasm.exe 版本号:3.5.30729.1 64位
C:Program Files (x86)Microsoft SDKsWindowsv7.0ABinNETFX 4.0 Toolsildasm.exe 版本号:4.0.30319.1 32位
C:Program Files (x86)Microsoft SDKsWindowsv7.0ABinNETFX 4.0 Toolsx64ildasm.exe 版本号:4.0.30319.1 64位
C:Program Files (x86)Microsoft SDKsWindowsv8.1AinNETFX 4.5.1 Toolsildasm.exe 版本号:4.0.30319.33440 32位
C:Program Files (x86)Microsoft SDKsWindowsv8.1AinNETFX 4.5.1 Toolsx64ildasm.exe 版本号:4.0.30319.33440 64位
C:Program Files (x86)Microsoft SDKsWindowsv10.0AinNETFX 4.6 Toolsildasm.exe 版本号:4.0.30319.0 32位
C:Program Files (x86)Microsoft SDKsWindowsv10.0AinNETFX 4.6 Toolsx64ildasm.exe 版本号:4.0.30319.0 64位
C:Program Files (x86)Microsoft SDKsWindowsv10.0AinNETFX 4.6.1 Toolsildasm.exe 版本号:4.0.30319.0 32位
C:Program Files (x86)Microsoft SDKsWindowsv10.0AinNETFX 4.6.1 Toolsx64ildasm.exe 版本号:4.0.30319.0 64位
示例代码:
namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int a = 1; int b = 2; int c = a + b; } } }
命令行用法:
ildasm.exe /text d:ConsoleApplication2.exe // 将ConsoleApplication2.exe反汇编结果显示在命令行窗口上
ildasm.exe /output:ConsoleApplication2.il ConsoleApplication2.exe // 一般可以得到2个文件:ConsoleApplication2.il(反编译得到的IL代码)和ConsoleApplication2.res(资源文件)
注:mono也有对应的反汇编工具monodis,可使用如下命令进行反汇编
monodis d:ConsoleApplication2.exe // 将ConsoleApplication2.exe反汇编结果显示在命令行窗口上
ILSpy -- 将C#程序或类库反编译为C#源代码
dnSpy -- 将C#程序或类库反编译为C#源代码
github开源 https://github.com/0xd4d/dnSpy
.NET Reflector -- 将C#程序或类库反编译为C#源代码
http://www.red-gate.com/products/dotnet-development/reflector/
ILMerge -- 将多个.net程序集合并
ILMerge命令行:http://www.microsoft.com/en-us/download/details.aspx?id=17630
ILMerge-GUI版本(将下载下来的ILMergeGuiPortable.exe放到ILMerge.exe所在目录中即可):https://ilmergegui.codeplex.com/