它加密了吗,如加——明日方舟:终末地 资源解密记录
它加密了吗,如加——明日方舟:终末地 CBT1 资源解密记录
没啥可说的,鸽了几个月的东西()
观察
先看看AB包,这种奇怪后缀肯定加了料 不加我倒立

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

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

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

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


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

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

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



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

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

直接把伪代码抄一下,补齐一下依赖的函数,顺利解密
注: 其实 LZ4 解压那边也动了点手脚,但出于版权问题不写完,也算是保护下对方版权-O-

结尾
现在厂商这么有钱了嘛,第二个看到买 Unity 源码改的厂商了()
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 一个菜鸡の博客!