XuPeiYao's Blog(舊站) /* Life Runs on Code */

使用ILSpy和Reflexil編輯IL

2019-07-05
XuPeiYao

ILSpy是個針對.NET的開源的反組譯工具,可以將EXE或DLL的IL反組譯為C#程式碼;而加上了Reflexil套件則可以進一步的去編輯EXE或DLL的內容。 本文將簡單的說明ILSpy的下載安裝、以及加入Reflexil套件,並簡單替換一個Hello World的程式輸出的文字。

安裝ILSpy

瀏覽ILSpy的GitHub Repository中的Releases頁面下載最新版本(2019/7/5為4.0.1)的壓縮檔。

Imgur

將下載的檔案解壓縮到目錄中。

安裝Reflexil

瀏覽Reflex的官網,點選Download後將被導引到該專案的GitHub Repository中的Releases頁面中,點選最新版下載AIO壓縮檔。

Imgur

將這個壓縮檔解壓縮至上一個步驟下載ILSpy解壓縮的相同目錄下。

開啟ILSpy

進入剛才解壓縮的目錄,點選ILSpy.exe即可看到以下畫面。

Imgur

反組譯一個.NET Core Console專案

這邊直接使用一個只有Hello World功能的Console專案編譯後的結果作為反組譯範例。

Imgur

ConsoleApp1.dll拖入ILSpy左方列表中。 在左方展開選擇Program類別即可在右方看到將IL轉換為C#的結果。

Imgur

使用Reflexil替換字串

本文打算把Hello World替換成中文的你好世界,首先開啟Reflexil套件,點選ILSpy工具列的齒輪按鈕。

Imgur

將左邊選項選擇至Main方法中,在右下角的Reflexil視窗中即可看到這個方法的IL。

Imgur

找到要替換的字串區域,使用滑鼠右鍵點選開啟選單,點選Edit

Imgur

在彈出視窗終將Hello World字串替換為你好世界後點選Update

Imgur Imgur

替換完成後載左方列表中點選目前編輯的DLL項目,使用滑鼠點選右鍵開啟選單,點選Save As,將原有的ConsoleApp1.dll先改為ConsoleApp1.Backup.dll(當然也可以直接覆蓋),將目前編輯的結果直接儲存原名稱。

Imgur

替換前後比較

Imgur


相關文章

文章回覆