iT邦幫忙

4

沒有Source Code 如何修改程式??

某些專案因為歷史久遠沒有Source Code,但有個需求需要異動裡面的程式該怎麼辦??

難道只能整個反組譯,查看程式碼翻一份做新的嗎?

不~~其實有辦法直接對於DLL進行修改

只需使用  Reflexil 搭配 ILSpy 或其他支援的反組譯軟體 

此文同步發佈在 DotBlog

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 把本次修改儲存

日後我們就可以使用新的屬性在我們程式中了!!

小結

此插件還可以新增,插入許多東西時屬非常強大,有興趣的玩家可再自行深入琢磨.


1 則留言

3
暐翰
iT邦大師 1 級 ‧ 2018-12-22 12:52:37

謝謝D大分享
我也來推薦一個0xd4d/dnSpy: .NET debugger and assembly editor
它好幾次救過我,在沒有Source Code的專案/images/emoticon/emoticon47.gif

喜歡它的特色
1.沒有Source Code專案可以Debug運行
2018-12-22.12.50.14-image.png
2.可以導出專案
2018-12-22.12.49.18-image.png
2018-12-22.12.51.00-image.png
2018-12-22.12.52.27-image.png

ant1017 iT邦新手 4 級‧ 2018-12-22 12:58:41 檢舉

推,這個我比較愛/images/emoticon/emoticon12.gif

dog830228 iT邦研究生 3 級‧ 2018-12-22 13:43:39 檢舉

感謝 暐翰大大分享
剛剛用了一下,這個軟體真好用又強大

Gary iT邦新手 2 級‧ 2018-12-22 15:26:45 檢舉

超實用的分享!/images/emoticon/emoticon34.gif

我要留言

立即登入留言