「好物推薦」-C#程序逆向工程“反編譯”

在日常開發過程中,估計會遇到以下問題:運行環境出現了重大Bug要馬上解決、電腦掛了、硬盤損壞、舊代碼覆蓋新代碼。在種種情況的要求下,我們不能馬上修復Bug。只能利用一些逆向的技巧和工具了 來解析在服務器發佈好的dll或exe文件。這和破解別人的軟件完全不同,你不需要了解那些加密算法,也無需擔心那個加密代碼。只是修改某個單一功能,甚至是一段顯示文本。接下來我列出四個用於C#逆向工程的小工具。

.Net Reflector

這款神器是收費的,所以它的功能也是最完善的。Reflector具有良好的用戶體驗和強大的插件功能,另一方面Reflector有智能反編譯能力,使得它不僅能看到反編譯後的IL源碼甚至能直接反編譯出C#源碼,而且和編寫時的代碼幾無二致,如果需要還可以直接另存為工程文件用Visual Studio。

「好物推薦」-C#程序逆向工程“反編譯”

JetBrains dotPeek

dotPeek為一免費的.net反編譯和中間語言代碼瀏覽器工具,由JetBrains開發。

JetBrains是ReSharper、DotTrace和dotCover(針對於.net開發者)的作者,該公司的其他產品也包括Java、Ruby、Python、Php和其他語言的IDE,以及團隊開發插件TeamCity(用於持續集成和Build管理)、Issue追蹤工具YouTrack。DotPeek不能與Visual Studio集成。

「好物推薦」-C#程序逆向工程“反編譯”

Telerik JustDecompile

Telerik JustDecompile是一個免費的.NET反編譯器,但是有商業化支持。它生成的代碼質量也很高。JustDecompile提供了健壯的查找功能,能夠支持全文查找和符號使用查找。它還有一個插件系統,目前在Telerik的網站上有兩個可用的擴展。JustDecompile不能與Visual Studio集成


「好物推薦」-C#程序逆向工程“反編譯”

ILSpy/dnSpy

最後推薦的這一款,也是我日常的主力。主要原因是下載方便(直接官網下載解壓就可以用),功能強大但是使用起來簡單。筆者在使用這兩種時,覺得後者比前者無論是配色,還是格式化都比前者要貼合我的感官。所以我的結論是

dnSpy>ILSpy>.Net Reflector>doPeek

「好物推薦」-C#程序逆向工程“反編譯”


接下來我將簡單地反編譯一個C sharp的程序。

準備一個小程序

「好物推薦」-C#程序逆向工程“反編譯”

在dnSpy中打開

通過“菜單”->"打開...",選擇所要反編譯的exe文件。在左側的程序名稱上點擊“轉到入口點”,就可以找到Main函數

「好物推薦」-C#程序逆向工程“反編譯”

修改程序中間的文本

在左側找到初化始組件的代碼,然後在右側代碼區點擊右鍵“編輯方法”或“編輯類”。將測試程序中間的文本改成“這是反編譯之後的程序”。然後點擊右下角的”編譯“按鈕。

「好物推薦」-C#程序逆向工程“反編譯”

保存並查看結果

點擊菜單欄後工具欄上的“保存所有”,點擊確定。再次雙擊exe可以查看結果。

「好物推薦」-C#程序逆向工程“反編譯”

「好物推薦」-C#程序逆向工程“反編譯”

「好物推薦」-C#程序逆向工程“反編譯”

注意,以上只是逆向工程示例,切勿用於解析其他EXE或DLL。一方面其他程序有加密代碼,另一方面不要從事非法用途。此例只是學習交流之用。


分享到:


相關文章: