dnspy的詳細配置,dnspy如何過濾反編譯之后的亂碼,dnspy如何反編譯表達式目錄樹


 dnSpy應該是目前使用最多的.net反編譯工具。很多情況下反編譯C#代碼非常方便,特別是查找基類,子類。搜索一些class,方法。接口,非常方便。比ILspy好很多。而且dnspy是可以配置的。

如果要dnSpy非常干凈地顯示反編譯之后的代碼,可以看我具體的配置:

第一張是效果圖,過濾一個具體的關鍵詞篩選的時候可以使用【全詞匹配】,可以在所有的.net framework中查找你需要尋找的那個關鍵字,不區分大小寫。

 右側底部的這個搜索框是可以配置的,而且有時候很容易被隱藏掉,需要“上拉”才能顯示出來。隱藏得比較深。

第二張圖:常規情況下,默認sndpy反編譯出來會有很多垃圾注釋。紅色框部分都是我們不需要的,會干擾我們分析代碼。如何去掉這些注釋的干擾,請看第三張圖。

第三張圖:菜單導航欄 -> 視圖 ->選項 ;    反編譯器 -> C#  ||  IL  設置如下即可。有時候為了查看表達式樹的內部結構,我們一般不勾選 Expression Tree。查看ExpressionTree內部結構圖,圖4那樣。

第四張圖:默認情況下ILSpy要查看表達式目錄樹的內部實現,是看不到的,需要切換C#版本號,而dnspy更加簡潔。直接取消掉ExpressionTree上面勾選即可。

取消對ExpressionTree的反編譯,就是上面取消勾選“ExpressionTree”就是下面這種:

 

勾選 反編譯 ExpressionTree 之后,效果如下,看到的是表達式目錄樹原始的樣子:Expression<Func<People, bool>> lambda = (People x) => x.Id.ToString().Equals("5");   

大家可以測試一下。

 

第五張圖:一個經常需要用到的工具,就是查看某個類的子類。比如MVC5中的Action返回結構經常是ViewResult(); 除了這個返回值之外,它其實還可以返回所有基於ActionResult的子類。

 

 還一個功能就是 重新加載所有程序集。其實dnspy是有這個功能的。

通過以上對dnspy的配置,基本上可以替代我們日常的反編譯工具了。

唯一需要注意的是,exe文件被dnspy打開之后,就是獨占的狀態,會導致visual studio 2017無法重新編譯生成exe。

需要退出dnspy才行。

 另外,經常看見博客園中有人丟出一些類圖。分析開源項目的框架,繼承的一些關系。

比如像這種:

結合這種dnspy的反編譯工具,把.net framework的類庫摸一個dll反編譯出   .sln 的解決方案文件,就可以用vs2017自帶的組件“體系結構和分析工具”,

右鍵解決方案中“項目”——“在代碼圖中顯示”,就可以像上面那樣子去深度分析和實踐面向對象程序設計了。理解別人的代碼的底層實現和設計原理,會有比較大的幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM