1. 程式人生 > >反編譯Unity3D遊戲--Android版

反編譯Unity3D遊戲--Android版

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的軟體,如果那位大神知道請一定要告訴我噢。

使用步驟

把Assembly-CSharp直接拖進去。

所有的程式碼,類名,方法名,方法體,一清二楚。這程式碼,這縮排,嘿嘿。AssetbundleManager應該就是他們自己寫的處理Assetbundle的下載管理類了。

#你好Unity3D#避免程式碼被反編譯(來自我的長微博) - 雨鬆MOMO程式研究院 - 2

如果有心的話你可以全域性搜尋一下”http”關鍵字 可能就能找到CDN或者Assetbundle的下載地址了。
如果避免自己的遊戲被反編譯
大家可以去搜索一下Codeguard這個外掛,(網上可以找到破解版)它可以防止你的程式碼被反編譯。它主要是改名,把你的方法名,方法體名子修改了,變數名修改了。雖然有點弱但是它的優點是比較方便,因為可以在打包的時候自動完成程式碼混淆的工作。不用自己去手工做混淆,我不知道有沒有更好的自動混淆方法,如果那位大神知道請一定要告訴我。

另外,還有一個更高階的辦法。直接找unity官方,它們有防止程式碼反編譯的服務,絕對有效。還有一個方法 用Crypto Obfuscator for .Net 這東西可以完美混淆Unity for Android的程式碼,也支援打包APK 時批處理指令碼完成混淆部分。但是MAC 上不支援,看了一大堆混淆.net 的方法,全部是基於windows上的。 有哪位大神知道怎麼在mac上進行Andorid的混淆工作。。