首页 > Unity3D频道 > 【你好Unity3D】 > #你好Unity3D#避免代码被反编译(来自我的长微博)
2014
06-01

#你好Unity3D#避免代码被反编译(来自我的长微博)

我最近研究发现80%以上的Unity3D游戏都没有做代码混淆。而且我觉得反编译后的代码可阅读性更加好。今天把《锁链战记》的代码和资源都反编译出来了。

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直接拖进去。

 #你好Unity3D#避免代码被反编译(来自我的长微博) - 雨松MOMO程序研究院 - 1

 

所有的代码,类名,方法名,方法体,一清二楚。这代码,这缩进,嘿嘿。AssetbundleManager应该就是他们自己写的处理Assetbundle的下载管理类了。

 #你好Unity3D#避免代码被反编译(来自我的长微博) - 雨松MOMO程序研究院 - 2
如果有心的话你可以全局搜索一下”http”关键字 可能就能找到CDN或者Assetbundle的下载地址了。
如果避免自己的游戏被反编译
大家可以去搜索一下Codeguard这个插件,(网上可以找到破解版)它可以防止你的代码被反编译。它主要是改名,把你的方法名,方法体名子修改了,变量名修改了。虽然有点弱但是它的优点是比较方便,因为可以在打包的时候自动完成代码混淆的工作。不用自己去手工做混淆,我不知道有没有更好的自动混淆方法,如果那位大神知道请一定要告诉我。

另外,还有一个更高级的办法。直接找unity官方,它们有防止代码反编译的服务,绝对有效。还有一个方法 用Crypto Obfuscator for .Net 这东西可以完美混淆Unity for Android的代码,也支持打包APK 时批处理脚本完成混淆部分。但是MAC 上不支持,看了一大堆混淆.net 的方法,全部是基于windows上的。 有哪位大神知道怎么在mac上进行Andorid的混淆工作。。

 

 

欢迎关注雨松MOMO的微博

 

 

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

