某些專案因為歷史久遠沒有Source Code,但有個需求需要異動裡面的程式該怎麼辦??
難道只能整個反組譯,查看程式碼翻一份做新的嗎?
不~~其實有辦法直接對於DLL進行修改
只需使用 Reflexil 搭配 ILSpy 或其他支援的反組譯軟體
Reflexil 是一個組譯編輯器插件目前支援 Reflector, ILSpy 和 Telerik's JustDecompile.
下載連結
Reflexil Release 2.2 搭配 ILSpy version 3.2
下載 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 並不支援
下載完後就把全部的DLL放在同一個資料夾下,並開啟 ILSpy.exe
按下上方的齒輪UI 就可獲得下方藍色的Reflexil 修改框框.
目前組件 有個ClassA 類別,裡面有一個prop1屬性 型態是string, 我們希望在這新增另一個屬性
使用滑鼠右鍵點擊類別ClassA
,我們可以看到很多方式可以注入新的程式碼
在這我們選擇inject property
.
我們需要修改的是
選擇完後按下OK,我們就會發現prop2
新屬性會出現在ClassA
中.
新增完後不代表已經將修改儲存!!
我們需要點選組件,之後再按下Save AS
把本次修改儲存
日後我們就可以使用新的屬性在我們程式中了!!
此插件還可以新增,插入許多東西時屬非常強大,有興趣的玩家可再自行深入琢磨.
謝謝D大分享
我也來推薦一個0xd4d/dnSpy: .NET debugger and assembly editor
它好幾次救過我,在沒有Source Code的專案
喜歡它的特色
1.沒有Source Code專案可以Debug運行
2.可以導出專案
推,這個我比較愛
感謝 暐翰大大分享
剛剛用了一下,這個軟體真好用又強大
超實用的分享!
感謝推薦,dnSpy真的簡單又強大,剛剛幫我解決了一個大問題,真心推薦他