[C#]使用dnSpy對目標程序(EXE或DLL)進行反編譯修改並編譯運行


 本文爲原創文章、源代碼爲原創代碼,如轉載/複製,請在網頁/代碼處明顯位置標明原文名稱、做者及網址,謝謝!git


本文使用的工具下載地址爲:github

或 dnSpy官方下載地址:函數

軟件界面以下:工具

該軟件分別64位版本及32位版本,分別爲dnSpy.exe 及 dnSpy-x86.exe,調試時請注意調試所對應軟件版本。spa

如今進入話題:調試

1、首先編寫一個Hello World的控制檯運行程序,以下圖所示:code

代碼以下:blog

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ChangeString
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "Hello World!";
            Console.WriteLine(str);
            Console.ReadKey();
        }

    }
}

2、編譯並運行,以下圖所示:ip

在這裏程序內部的str變量爲「Hello World!」,如今,須要使用dnSpy工具,將內部str的變量改變並在線調試。get

3、使用dnSpy工具對程序進行反編譯:

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

②在Main函數內右鍵點擊菜單,在彈出的上下文菜單中選擇「編輯方法(C#)」,以下圖所示:

③將str變量的內容改成「Just For Test」,並點擊「編譯」按鈕,以下圖所示:

④點擊「所有保存」按鈕,在彈出的界面保持默認值並點擊「肯定」按鈕,以下圖所示:

⑤保存完成後,點擊「啓動」按鈕,在彈出的界面保持默認值並點擊「OK」按鈕,接着自動啓動應用程序,以下圖所示:

程序成功地運行!

 

注意:

編譯時請注意如下事項,不然將不能進行編譯:

①還有其餘DLL模塊的,必須把它包含進來;

②若有其餘反編譯後有不能識別的字符,請手工修改OK以後再進行編譯。

另外,這個程序不只對EXE有效,一樣對DLL有效,請自行試驗,謝謝!

相關文章
相關標籤/搜索