Reflector

Reflector

Reflector是由微軟員工Lutz Roeder編寫的免費程式。Reflector的出現使·NET程式設計師眼前豁然開朗,因為這個免費工具可以將·NET程式集中的中間語言反編譯成C#或者Visual Basic代碼。除了能將IL轉換為C#或Visual Basic以外,Reflector還能夠提供程式集中類及其成員的概要信息、提供查看程式集中IL的能力以及提供對第三方外掛程式的支持。

誕生

程式集,作為.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)。用戶可以根據自己的需求和實力進行購買。

相關詞條

相關搜尋

熱門詞條

聯絡我們