记录逆向某Unity游戏获取资源及代码

查看 113|回复 11
作者:fjqzlqh   
准备工具如下
1.frIDA
2.IDA
3.AssetStudioGUI
4.Il2CppDumper
5.dnSpy
拿到游戏的APK后,先解压看一眼资源文件,发现文件名是MD5加密,而AB包则是在前面填充了不固定的字符,并且无法识别unity版本号


QQ图片20240110142301.png (31.66 KB, 下载次数: 0)
下载附件
2024-1-10 15:27 上传



QQ图片20240110142636.png (50.48 KB, 下载次数: 0)
下载附件
2024-1-10 15:27 上传

先用Il2CppDumper导出dll,通过导出的DLL发现并没有常规的Assembly-CSharp.dll,先把导出的DLL丢进dnSpy查看一下函数
查看之后并没有发现有加载asssetbundle相关的函数, 但是发现在AOTMainGame.dll中有一个loadDLL的函数,应该就是加载Assembly-CSharp.dll的地方


QQ图片20240110143852.png (50.62 KB, 下载次数: 0)
下载附件
2024-1-10 15:28 上传

打开IDA跟踪一下代码,但是并没有找到相关解密的代码 (这里卡了我好久,我一直以为加载dll的时候就应该解密了,但是并没有)
后来我用frida hook了看了一下调用过程,发现LoadDLL调用之后会调用上图中StartGame方法,在IDA跳转到该方法后找到了解密相关的函数


QQ图片20240110153049.png (76.63 KB, 下载次数: 0)
下载附件
2024-1-10 15:29 上传

虽然这里调用的是Encrypt,但是我在frida里hook后并没有调用,回到dnSpy查找这个类,并hook它里面的Decrypt函数,发现正常调用


QQ图片20240110153302.png (14.32 KB, 下载次数: 0)
下载附件
2024-1-10 15:31 上传

剩下的事情就容易很多了,写好frida代码,并将dll导出出来


QQ图片20240110153351.png (68.12 KB, 下载次数: 0)
下载附件
2024-1-10 15:32 上传



QQ图片20240110153331.png (83.84 KB, 下载次数: 0)
下载附件
2024-1-10 15:32 上传



QQ图片20240110153507.png (58.97 KB, 下载次数: 0)
下载附件
2024-1-10 15:33 上传

把导出的DLL同样丢进dnSpy进行反编译,熟悉的Assembly-CSharp.dll就出来了,并且代码也都是明文的
查找加载assetbundle的地方,最终跟到了getoffset方法,这就是往AB包头部插入字节的偏移量了


QQ图片20240110153201.png (27.13 KB, 下载次数: 0)
下载附件
2024-1-10 15:34 上传

代码都知道了,那就写个解密程序吧...c+v大法


QQ图片20240110153640.png (33.69 KB, 下载次数: 0)
下载附件
2024-1-10 15:35 上传

解密后随便打开一个ab包查看一下,现在已经正常以UnityFS开头了


QQ图片20240110153723.png (31.74 KB, 下载次数: 0)
下载附件
2024-1-10 15:36 上传

最后还有一个问题,那就是ab包的版本号还是0.0.0,这使得AssetStudioGUI无法识别


QQ图片20240110153821.png (21.89 KB, 下载次数: 0)
下载附件
2024-1-10 15:37 上传

只能在github下载AssetStudio源码自己魔改,找到CheckStrippedVersion直接把里面的值写死   (暴力美学)


QQ图片20240110153859.png (14.73 KB, 下载次数: 0)
下载附件
2024-1-10 15:37 上传

成功加载, lua代码,资源,还有前面的c#代码都被我们解出来了~~


QQ图片20240110153947.png (106.03 KB, 下载次数: 0)
下载附件
2024-1-10 15:38 上传

声明一下:破解的资源请别用于商业用途~
欢迎大家留言讨论~~谢谢

下载次数, 下载附件

fjqzlqh
OP
  


阿清 发表于 2024-1-13 00:52
https://www.mlbb11.com/ 这个 这热血好几个版本 你那个版本资源好像也有点加密 大佬能不能也出一期学习 ...

你这个也不难,就是global-metadata.data用了异或加密了,资源包(也就是.pak)也是用的异或加密
这个是解密global-metadata.data


image.png (21.02 KB, 下载次数: 0)
下载附件
2024-1-13 21:51 上传

这是解密资源的,你如果只是要资源,直接用下面这个代码跑一下(路径自己替换一下),然后把解密过的资源丢进AssetStudio就行
woofhat   

看起来不是很难,但是自己做就不是那么回事。
我随便找了个unity 的游戏想尝试一下解包。
结果根本就没有发现什么LoadAssetbundle或者类似的函数,完全不知道如何下手
wasm2023   

mark一下
zesi111   

膜拜神贴,后面的请保持队形~
xinbao339   

膜拜大神
阿清   

你可以玩下 那个热血江湖手游 那个才叫难阿 后缀是.pak
airwolf83   

虽然看不懂,但觉得很牛,毕竟Unity的游戏都很好玩
fjqzlqh
OP
  


阿清 发表于 2024-1-11 22:19
你可以玩下 那个热血江湖手游 那个才叫难阿 后缀是.pak

热血江湖手游的资源并没有加密
阿清   


fjqzlqh 发表于 2024-1-12 13:52
热血江湖手游的资源并没有加密

不应该 这游戏我看过很多次了 是官网的 不是杂牌的 assets\ android0.zip里面 也有 assets\platform_android 也有
您需要登录后才可以回帖 登录 | 立即注册

返回顶部