某些專案因為歷史久遠沒有Source Code,但有個需求需要異動裡面的程式該怎麼辦??
難道只能整個反組譯,查看程式碼翻一份做新的嗎?
不~~其實有辦法直接對於DLL進行修改
只需使用 Reflexil 搭配 ILSpy 或其他支援的反組譯軟體
Reflexil 是一個組譯編輯器插件目前支援 Reflector, ILSpy 和 Telerik’s JustDecompile.
下載連結
Reflexil Release 2.2 搭配 ILSpy version 3.2
前置動作,安裝
Reflexil 下載
下載 reflexil.for.ILSpy.2.2.bin.zip
,不用下載AIO
作者有說
ILSpy version 3.2 (ILSpy 4 is not currently compatible with Reflexil, given the use of System.Reflection.Metadata, deprecating Mono.Cecil usage)
ILSpy 4 當前版本 ILSpy.2.2 並不支援
ILSpy 3.2 下載
下載完後就把全部的DLL放在同一個資料夾下,並開啟 ILSpy.exe
按下上方的齒輪UI 就可獲得下方藍色的Reflexil 修改框框.
組件修改
需求
目前組件 有個ClassA 類別,裡面有一個prop1屬性 型態是string, 我們希望在這新增另一個屬性
使用滑鼠右鍵點擊類別ClassA
,我們可以看到很多方式可以注入新的程式碼
在這我們選擇inject property
.
我們需要修改的是
- Item Name (使用屬性的名稱)
- Property Type(使用屬性類別)
選擇完後按下OK,我們就會發現prop2
新屬性會出現在ClassA
中.
新增完後不代表已經將修改儲存!!
我們需要點選組件,之後再按下Save AS
把本次修改儲存
日後我們就可以使用新的屬性在我們程式中了!!
小結
此插件還可以新增,插入許多東西時屬非常強大,有興趣的玩家可再自行深入琢磨.
此文作者:Daniel Shih(石頭)
此文地址: https://isdaniel.github.io/modify-sourcecode/
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!