ildasm、ilasm修改、反編譯 已經編譯的 dll檔案(c#)

quxxx2009發表於2016-03-20

在開發中遇到這樣一個場景,需要修改一個dll檔案(.NET程式集)中某些地方的型別名稱,但沒有原始碼,只能修改IL程式碼。

操作步驟如下:

1. 執行ildasm

ildasm是由微軟提供的.NET程式反編譯工具,位於“C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\”。

2. 用ildasm開啟要修改的程式集,如下圖:

3. 通過ildasm儲存為IL檔案

選擇選單File>Dump,選擇UTF-8編碼,如下圖:

4. 用文字編輯器開啟第3步中得到的.il檔案,如下圖:

5. 修改.il檔案中的程式碼並儲存

6. 用ilasm(MSIL彙編程式)將.il檔案編譯為.dll檔案

ilasm位於相應的.NET Framework目錄中,比如:C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe

新建批處理bat:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe 編譯.il /output=輸出.dll /dll

好久以前遇到過一個專案,其中呼叫一個封裝好了的dll,混淆加密加殼還打亂命名了,反編譯了出來也是看起來頭大,直接IL修改重新生成dll解決了問題。

   最近又需要改一個這樣的dll,記錄下來步驟

   首先把dll單獨複製出來,檢視dll執行庫

   

然後匯出.il檔案

.............................................................

.............................................................

以下熟悉IL的可以對這個il檔案作隨意的修改

............................................................

修改完畢,儲存

 

開啟到

C:\WINDOWS\Microsoft.NET\Framework

確定了資料夾

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

 

win+r   cmd執行

生成剛剛修改完的IL,如果有.res資原始檔   也需要一同輸入

 

ilasm 原始檔.il 原始檔.res /output=目標檔案.dll /dll

相關文章