前言
DNSpy 是 0xd4d(https://Github.com/0xd4d)開發的 .NET 程序調試神器。
說它是神器真的毫不為過!
它能在完全沒有源碼的情況下即時調試程序,甚至還能修改程序!本文將向大家介紹如何使用dnSpy修改.NET 程序。dnSpy 的主打功能是無需源碼的調試。而本文主要說其另一項強大的功能 —— 修改程序集。
看看 dnSpy
dnSpy 長著一身 Visual Studio 一樣的外觀,調試的時候給你熟悉的感覺。我們只需要講我們需要調試或修改的程序集拖入左側的程序集列表中即可(它會自動為我們把此程序集依賴的程序集也添加進來)。我把以前我寫過的一個程序 ManipulationDemo 拖進來了。
實操修改程序集
現在我們來修改它,修改什么好呢?為了讓效果明顯一點,我決定在啟動時彈一個窗口。于是我們展開進入到 App 類中。
然后在類中右鍵“Edit class (C#)”:
在里面重寫 OnStartup 方法。發現,它竟然連智能感知提示都做了!
改完只需要點擊一下右下角的編譯,即可講修改應用到我們剛剛打開的程序集中。
保存修改的程序集
如果只是修改了可以立刻運行,那么充其量只是可以輔助調試。但是 dnSpy 是可以將程序集另存到本地的。
點擊“File”->“Save Module”:
為了以示區分,我寫了一個新的名字:
保存完之后,運行:
我們會發現,我們剛剛新增的對話框已經彈出來了。“OK”之后原來的窗口才會顯示出來。
發揮想象力的時候到了
既然有如此簡單的修改程序集的方法,那么我們可以用來做什么事兒呢?用來做什么事兒呢?做什么事兒呢?什么事兒呢?事兒呢?呢?想象力_時間_順便說一下,就算程序集被混淆了也難不倒它。