當前位置:編程學習大全網 - 源碼下載 - .Net Reflector反編譯工具如何將註釋顯示出來?

.Net Reflector反編譯工具如何將註釋顯示出來?

.Net有兩個很好的工具可以反編譯.NET程序集:Salamander .Net Decomplier和Reflector.Net ,Salamander .Net Decomplier功能非常強大,可以反編譯混淆過的.NE代碼,也可以直接將程序集中的類反編譯成壹個文件,但是它是需要money的,試用版提供的功能又非常有限。相對而言呢,Reflector.net 是完全免費的,但是它只能壹個方法壹個方法的查看,不能將程序集直接反編譯成壹個文件,這樣也比較麻煩,好就好在它支持插件add-in功能。針對它的缺點,很多人開發了很好用的插件,可以將整個程序集的代碼反編譯成源文件,比如說Reflector.FileDisassembler 、Reflector.FileGenerator 都是很好用的。 另外再提供壹些Reflector的相關插件下載,enjoy!!!! 插件FileGenerator 使用方法:最開始下載了FileGenerator插件不知如何使用,後來經過摸索,還是學會使用了,所以拿來和大家分享。 FileGenerator插件的作用是:根據dll文件,把裏面的源文件導出成文件,導出來的文件除了沒有註釋,變量名也變了,其它的可謂是沒有 差別。對於壹些比較好的控件,如果不是開源的,完全可以導出成文件,然後自己加上註釋,少許修改,很好的利用起來。(不開源的dll,用起來也不放心啊) 先根據上面的地址下載FileGenerator並解壓縮,然後運行Reflector.exe,然後點擊View->Add- Ins...,彈出壹個窗口,然後點擊Add->選擇FileGenerator裏面的唯壹壹個dll文件: "FileGenerator.dll",點擊close. 然後回到Reflector窗口,Tool->Generator File(s)... 右邊就出現了插件的窗口,選中左邊的dll文件,點擊右邊的導出文件,源代碼就全部導出來了,真是爽啊! 使用.NET Reflector插件FileDisassembler還原源碼 .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!"); Assert.AreEqual("value2", ht["Key2"], "Wrong object returned!"); } 盡管上述代碼中存在壹些小的差異,但它們在功能上是完全相同的。 雖然該示例是壹種顯示實際代碼與反編譯代碼之間對比的好方法,但在我看來,它並不代表 .NET Reflector 所具有的最佳用途 — 分析 .NET 框架程序集和方法。.NET 框架提供了許多執行類似操作的不同方法。例如,如果您需要從 XML 中讀取壹組數據,則存在多種使用 XmlDocument、XPathNavigator 或 XmlReader 完成該工作的不同方法。通過使用 .NET Reflector,您可以查看 Microsoft 在編寫數據集的 ReadXml 方法時使用了什麽,或者查看他們在從配置文件讀取數據時做了哪些工作。.NET Reflector 還是壹個了解以下最佳實施策略的優秀方法:創建諸如 HttpHandlers 或配置處理程序之類的對象,因為您可以了解到 Microsoft 工作組實際上是如何在框架中生成這些對象的。 .NET Reflector 由 Lutz Roeder 編寫我能幫妳的就這麽多了,希望采納psigw1314

更多建站問題,可搜壹下“飄仙論壇”

  • 上一篇:用java開發小遊戲
  • 下一篇:同壹天生日的妳捐款是騙局嗎?
  • copyright 2024編程學習大全網