【轉載】教你使用 Reflexil 反編譯.NET

簡介

反編譯的方式有不少種,其實最靠譜的仍是IL反編譯。 html

若是不懂IL能夠嘗試我這邊文章入門:http://www.wxzzz.com/278.html 工具

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

也許有人會說Reflector不就是反編譯了麼,爲何還要用Reflexil這個插件? Reflector 僅僅是反編譯出源碼給你看,並不能在修改後編譯回去。因此咱們須要使用Reflexil這個插件進行反編譯回去。 flex

.NET 三種反編譯方式

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

  1. 直接修改IL代碼(固然,這比較難,須要熟悉IL彙編,可是也是最實用的。也許我會在之後的文章詳細闡述)
  2. 使用Reflector進行整個代碼項目的導出,而後用VS進行修改後編譯(在大型項目中,若是有不少其餘的dll引用,也許會讓你步履維艱,沒法使用VS編譯經過,因此大型項目直接用IL彙編反編譯關鍵代碼便可)
  3. 使用Reflexil插件進行直接反編譯(彷佛這種要比第二種方法要好的多,至少很省事。其實實際使用起來也不是特別的方便,本文會進行一個稍微詳細的使用介紹)

Reflexil 安裝

在此以前你須要先去下載Reflector和Reflexil插件,這些你能夠去百度或谷歌上面下載到。(若是你不會…那下面的文章不用看了) code

下載好以後首先安裝Reflector程序,安裝完畢後在把Reflexil插件放到Reflector程序目錄下面(實際上是個dll文件而已),以下圖所示 orm

Reflexil_Install

而後打開Reflector,在工具欄依次點擊 Tools -> Add-Ins... ,以下圖所示 htm

Reflexil_Install2

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

Reflexil_Install3

而後點擊Close ,此時程序的 Tools 欄目下已經有了 Reflexil 插件選項。get

要反編譯的示例項目

本文反編譯一個Winform程序(固然,你也能夠反編譯.NET 的其餘 dll 文件),程序以下所示:

Reflector Winform

代碼

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

咱們把這個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

 

【轉自】http://www.javashuo.com/article/p-wxdsjyuf-gt.html

相關文章
相關標籤/搜索