天天看點

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

 本文為原創文章、源代碼為原創代碼,如轉載/複制,請在網頁/代碼處明顯位置标明原文名稱、作者及網址,謝謝!

本文使用的工具下載下傳位址為:

或 dnSpy官方下載下傳位址:

軟體界面如下:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

該軟體分别64位版本及32位版本,分别為dnSpy.exe 及 dnSpy-x86.exe,調試時請注意調試所對應軟體版本。

現在進入話題:

一、首先編寫一個Hello World的控制台運作程式,如下圖所示:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

代碼如下:

二、編譯并運作,如下圖所示:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

在這裡程式内部的str變量為“Hello World!”,現在,需要使用dnSpy工具,将内部str的變量改變并線上調試。

三、使用dnSpy工具對程式進行反編譯:

 ①使用dnSpy工具對剛才生成的ChangeString.exe進行反編譯,如下圖所示:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

②在Main函數内右鍵點選菜單,在彈出的上下文菜單中選擇“編輯方法(C#)”,如下圖所示:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

③将str變量的内容改為“Just For Test”,并點選“編譯”按鈕,如下圖所示:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

④點選“全部儲存”按鈕,在彈出的界面保持預設值并點選“确定”按鈕,如下圖所示:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

⑤儲存完成後,點選“啟動”按鈕,在彈出的界面保持預設值并點選“OK”按鈕,接着自動啟動應用程式,如下圖所示:

[C#]使用dnSpy對目标程式(EXE或DLL)進行反編譯修改并編譯運作

程式成功地運作!

注意:

編譯時請注意以下事項,否則将不能進行編譯:

①還有其他DLL子產品的,必須把它包含進來;

②如有其他反編譯後有不能識别的字元,請手工修改OK之後再進行編譯。

另外,這個程式不僅對EXE有效,同樣對DLL有效,請自行試驗,謝謝!