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

前言:

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

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

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

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

Reflexil 是一個組譯編輯器插件目前支援 Reflector, ILSpyTelerik’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/NoSourceCode-ModifyCode/
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!


如果本文對您幫助很大,可街口支付斗內鼓勵石頭^^