程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 使用.NET JustDecompile來反編譯你的程序代碼,justdecompile

使用.NET JustDecompile來反編譯你的程序代碼,justdecompile

編輯:C#入門知識

使用.NET JustDecompile來反編譯你的程序代碼,justdecompile


    • 前言

        在項目的進行中有時會碰到需要去了解由第三方所開發的程序代碼或者因為年久已經遺失原始碼的程序,由於因為是別人寫的所以我們並沒有原始碼可以直接閱讀,碰到這種情況我們就需要去反編譯這些程序及 DLL 檔案。

        首先大概介紹一下 DLL 是什麼,DLL 全名是 Dynamic Linking Library (動態鏈接庫),當你使用 .NET 開發應用程序時,使用的是網站項目或類別庫時,當項目建置完成後即會在項目底下的 Bin 數據夾中產生將你所撰寫項目中所有的 Class 檔案編譯成 DLL 檔案,而如果開發的是共享工具類別庫,就能夠將此 DLL 檔案提供給多個應用程序與網站參考使用。

        但 DLL 檔案是編譯過後的檔案,一般情況下是無法得知內部撰寫的程序代碼,所以在此就必須要使用反編譯的工具來協助去窺探 DLL 內的原始碼,在此要注意一點,DLL 檔案是可以被反編譯的,所以不要以為將程序寫成 DLL 檔案後別人就無法可以得知內容,但如果真的要隱藏 DLL 的內容,可以透過混淆 DLL 的方式來將 DLL 檔案內的程序代碼搞得亂七八糟,增加被反編譯後閱讀的困難度。

      建立一個類別庫

        在反編譯 DLL 之前我們先建立一個類別庫來供之後反編譯使用,開啟 VS 建立一個類別庫項目,如下

       

      01.namespace Tools 02.{ 03.public class SalaryHelper 04.{ 05.public decimal GetMySalary() 06.{ 07.return 22000; 08.} 09.} 10.}

      最後在建立一個 ConsoleApplication 將 Tools 類別庫加入參考,並且呼叫 GetMySalary() 方法取得薪資,如下

       

      view sourceprint? 01.namespace ConsoleApp 02.{ 03.class Program 04.{ 05.static void Main(string[] args) 06.{ 07.Tools.SalaryHelper helper = new Tools.SalaryHelper(); 08.Console.WriteLine( 09.string.Format("My Salary is {0}", helper.GetMySalary().ToString())); 10.Console.Read(); 11.} 12.} 13.}

      執行結果如下
       

      \
       

      使用 IL 反組譯工具

        在安裝 Visual Studio 時通常會一並安裝 Windows SDK Tools,在 Windows SDK Tools 中有一個 IL 反組譯工具可以將 DLL 檔案反編譯成中間語言,如下

       

      \

      \
       

        透過 IL反組譯工具 將 DLL 反編譯成中間語言後就能夠與原始碼進行對應,不過此中間語言實在非常不親切,所以我們將改使用其它的工具來進行反編譯動作。

        用來反編譯的工具中比較常聽到的就是 Redgate .NET Reflector 與 Telerik .NET Decompiler 此兩款工具,.NET Reflector 此工具是需要收費的工具,但是功能還蠻強大的,如果有經常頻繁深入的使用時建議可以購買此款工具,而 .NET Decompiler 則是免費的反編譯工具,功能雖沒 .NET Reflector 強大,但是是免費的先夠用就好啦,以下就用此工具來進行示范。

      使用 Telerik .NET Decompiler 工具反編譯程序代碼

        首先進入下載網址點選 Free Download 下載安裝檔案

       

      \
        下載完成後就可以進行安裝,下一步下一步....的點到完成
        \
        安裝完成後到 「開始」→「所有程序」→「Telerik」找到 Telerik JustDecompile 程序執行,如下
        \
        開啟 JustDecompile 程序後,點選上方工具列的 「Open...」→「File(s)...」尋找到我們建立的 Tools DLL 檔案開啟
        \
        開啟後展開的樹狀目錄如下,並且在 Tools 命名空間中找到我們撰寫的 SalaryHelper Class
        \
       

      選擇到 SalaryHelper 後,右邊的分隔窗口就會顯示該類別反編譯後的程序代碼,如下

      反編譯的程序代碼

      \
        原始的程序代碼
        \
        透過 .NET Decompiler 工具將 DLL 檔案反編譯後,是不是發現兩著的相似度很高且非常親切呢 :P,另外此工具也能夠將反編譯的程序代碼轉換為其它語言的代碼,在上方的工具列上可以看到一個 C# 的下拉選單,點擊後可選擇 C#、VB、IL 語言
        \
        若你是撰寫 VB 語言的,可以將 C# 改成 Visual Basic ,修改後反編譯的代碼就會變成 Visual Basic 語言的程序代碼,是不是很方便呢。
        \
        使用此工具還有還有還有一個很重要的功用是可以去看 .NET Framework 實作的類別庫!如果是在 Open 的時候選擇的是 Load  Framework 就可以選擇已安裝的 .NET Framework 開啟來閱讀,如下
        \
        如此就能夠看到 .NET Framework 類別庫中底層去實作功能的做法,以上就是一個簡單使用的方法,供各位有需要的人作為參考啦。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved