教你使用 Reflexil 反編譯.NET


簡介

反編譯的方式有很多種,其實最靠譜的還是IL反編譯。

如果不懂IL可以嘗試我這邊文章入門:http://www.wxzzz.com/278.html

不過我下面要說的不是IL這種底層的代碼反編譯,而是Reflector中的Reflexil插件進行反編

也許有人會說Reflector不就是反編譯了么,為什么還要用Reflexil這個插件? Reflector 僅僅是反編譯出源碼給你看,並不能在修改后編譯回去。所以我們需要使用Reflexil這個插件進行反編譯回去。

 

.NET 三種反編譯方式

這里順便介紹下我所知道的三種反編譯回去的方式:

  1. 直接修改IL代碼(當然,這比較難,需要熟悉IL匯編,但是也是最實用的。也許我會在以后的文章詳細闡述)
  2. 使用Reflector進行整個代碼項目的導出,然后用VS進行修改后編譯(在大型項目中,如果有很多其他的dll引用,也許會讓你寸步難行,無法使用VS編譯通過,所以大型項目直接用IL匯編反編譯關鍵代碼即可)
  3. 使用Reflexil插件進行直接反編譯(似乎這種要比第二種方法要好的多,至少很省事。其實實際使用起來也不是特別的方便,本文會進行一個稍微詳細的使用介紹)

 

Reflexil 安裝

在此之前你需要先去下載Reflector和Reflexil插件,這些你可以去百度或谷歌上面下載到。(如果你不會…那下面的文章不用看了)

下載好之后首先安裝Reflector程序,安裝完畢后在把Reflexil插件放到Reflector程序目錄下面(其實是個dll文件而已),如下圖所示

Reflexil_Install

然后打開Reflector,在工具欄依次點擊 Tools -> Add-Ins... ,如下圖所示

Reflexil_Install2

然后在彈出的界面中點擊+號選擇剛剛拷貝到Reflector中的Reflexil插件的dll文件,如下圖所示

Reflexil_Install3然后點擊Close ,此時程序的 Tools 欄目下已經有了 Reflexil 插件選項。

 

要反編譯的示例項目

本文反編譯一個Winform程序(當然,你也可以反編譯.NET 的其他 dll 文件),程序如下所示:

Reflector Winform

代碼

  1.     public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.  
  8.         private void btnTest_Click(object sender, EventArgs e)
  9.         {
  10.             MessageBox.Show("你好");
  11.         }
  12.     }

我們把這個exe程序進行反編譯吧

 

開始反編譯工作

首先在Reflector工具欄中依次點擊 Tools -> Reflexil 打開 Reflexil 的窗口,如下圖所示

Open Reflexil然后打開你要反編譯的程序集,我們編譯自己寫的Winform的exe程序作為測試吧,如下圖所示。

Reflector Winform2然后我們選中我們要反編譯的方法,在Reflexil插件中進行反編譯,如下圖所示。

Reflector Winform3可以直接在“你好”的那一欄進行點擊右鍵選擇 “Edit” 進行直接的編輯

也可以在圖中的這個選項卡( Instructions ) 中的表的任意一欄點擊右鍵選擇,如下圖所示

Reflexil Edit你可以直接Edit編輯單個文本,也可以Replace all with code... 編輯整個class的內容。

如果你選擇的是Replace all with code... 來編輯整個內容的話,你需要在編輯完成后,在界面的左下角點擊Complile 做編譯操作。

但是似乎這個插件的編輯整個class的功能有缺陷,有些代碼識別不出來。所以還是看情況使用吧,如果Replace all with code..不行,就直接選 Edit 編輯我們所選的內容即可。  我這里將“你好” 修改為 “你好,歡迎訪問我的博客,www.wxzzz.com”。如下所示

Reflexil Edit2修改完成后,就萬事俱備 只欠東風了。

最后一步操作,依次在Reflector項目中點擊右鍵 -> 選擇 Reflexil -> 選擇 Save as..

保存即可,這樣就完成了修改代碼,編譯成功。如圖

Reflexil Save然后就ok了,運行看看:

Reflector Result其實很簡單,只是我寫的可能稍微太細了點兒。

哈哈,反正看圖不看文字應該也可以直接結束這篇文章。

以下是我反編譯之后的程序下載地址,你可以作為練習再次反編譯:TestWinform.Patched


免責聲明!

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



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