游戏本身可以用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 上传