【unity进阶】反编译C#的dll文件并修改,再重新生成dll

大家在实际工作中,可能会遇到需要直接修改生成的*.dll的情况,现在给大家一个方案。
参考自:http://blog.csdn.net/sbangm/article/details/7817588
1、把dll文件导入到ildasm工具中,ildasm是由MicroSoft提供的.net程序反编译工具,位于“C:\Program Files\微软 SDKs\Windows\v6.0A\bin”

2、在ildasm中File->dump,把dll文件转储为.il文件存到某个指定文件夹里,得到.il和.res两个文件,有时也会有.resource文件

3、打开得到的*.il文件,找到对应的方法,进行修改(如果修改的代码太多,那则需要先学习一下“C#反编译之IL语法”),具体情况具体分析,修改之后保存。


【霸俊流年比对法】:由于il语法看起来很是蛋疼,建议大家同步编译一个新的dll,比对修改


4、打开DOS命令,进入到*.il的文件夹,然后输入命令:c:\windows\microsoft.NET\framework\v2.0.50727\ilasm.exe /dll/resource=a.res a.il(注意a.res和a.il两文件夹位置不可变),回车,就在对应目录下生成新的dll文件,如果不放心,可以用Refletor反编译工具重新反编译新的dll文件,检查代码。

原作整体没太大问题,但是重新生成dll的时候使用ildasm结果导致半天都没发现错误,特纠正为ilasm,以免后续有同仁被坑。

······················································
附用法
利用FrameworkSDK\Bin\目录下的ilasm和ildasm(1)ilasm示例:下面的命令对 MSIL 文件 myTestFile.il 进行汇编并产生可实行文件 myTestFile.exe。ilasm myTestFile下面的命令对 MSIL 文件 myTestFile.il 进行汇编并产生 .dll 文件 myTestFile.dll。ilasm myTestFile /dll 下面的命令对 MSIL 文件 myTestFile.il 进行汇编并产生 .dll 文件 myNewTestFile.dll。ilasm myTestFile /dll /output:myNewTestFile.dll(2)ildasm示例下面的命令使 PE 文件 MyHello.exe 的元数据和反汇编代码显示在 Ildasm.exe 的默认 GUI 中。ildasm myHello.exe下面的命令对 MyFile.exe 文件进行反汇编,并将结果 MSIL 汇编程程序文本存储在 MyFile.il 文件中。

ildasm MyFile.exe /output:MyFile.il下面的命令对 MyFile.exe 文件进行反汇编,并将结果 MSIL 汇编程序文本显示到控制台窗口中。

ildasm MyFile.exe /text如果文件 MyApp.exe 包含嵌入的托管和非托管资源,则下面的命令将产生以下 4 个文件:
MyApp.il、MyApp.res、Icons.resources 和 Message.resources:

ildasm MyApp.exe /output:MyApp.il下面的命令对 MyFile.exe 的 MyClass 类中的 MyMethod 方法进行反汇编,并将输出显示到控制台窗口中。

ildasm /item:MyClass::MyMethod MyFile.exe /text在上面的示例中,可能有几个具有不同签名的 MyMethod 方法。下面的命令对返回类型为 void 且带有参数 int32 和 System.string 的 MyMethod 方法进行反汇编。

ildasm /item:"MyClass::MyMethod(void(int32,class System.String))" MyFile.exe /text

ildasm反编译工具 ildasm下载.rar (110.87 kb)
ildasm反编译工具 ildasm 2.0 下载rar (128.85 kb)

推荐阅读更多精彩内容