使用.NET Reflector外掛程式FileDisassembler還原源碼
來源:互聯網
上載者:User
.NET Reflector,它是一個類瀏覽器和反編譯器,可以剖析器集並向您展示它的所有秘密。.NET 架構向全世界引入了可用來分析任何基於 .NET 的代碼(無論它是單個類還是完整的程式集)的反射概念。反射還可以用來檢索有關特定程式集中包含的各種類、方法和屬性的資訊。使用 .NET Reflector,您可以瀏覽程式集的類和方法,可以分析由這些類和方法產生的 Microsoft 中繼語言 (MSIL),並且可以反編譯這些類和方法並查看 C# 或 Visual Basic ?.NET 中的等價類別和方法。
為了示範 .NET Reflector 的工作方式,我將載入和分析前面已經顯示的 NUnitExample 程式集。下圖顯示了 .NET Reflector 中載入的該程式集。
在 .NET Reflector 內部,有各種可用來進一步分析該程式集的工具。要查看構成某個方法的 MSIL,請單擊該方法並從菜單中選擇 Disassembler。
除了能夠查看 MSIL 以外,您還可以通過選擇 Tools 菜單下的 Decompiler 來查看該方法的 C# 形式。通過在 Languages 菜單下更改您的選擇,您還可以查看該方法被反編譯到 Visual Basic .NET 或 Delphi 以後的形式。以下為 .NET Reflector 產生的程式碼:
public void HashtableAddTest(){
Hashtable hashtable1;
hashtable1 = new Hashtable();
hashtable1.Add("Key1", "value1");
hashtable1.Add("Key2", "value2");
Assert.AreEqual("value1", hashtable1["Key1"], "Wrong object returned!");
Assert.AreEqual("value2", hashtable1["Key2"], "Wrong object returned!");
}
前面的代碼看起來非常像我為該方法實際編寫的代碼。以下為該程式集中的實際代碼:
public void HashtableAddTest(){
Hashtable ht = new Hashtable(); ht.Add("Key1", "value1");
ht.Add("Key2", "value2");
Assert.AreEqual("value1", ht["Key1"], "Wrong object returned!");