好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 fjqzlqh 于 2024-1-10 15:38 编辑
准备工具如下
1.frIDA
2.IDA
3.AssetStudioGUI
4.Il2CppDumper
5.dnSpy
拿到游戏的APK后,先解压看一眼资源文件,发现文件名是MD5加密,而AB包则是在前面填充了不固定的字符,并且无法识别unity版本号
先用Il2CppDumper导出dll,通过导出的DLL发现并没有常规的Assembly-CSharp.dll,先把导出的DLL丢进dnSpy查看一下函数
查看之后并没有发现有加载asssetbundle相关的函数, 但是发现在AOTMainGame.dll中有一个loadDLL的函数,应该就是加载Assembly-CSharp.dll的地方
打开IDA跟踪一下代码,但是并没有找到相关解密的代码 (这里卡了我好久,我一直以为加载dll的时候就应该解密了,但是并没有)
后来我用frida hook了看了一下调用过程,发现LoadDLL调用之后会调用上图中StartGame方法,在IDA跳转到该方法后找到了解密相关的函数
虽然这里调用的是Encrypt,但是我在frida里hook后并没有调用,回到dnSpy查找这个类,并hook它里面的Decrypt函数,发现正常调用
剩下的事情就容易很多了,写好frida代码,并将dll导出出来
把导出的DLL同样丢进dnSpy进行反编译,熟悉的Assembly-CSharp.dll就出来了,并且代码也都是明文的
查找加载assetbundle的地方,最终跟到了getoffset方法,这就是往AB包头部插入字节的偏移量了
代码都知道了,那就写个解密程序吧...c+v大法
解密后随便打开一个ab包查看一下,现在已经正常以UnityFS开头了
最后还有一个问题,那就是ab包的版本号还是0.0.0,这使得AssetStudioGUI无法识别
只能在github下载AssetStudio源码自己魔改,找到CheckStrippedVersion直接把里面的值写死 (暴力美学)
成功加载, lua代码,资源,还有前面的c#代码都被我们解出来了~~
声明一下:破解的资源请别用于商业用途~
欢迎大家留言讨论~~谢谢 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|