【unity進(jìn)階】反編譯C#的dll文件并修改,再重新生成dll

我們在實(shí)際工作中,可能會遇到需要直接修改生成的*.dll的情況,現(xiàn)在給大家一個(gè)方案。
參考自:http://blog.csdn.net/sbangm/article/details/7817588
1、把dll文件導(dǎo)入到ildasm工具中,ildasm是由微軟提供的.net程序反編譯工具,位于“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin”

2、在ildasm中File->dump,把dll文件轉(zhuǎn)儲為.il文件存到某個(gè)指定文件夾里,得到.il和.res兩個(gè)文件,有時(shí)也會有.resource文件

3、打開得到的*.il文件,找到對應(yīng)的方法,進(jìn)行修改(如果修改的代碼太多,那則需要先學(xué)習(xí)一下“C#反編譯之IL語法”),具體情況具體分析,修改之后保存。


【霸俊流年比對法】:由于il語法看起來很是蛋疼,建議大家同步編譯一個(gè)新的dll,比對修改


4、打開DOS命令,進(jìn)入到*.il的文件夾,然后輸入命令:c:\windows\microsoft.NET\framework\v2.0.50727\ilasm.exe /dll/resource=a.res a.il(注意a.res和a.il兩文件夾位置不可變),回車,就在對應(yīng)目錄下生成新的dll文件,如果不放心,可以用Refletor反編譯工具重新反編譯新的dll文件,檢查代碼。

原作整體沒太大問題,但是重新生成dll的時(shí)候使用ildasm結(jié)果導(dǎo)致半天都沒發(fā)現(xiàn)錯(cuò)誤,特糾正為ilasm,以免后續(xù)有同仁被坑。

······················································
附用法
利用FrameworkSDK\Bin\目錄下的ilasm和ildasm(1)ilasm示例:下面的命令對 MSIL 文件 myTestFile.il 進(jìn)行匯編并產(chǎn)生可執(zhí)行文件 myTestFile.exe。ilasm myTestFile下面的命令對 MSIL 文件 myTestFile.il 進(jìn)行匯編并產(chǎn)生 .dll 文件 myTestFile.dll。ilasm myTestFile /dll 下面的命令對 MSIL 文件 myTestFile.il 進(jìn)行匯編并產(chǎn)生 .dll 文件 myNewTestFile.dll。ilasm myTestFile /dll /output:myNewTestFile.dll(2)ildasm示例下面的命令使 PE 文件 MyHello.exe 的元數(shù)據(jù)和反匯編代碼顯示在 Ildasm.exe 的默認(rèn) GUI 中。ildasm myHello.exe下面的命令對 MyFile.exe 文件進(jìn)行反匯編,并將結(jié)果 MSIL 匯編程程序文本存儲在 MyFile.il 文件中。

ildasm MyFile.exe /output:MyFile.il下面的命令對 MyFile.exe 文件進(jìn)行反匯編,并將結(jié)果 MSIL 匯編程序文本顯示到控制臺窗口中。

ildasm MyFile.exe /text如果文件 MyApp.exe 包含嵌入的托管和非托管資源,則下面的命令將產(chǎn)生以下 4 個(gè)文件:
MyApp.il、MyApp.res、Icons.resources 和 Message.resources:

ildasm MyApp.exe /output:MyApp.il下面的命令對 MyFile.exe 的 MyClass 類中的 MyMethod 方法進(jìn)行反匯編,并將輸出顯示到控制臺窗口中。

ildasm /item:MyClass::MyMethod MyFile.exe /text在上面的示例中,可能有幾個(gè)具有不同簽名的 MyMethod 方法。下面的命令對返回類型為 void 且?guī)в袇?shù) int32 和 System.string 的 MyMethod 方法進(jìn)行反匯編。

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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容