1.Unity編譯后最終會將代碼編譯在dll里面,無論是ios還是Android解開包以后都可以拿到dll,路徑在Data/Managed/Assembly-CSharp.dll
2.IOS其實不用做代碼混淆,應該是蘋果幫我們做了,反編譯以后只能看到變量名,和方法名,但是具體的方法體內的代碼是萬全看不到的,不過安卓不行!!!
3.所以如果要反編譯某游戲的代碼,一定要去找它的Android版本,然后解開包,拿出它的Assembly-CSharp.dl
4.在Windows上去下載.NET Reflector 8這個反編譯dll的軟件,網上一大堆,但是一定要下載最新版本。目前我沒找到可以在MAC上反編譯dll的軟件,如果那位大神知道請一定要告訴我噢。
5.mac 上反編譯,請看我的另一篇文章 http://www.xuanyusong.com/archives/2675
使用步驟
把Assembly-CSharp直接拖進去。
所有的代碼,類名,方法名,方法體,一清二楚。這代碼,這縮進,嘿嘿。AssetbundleManager應該就是他們自己寫的處理Assetbundle的下載管理類了。
如果有心的話你可以全局搜索一下”http”關鍵字 可能就能找到CDN或者Assetbundle的下載地址了。
如果避免自己的游戲被反編譯
大家可以去搜索一下Codeguard這個插件,(網上可以找到破解版)它可以防止你的代碼被反編譯。它主要是改名,把你的方法名,方法體名子修改了,變量名修改了。雖然有點弱但是它的優點是比較方便,因為可以在打包的時候自動完成代碼混淆的工作。不用自己去手工做混淆,我不知道有沒有更好的自動混淆方法,如果那位大神知道請一定要告訴我。
另外,還有一個更高級的辦法。直接找unity官方,它們有防止代碼反編譯的服務,絕對有效。還有一個方法 用Crypto Obfuscator for .Net 這東西可以完美混淆Unity for Android的代碼,也支持打包APK 時批處理腳本完成混淆部分。但是MAC 上不支持,看了一大堆混淆.net 的方法,全部是基於windows上的。 有哪位大神知道怎么在mac上進行Andorid的混淆工作。。