<有谁不喜欢剑仙呢> 存档解密 (Unity IL2Cpp 新手向)

查看 110|回复 9
作者:33911628   
最近沉迷修仙挂机小游戏,尤其是那种本地保存,带有云存档的。
游戏本身可以用GG修改器无脑改值(死刑!),作者也停更了很久,自带的云存档也停用了,刚好作为新手练习作品。
游戏地址 aHR0cHM6Ly93d3cudGFwdGFwLmNuL2FwcC8zNTMwOTQ=
打开游戏,释放资源,确定存档位置为 /data/data/[app]/files/sdvsgeah2
文件内容:


ANJOK{S5U@RLB$U)~@V%X_Y.png (20.14 KB, 下载次数: 0)
下载附件
2023-12-9 14:11 上传

引号中是双等号结尾,判断为base64+,尝试一遍后没有解出明文,此时有两个想法,其中还嵌套着一层加密,或者使用的是作者自定义的数据结构。
只能进so文件分析了。
app没有加密,dump的很顺利,使用il2cppdumper输入apk包中的assets\bin\Data\Managed\Metadata\global-metadata.dat和lib\arm64-v8a\libil2cpp.so后提取。


)J`IE5O58PN4VC_~7WGS9OP.png (46.02 KB, 下载次数: 0)
下载附件
2023-12-9 14:46 上传

IDA打开libil2cpp.so,加载完后 File -> Script File,选择提取的ida_py3.py -> stringliteral.json.
加载完后选择ida_with_struct_py3.py -> script.json, il2cpp.h. 到此准备工作完成.
开始代码定位,在stringliteral.json中搜索sdvsgeah2。记录地址 0x14ABAF8


`B~%8NK}AS7UKJFJD8VUNSU.png (45.15 KB, 下载次数: 0)
下载附件
2023-12-9 14:50 上传

在IDA View按G或跳转->跳转道指定位置,输入记录的地址。


ISG~CUK~9${_C_SA5~JUY$B.png (139.46 KB, 下载次数: 0)
下载附件
2023-12-9 14:53 上传

对应的为 StringLiteral_7528 ,在DataManager.load函数中被调用。
右键字符串StringLiteral_7528,选择交叉引用列表。


6$P$$E)7VB(Z9N20]5EL~2B.png (171.78 KB, 下载次数: 0)
下载附件
2023-12-9 14:55 上传

其中DataManager.load和DataManager.save中使用到了此字符串,为了解密存档是如何生成的,双金save跳转到对应函数。


~W)[7@5U9L3VG_8O]_$Y_AI.png (20.96 KB, 下载次数: 0)
下载附件
2023-12-9 14:57 上传



}2JL844E3MS[DO413`B17LG.png (133.01 KB, 下载次数: 0)
下载附件
2023-12-9 14:57 上传

按F5查看伪代码


M)RLU9ZFHUQ(D17PG}X9%GG.png (98.72 KB, 下载次数: 0)
下载附件
2023-12-9 14:58 上传

关键代码在DataManager.getSaveContent,其中返回的SaveContent就是加密后的密文。双击跟踪。


7PC19(4G0W46ABP53Y1Z1%A.png (122.4 KB, 下载次数: 0)
下载附件
2023-12-9 15:00 上传

前面的都是如何序列化角色信息,关键在于最后一行代码,很明显使用的是aes加密字符串v10。
因为我过于小白,不会下断点啥的拦截到v10变量的信息进行动态调试,继续静态分析。


DWX)QWV$MV43WVW8CZVMGT6.png (42.38 KB, 下载次数: 0)
下载附件
2023-12-9 15:03 上传

v10是明文,StringLiteral_5936为key,还有个我不清楚的v11为methodinfo.
双击StringLiteral_5936根据获取key为 cdd******527191.


屏幕截图 2023-12-09 150537.png (151.6 KB, 下载次数: 0)
下载附件
2023-12-9 15:06 上传

尝试脚本解密,别问我为什么是CBC,我也不知道C#里面的aes默认是啥,当时全部都试了一遍。


D8B_EQPR9]0[3RS%}KK8EIQ.png (86.52 KB, 下载次数: 0)
下载附件
2023-12-9 15:10 上传

嗯。。。能看到明文了,但是头部存在乱码,后续查找资料了解到,AES为CBC模式时,除了key外还存在iv,只有key和iv全部相同时才能成功解密。双击CRYPTO_Crypto_aesEncode跟进。


W8Z%FYTIVSOLLZ$XBDSY}HY.png (125.84 KB, 下载次数: 0)
下载附件
2023-12-9 15:16 上传

函数体头部存在一个类似初始化的操作,只会执行一次,其中在v9对应的StringLiteral_5714中找到iv。


P{2I@~S48ETQD@6(WPK3QSH.png (148.35 KB, 下载次数: 0)
下载附件
2023-12-9 15:17 上传

最后脚本如下,成功解密存档,加密方式为先AES后套base64,都是对称加密,解密后修改数据后可重新加密使用,到此这个游戏彻底被玩坏了。


屏幕截图 2023-12-09 152036.png (92.43 KB, 下载次数: 0)
下载附件
2023-12-9 15:20 上传

下载次数, 下载附件

小可爱家磊哥哥   

IOS 前几天刚玩过   iMemScan随便改
BonnieRan   

分享过程很细致,适合我这种小白宝宝体质
guoyin   

错觉了,下载用了
SYLXLdy   

绝对是致青春的作品了,谢谢LZ
kong1035082284   

这个网站地址怎么打开呀
fkbatno1   

好久没玩修仙小游戏,等有空也跟楼主的教程happy一下
LONGVOICE   

楼主那个下载链接是百度盘还是磁链还是啥的?
liujkk   

不知道怎么下载。
LONGVOICE   


小可爱家磊哥哥 发表于 2023-12-11 14:29
IOS 前几天刚玩过   iMemScan随便改

ios下载方式给一个呗
您需要登录后才可以回帖 登录 | 立即注册

返回顶部