本文由博主SunboyL原創,轉載請注明出處:http://www.cnblogs.com/xsln/p/DLL_DeCompilation.html
在Unity實際開發過程中,我們可能會用到大量的插件,而很多插件有可能並非開源,而是封裝成dll文件。
使用免費非開源插件時,插件往往缺少維護,這對我們的開發是非常不利的。例如dll暴露的諸多接口,我們並不知道這些接口背后干了什么、底層用到哪些接口、有什么使用上的潛規則、對性能影響如何。
根據網上發現的網友統計(統計來源:
http://www.xuanyusong.com/archives/2664),多數的dll沒有做代碼混淆、反逆向等工作。因此對於這類由IL生成的dll,我們可以直接使用現成的工具,對dll進行反編譯,查看和學習dll內部到底干了些什么,是否存對性能產生影響的設計缺陷等等。
目前已存在有很多的翻遍應工具,例如ILSpy、.Net Reflector 8、Resharper等等。
下面我們使用免費開源的ILSpy為例,對UnityEngine.dll進行一次反編譯學習。
下載工具:
可以到ILSpy的官方網站進行下載:
http://ilspy.net/
<聲明:本文分享的是工具的簡單使用方法,僅供學習參考使用,請勿用作其他用途>
使用:
1、打開ILSpy.exe,進入工具主界面:

2、點擊工具菜單欄的<File - Open>進入文件瀏覽界面,在Unity安裝路徑中找到UnityEngine.dll並打開

3、反編譯成功后,在左側列表中將顯示被反編譯dll的層次列表內容,而右側顯示源碼。

反編譯后可以發現,UnityEngine.dll只是一個基於C#的包裝層,因此我們看到的只是UnityEngine的包裝代碼以及一些比較基礎的邏輯代碼,核心代碼並不在其中。
原因是Unity本身是由C++編寫,即便要查看,也應該需要使用OllyDebug等其他反匯編工具深度逆向(這已經不是本文的討論范疇),不能通過ILSpy這類IL反編譯工具獲得。
Edit by SunboyL