用 dnSpy 反編譯調試 .NET 程序


dnSpy 官網下載:https://github.com/0xd4d/dnSpy/releases

運行需要 .NET Framework 4 環境:https://dotnet.microsoft.com/download/visual-studio-sdks

 

具體操作步驟如下所示:

1.添加系統環境變量,COMPLUS_ZapDisable = 1
2.如果需要調試 IIS 進程,可進入 C:\Windows\System32\inetsrv 目錄執行 appcmd list wp 查看對應的應用程序池進程 ID
3.打開 dnspy,調試 --> 附加到進程 --> 選擇相應的進程 ID --> 附加
4.調試 --> 窗口 --> 模塊 --> 搜索要調試的程序集 --> 雙擊
5.在程序集資源管理器找到要調試的類打開,打斷點即可
6.右鍵要修改的類文件 --> 編輯類/方法 --> 修改類 --> 編譯
7.文件 --> 保存模塊 --> 選擇要保存的路徑 --> 保存
8.將保存的重新編譯的程序集替換到目標路徑即可
9.執行 iisreset(若為 IIS 應用)

cmd 命令

# 設置系統環境變量
setx /M COMPLUS_ZapDisable 1

獲取 IIS 應用程序池進程 ID

附加到進程並打斷點

修改代碼,重新編譯並保存模塊

關於異常捕捉中斷

調試過程中出現的異常,dnSpy 默認不會自動中斷的,需要自行設置異常中斷條件。比如:要捕捉  NullReferenceException,那么請打開異常設置窗口(調試->窗口->異常設置)進行設置,如下圖所示:

關於反編譯修改代碼后無法保存

有時候會因為反編譯后某些字段不規范的原因無法保存,這時候可以嘗試使用 16 進制編輯保存

會直接跳轉到要光標部分位置,修改后 ctrl + s 保存即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM