使用ilasm 和 ildasm編譯和反編譯工具對DLL檔案修改

孔小爽發表於2024-03-07

目錄

  • 前言
  • 一、使用 ildasm 反編譯 dll 檔案
  • 二、使用 ilasm 將il檔案編譯成 dll 或 exe 檔案

    前言
    文字講述怎麼透過 ildasm 工具將 dll 檔案進行反編譯為 il 檔案,修改 il 檔案後再如何透過 ilasm 工具將 il 檔案反編譯成 dll 或 exe 檔案。

    ildasm工具:用於將dll檔案反編譯成可讀的 il 檔案(il是.NET框架中中間語言的縮寫)

    ilasm工具:用於將il檔案編譯成可執行的dll或exe檔案

    首先你安裝了 Visual Studio 開發工具它會自帶這兩個工具,不安裝的話可能會找不到,這兩個工具和.NET框架開發語言的編譯和反編譯有關。

    一、使用 ildasm 反編譯 dll 檔案

    1.雙擊ildasm.exe執行ildasm工具。

    ildasm 工具位置:

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe

    2.把要反編譯的 dll 檔案開啟或拖入執行的 ildasm 裡

    點選節點可以看到所有的類和方法

    3.如果 il 檔案拖到 ildasm 裡提示 “受保護的模組 - - 無法進行反編譯”

    簡單來說就是你的 il 檔案裡有 SuppressIldasmAttribute 相關程式碼,ildasm 檢測到了這個程式碼就不反編譯了。

    解決辦法:先把 ildasm.exe 備份一下,然後使用 WinHex 把 ildasm.exe裡的 SuppressIldasmAttribute 去除。

    操作步驟:

    (1)下載WinHex WinHex (連結:https://pan.baidu.com/s/17LYCOuPJaxo_70q4fua4eQ 提取碼:ej5b)

    (2) 把C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\下的 ildasm.exe 拖進 WinHex 裡,搜尋SuppressIldasmAttribute 字串,然後把 SuppressIldasmAttribute 隨便改成其他的字串,比如aaa啥的,下圖改成了TianFangIldasmAttribute 。

    (3)儲存下,然後再把 il 檔案拖到 ildasm 裡就不會提示“受保護的模組 - - 無法進行反編譯”了。

    4.把要反編譯的 dll 檔案轉儲為il檔案
    點選檔案選擇轉儲,點選確定,選擇轉換後位置和輸入轉換後的檔名(最好和dll檔名保持一致)。

    儲存後就得到了一個反編譯後的 il 檔案格式的檔案,你可以用常見的文字編輯器(記事本)開啟並進行編輯和修改。

    二、使用 ilasm 將il檔案編譯成 dll 或 exe 檔案

    透過上面的步驟得到了反編譯的 il 檔案,將修改好了 il 檔案,可以透過使用 ilasm 工具將 il 檔案編譯成 dll或 exex 檔案。
    介紹下 ilasm 工具位置:
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe

    1.透過cmd 命令列進入il 檔案所在目錄,然後在cmd中輸入類似如下命令轉換為dll檔案:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe SDKDemo.il /output=SDKDemo.dll /dll

    備註:該命令呼叫 ilasm.exe 程式把當前目錄的 SDKDemo.il 檔案編譯成SDKDemo.dll並輸出到當前目錄,也可以改成需要的檔名和輸出檔名。最終將得到了編譯好後的 dll 檔案。

相關文章