大神论坛

找回密码
快速注册
查看: 205 | 回复: 0

[原创] 逆向分析下游戏明日方舟:终末地的资源解密教程

主题

帖子

0

积分

初入江湖

UID
682
积分
0
精华
威望
0 点
违规
大神币
68 枚
注册时间
2023-10-14 10:55
发表于 2023-12-31 16:30
本帖最后由 bant 于 2023-12-31 16:30 编辑

它加密了吗,如加——明日方舟:终末地 资源解密记录

没啥可说的,鸽了几个月的东西()

1. 观察

先看看AB包,这种奇怪后缀肯定加了料 不加我倒立

瞄一下程序行为,读取AB包头看起来比较正常,偏移看上去没问题

扔进 AssetStudio,改了压缩类型,大概率也做了加密 (和某厂差不多的味道)

2. 分析

这玩意的 UnityPlayer.dll 不仅加了VMP3,也加了不知名压缩壳,我选择直接 dump 出来之后再静态分析 (差了几倍你敢信???)

找到 CreateDecompressor, 果然使用了自定义的flag

解压函数一时半会看不出来什么问题,先去看看前面的处理,一般来说不在解压做解密,那就会在读取做解密

找到 ArchiveStorageReader::ReadFromStorage,发现了点问题,直接一个jmp大跳跳到别的函数去读取了

这个函数实际上就是将读取的工作扔去 FairGuardProtect.dll 里面,具体可以看下面 GPT4 的解释

动态一下(其实看堆栈也行),跳转来到了 FairGuardProtect.dll + 0x26F50,下面的 sub_180049950 一眼就看出是解密函数 废话,那你拿缓冲区内存去干嘛

进去瞄一眼,好嘛,直接明文,加密跟没加一样

直接把伪代码抄一下,补齐一下依赖的函数,顺利解密

注: 其实 LZ4 解压那边也动了点手脚,但出于版权问题不写完,也算是保护下对方版权-O-

3. 结尾

现在厂商这么有钱了嘛,第二个看到买 Unity 源码改的厂商了()


注:若转载请注明大神论坛来源(本贴地址)与作者信息。

返回顶部