我最近研究发现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直接拖进去。
所有的代码,类名,方法名,方法体,一清二楚。这代码,这缩进,嘿嘿。AssetbundleManager应该就是他们自己写的处理Assetbundle的下载管理类了。
如果有心的话你可以全局搜索一下”http”关键字 可能就能找到CDN或者Assetbundle的下载地址了。
如果避免自己的游戏被反编译
大家可以去搜索一下Codeguard这个插件,(网上可以找到破解版)它可以防止你的代码被反编译。它主要是改名,把你的方法名,方法体名子修改了,变量名修改了。虽然有点弱但是它的优点是比较方便,因为可以在打包的时候自动完成代码混淆的工作。不用自己去手工做混淆,我不知道有没有更好的自动混淆方法,如果那位大神知道请一定要告诉我。
另外,还有一个更高级的办法。直接找unity官方,它们有防止代码反编译的服务,绝对有效。还有一个方法 用Crypto Obfuscator for .Net 这东西可以完美混淆Unity for Android的代码,也支持打包APK 时批处理脚本完成混淆部分。但是MAC 上不支持,看了一大堆混淆.net 的方法,全部是基于windows上的。 有哪位大神知道怎么在mac上进行Andorid的混淆工作。。
- 本文固定链接: https://www.xuanyusong.com/archives/2664
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
大神你好,最近研究一个unity3D的游戏,使用Il2Cpp打包的,用Il2CppDumper解包之后,得到dll,再用.NET Reflector反编译只能看到方法名,方法体全是空的,IL Spy反编译,方法体全是16进制数值,没有具体文本,这是什么情况了
方法体已经被C++编译了, 要用IDApro 来反编译, 虽然无法完全还原C#代码,但是仔细看还是能看出来流程的。
现在基本上全平台都能il2cpp了,自带混淆
代码有了,模型有了。有木有办法弄到Unity里?变成一个项目?
请教下,解包app后用ILspy+reflexil修改了Assembly-CSharp.dll 安卓可以正常运行, 为什么到ios就不行呢? 进程序初始界面有,然后一到调用Assembly-CSharp.dll 的地方就灰了··· 整个屏幕就灰色的!!!!
Coroutine里面反编译出来的内容, 怎么能看清代码的…
大神 雨松MOMO 我在PC上解压开导出锁链战记 用NET Reflector8,5反编译了 但提前出来的都是代码 怎么才能提前资源呢
disunity
天天风之旅的直接提示说是非托管资源,不知道怎么搞的
腾讯的游戏 dll是加密 不是混淆。。。 所以根本没法看。
哦,对,用了各种解密工具都没检测出是加的什么壳,可能是自己发明的加密软件
腾讯应该有u3d的源码把。。 这样就比较好做加密。。。
告诉你们一个消息,unity 5 发布的unity3d文件,根本不能被反编译看代码哦,目前是这样的,呵呵,不管你是disunity , de4dot, Unity3dObfuscator等等,都没有戏
留个QQ我加你
你说的是Web Player发布出来的unity3d文件么?我发布的文件可以拿Unity3dObfuscator打开,能看到代码
assetbundle 后缀可以是任意的。。。
有试过影之刃的没,它的Assembly-CSharp.dl拖进去就出现:“File is not a portable executable. DOS header does not contain ‘MZ’ signature. ”。。。
我提取其他IOS软件的dll,最多只能看到方法名,但里面的东西完成看不多
IOS不用混淆。。
我生成的IOS包,安装后,提取Assembly-CSharp.dll,还是可以完成看到源码!IOS是不是需要设置什么才能自动加密dll
Codeguard混淆后自己编写的脚本运行不了,unity的到可以,什么情况,雨松大师知道不
unity打包的apk资源文件能解出来吗??算法啥的都是比较常见的。。。
IOS版本的DLL也要做混淆吧,我解了好多包,发现IOS的都可以看见远吗
IOS 的方法体里面是看不到的。
ios版是可以看见方法体内容的,亲测酷酷爱魔兽IOS1.2.0版
啊?你用什么工具看的?
最开始是用.NET Reflector 8.3,现在是8.4版本都成功过
ios要隐藏方法体是需要设置的,由于多数游戏是跨平台的所以还是用的混淆
想问一下,ios 怎样设置 隐藏方法体 不被反编译呢?
Crypto Obfuscator for .Net 这个我用了,于是直接crash了,看来并不是那么好用,一些序列化的的东西和方法名估计都不能改,有些方法会被SendMessage调用,手动改感觉工作量有点可怕啊
就算混淆了也有办法返混淆。。
多一步防范多防一个小白吧,据说unity 5.1会支持C++,如果真有就好了
多一步防范多防一个小白吧,据说unity 5.1会支持C ,如果真有就好了
模型等資源不是存於BDL 文件裏?成功能下載BDL 文件,但能否教一下如何能從BDL 提取資源?謝謝!