程序誕生
程序集,作為.NET時代的動态鍊接庫,蘊藏了太多的軟件秘密。為此,Visual Studio内置的ILDASM成為最初挖掘程序集的上佳工具。但自從Reflector出現後,ILDASM相形見绌。因為,Reflector能提供更多的程序集信息,而且是免費的工具。
如今,在Visual studio中編譯源代碼(無論是VB還是C#)時,編譯器都會将高級源代碼翻譯成MSIL,即“微軟中間語言”,而不是特定的機器指令。具有更多安全性、版本控制、共享能力與其它相關元數據的中間語言(IL),是包在一個或多個DLL或可執行文件中的。
基于ILDASM檢查程序集中的IL有時很有用,但它要求我們熟悉MSIL。通常,比起IL,大多數開發人員對像C#或Visual Basic這樣的高級程序設計語言更為熟悉。
下載與運行
這個軟件經常更新,可以在本詞條提供的擴展閱讀提供的鍊接中下載最新的版本。默認情況下,Reflector會打開一組公共程序集(mscorlib、System、System.Data、System.Drawing等等)。
每個打開的程序集都列在Reflector的主窗口中。單擊程序集旁邊的+圖标可以展開樹結構并展示程序集的命名空間。每個命名空間旁邊都有一個相關的+圖标,單擊這個圖标将顯示這個命名空間内的類。除此以外,還可以展開每個類,顯示類的成員:事件、字段、方法與屬性。
要想查看其它程序集(包括我們自己創建的程序集)的細節,你可以使用菜單命令“File→Open”。然後,浏覽到想要查看的程序集。隻要選擇了有效的.NET程序集,這個程序集就可以在Reflector的主窗口中與其它默認程序集共同顯示。
要想從Reflector的主窗口中删除程序集,隻需右擊程序集并選擇“Close”。提供基本的程序集是Reflector唾手可得的功能,然而,Reflector真正的威力體現在它的反彙編能力。
隻要浏覽到類級的成員,就可以通過Tools菜單中的Disassembler項(或在該項上單擊右鍵)反彙編此成員。這将打開第二個窗格,以C#、Visual Basic、Delphi或者IL顯示反彙編後的内容。
有了Reflector的反編譯功能,要研究.NET框架基類庫就容易多了。我們完全可以在沒有源代碼的情況下研究我們所創建或者正在使用的程序集相應源代碼。
不用太擔心,自己的.NET應用程序還有其它受保護措施。但是,想阻止别人查看.NET程序集的IL(繼而反編譯成C#或者Visual Basic)是不可能的,但你可以使用“混淆”技術使IL變得混亂。
目前,市場上有許多.NET混淆産品,比如:PreEmptive Solution的Dotfuscator、WiseOwl的Dmeanor以及Remotesoft的.NET Obfuscator等。
其他功能
除了作為對象浏覽器與反彙編器之外,Reflector還可以顯示類與其成員的調用與被調用圖、提供單鍵訪問Google或MSDN搜索的能力并提供了允許第三方開發人員為Reflector創建插件的框架。
要查看調用或被調用圖,隻需要在樹視圖中選擇一個成員,訪問Tools菜單,選擇Call Graph或Callee Graph選項即可。Call Graph會列出所選項所調用的成員,而Callee Graph列出調用所選項的成員。
通過使用插件,Reflector的功能可以得到進一步擴展。目前有能顯示程序集依賴圖、自動加載當前運行中的程序集、輸出整個程序集的反彙編内容以及在Visual Studio中作為Reflector的宿主等的插件。
還有更多插件都列本詞條擴展閱讀中。在此,我極力推薦有興趣的讀者前去一看。
不出乎所料,的确存在一個Reflector.VisualStudio插件。有了這個插件,就可以讓Reflector集成在Visual Studio環境中,進而取代以前那個有些“拙漏”的對象浏覽器。
首先,我們需要在機器上準備Reflector的最新版,然後下載最新版本的Reflector.VisualStudio插件。據說安裝了此插件之後,Reflector能夠與Visual Studio完美融合。
但遺憾的是,有人試下載此軟件并安裝(僅能得到testdriven-2.8.2130 RTM個人測試版本,時間7/30/2007,大小3.3M)後,沒有大發現—僅是在VS2005中添加“Go to Reflector”和一個幫助菜單項。點擊“Go to Reflector”菜單項僅是從VS2005内部啟動Reflector而已。
Reflector最新版本收費
現在打開Reflector的老版本要求強制更新到最新版本,最新版本收費.現在網上很少有破解版本了。2008年被redgate軟件公司收購。Reflector已經得到增強,截止2011年初,該工具現在可以分為三個版本(Standard、VS、VSPro)。用戶可以根據自己的需求和實力進行購買。


