#你好Unity3D#避免代码被反编译(来自我的长微博)》有 64 条评论

  1. 走远了 说:

    请教下,解包app后用ILspy+reflexil修改了Assembly-CSharp.dll 安卓可以正常运行, 为什么到ios就不行呢? 进程序初始界面有,然后一到调用Assembly-CSharp.dll 的地方就灰了··· 整个屏幕就灰色的!!!!

  2. builder2010 说:

    Coroutine里面反编译出来的内容, 怎么能看清代码的…

  3. 黄诚 说:

    大神 雨松MOMO 我在PC上解压开导出锁链战记 用NET Reflector8,5反编译了 但提前出来的都是代码 怎么才能提前资源呢

  4. 猫同人 说:

    天天风之旅的直接提示说是非托管资源,不知道怎么搞的

  5. 新人007 说:

    告诉你们一个消息,unity 5 发布的unity3d文件,根本不能被反编译看代码哦,目前是这样的,呵呵,不管你是disunity , de4dot, Unity3dObfuscator等等,都没有戏

  6. 雨松MOMO 说:

    assetbundle 后缀可以是任意的。。。

  7. 小三国 说:

    有试过影之刃的没,它的Assembly-CSharp.dl拖进去就出现:“File is not a portable executable. DOS header does not contain ‘MZ’ signature. ”。。。

  8. kevin 说:

    我提取其他IOS软件的dll,最多只能看到方法名,但里面的东西完成看不多

  9. kevin 说:

    我生成的IOS包,安装后,提取Assembly-CSharp.dll,还是可以完成看到源码!IOS是不是需要设置什么才能自动加密dll

  10. ts3333 说:

    Codeguard混淆后自己编写的脚本运行不了,unity的到可以,什么情况,雨松大师知道不 #你好Unity3D#避免代码被反编译(来自我的长微博) - 雨松MOMO程序研究院 - 1

  11. 逍遥随风翼 说:

    unity打包的apk资源文件能解出来吗??算法啥的都是比较常见的。。。

  12. QTBY5 说:

    IOS版本的DLL也要做混淆吧,我解了好多包,发现IOS的都可以看见远吗

  13. FG911 说:

    Crypto Obfuscator for .Net 这个我用了,于是直接crash了,看来并不是那么好用,一些序列化的的东西和方法名估计都不能改,有些方法会被SendMessage调用,手动改感觉工作量有点可怕啊

  14. xanthater 说:

    模型等資源不是存於BDL 文件裏?成功能下載BDL 文件,但能否教一下如何能從BDL 提取資源?謝謝!

  15. LC 说:

    反编译代码,发现有用ServerProvider.DecodeXorData来解密bdl。于是自己写了个工程来提取资源,但是大多数资源都过不了这个方法打的check,更别说提取资源。不知道博主可否交流下提取经验。

  16. FG911 说:

    我就想知道资源的话,android上面的是不是也是很容易就可以解包

  17. FG911 说:

    native代码最麻烦之处就是跨平台,如果需要跨平台,native就会大大拖慢开发速度,即使不跨平台,至少我感觉安卓上面的native也会拖慢开发速度,eclipse的各种毛病实在没法忍受。windows的自然就方便很多

  18. 郭袁 说:

    #你好Unity3D#避免代码被反编译(来自我的长微博) - 雨松MOMO程序研究院 - 1 其实要是能直接导成unity工程忽悠更好了 不然代码只能看看 也不能发布自己的版本

  19. 郭袁 说:

    请问怎么导出锁链战记的资源?我只导出了代码

  20. 木紫 说:

    我想问~如果其中的资源是放在Resources目录下的话~打包好apk会被重命名的~这些资源改肿么破解出来???大神~求指导!!!!!Help!!!!!

  21. Speed608 说:

    求大神给下Anti-Cheat、Codeguard这两个插件的链接,上网找的都没权限下载…

  22. 打醬油的ki 说:

    锁链战记BDL還是不會解Texture2D o = Resources.Load(“test”) as Texture2D;用這個讀取BDL檔好像無法辨別?

  23. 呵呵 说:

    .net程序最有效的保护方法就是混淆其他的一切加密手段都是可还原的(具体可以了解一个开源的项目de4dot)核心算法如果出于安全考虑的话可以用native(oc,c 等语言)实现相关库再使用interop来调用。

  24. 呵呵 说:

    .net程序最有效的保护方法就是混淆其他的一切加密手段都是可还原的(具体可以了解一个开源的项目de4dot)核心算法如果出于安全考虑的话可以用native(oc,c++等语言)实现相关库再使用interop来调用。

  25. 伊宁22了 说:

    学习了。不过混淆可能造成比如admob或者其他的插件挂掉什么的。。

  26. 大水宝 说:

    锁链战记AssetbundleManager没找到http地址呀

  27. Speed608 说:

    windows下的android包有的话在这个下binDataManaged但是为什么有的游戏没找到dll文件呢..

  28. cony138 说:

    松大大,我在360商店http://dev.360.cn/protect这里看到360提供加密混淆等工作,你可否试试这个工作是否有效?如果你想找现成的apk,可以搜索【粽子来了】做实验。

  29. 禾木武 说:

    momoda,VS2012自带的PreEmptive Dotfuscator and Analytics混淆代码 ,你有用过吗?Codeguard 这个网上我没有找到,是不是跟vs自带的是一个功能?

  30. 罗国洋 说:

    难道我们只有这样处理吗?针对于项目的核心算法应该怎么去处理啊?就算混淆了 还是能看懂 求教下

  31. 风华正茂 说:

    哈哈,支持了。 #你好Unity3D#避免代码被反编译(来自我的长微博) - 雨松MOMO程序研究院 - 1

  32. 刀锋 说:

    MonoDevelop 也可以的

  33. 张艳磊 说:

    那天我们就试过了,强大的反编辑工具,拿到安卓版的代码很容易,又加上你那天分享的可以破解拿到资源的教程,那么获取一个游戏安卓版本的资源和代码已不是问题了。

  34. 连城诀 说:

    好东西啊,超赞!

留下一个回复

你的email不会被公开。