【星光偶像计划】数据下载和解包方法探索
前言
星光偶像计划(Stella Idol Project)是DMM新出的偶像主题放置类游戏,稍微玩了一下发现是彻彻底底的放置套壳,不过算是DMM近期做的质量稍微高一点的,所以探索一下数据包如何下载怎么解包。
(吐槽,国产漫画恰好有个叫《星梦偶像计划(Project stardream)》,一字之差……)
本文严重参考:https://live2dhub.com/t/topic/4536/6,非常感谢脚本下载作者和响应解密脚本作者二人🙏!

环境准备
安装python(略)
首先创建文件夹。
下载脚本需要的python版的文件读取脚本环境:
git clone https://github.com/anosu/AddressablesToolsPy.git
切文件夹:
cd AddressablesToolsPy
安装环境:
pip install .
pip install loguru
资源包下载脚本
密码是本文发布日期的6位数字。
用Assetstudio提取文件
用之前讲过的来解包。
此项目已变为存档状态,如有需要请fork或下载最新版保存。
用16进制文件浏览器看文件资源包中的情况,发现有两个UnityFS
的文件头。

在Studio项目中这种算是属于FakeHeader类型的,所以在Specify Game当中选择FakeHeader。

光把文件拖进去的话还是会报错:

从Log的关键词中我们发现需要指定一个Unity版本,理论上这个版本需要去安卓的安装包里面找Unity原始资源的版本作为参考,我在网页端F12扒请求以后发现是2022.3.44f1
,在Specify Unity Version中选择。

然后我们把文件夹拖进去就可以发现没问题了。

Hashkey抓取
用F12访问网页版的游戏,可以抓到当前版本资源索引文件catalog_[versions].bin
的URL:

https://cdn.XXX.com/v[versions]_[strings]/Addressables/WebGL/catalog_[versions].bin
可以看到最后的WebGL
代表客户端类型,从参考页面可以看到有Windows
/Android
/WebGL
至少这几种类型。
中间的版本号+字符串的还好说,这个版本号也对应了资源索引文件catalog_[versions].bin
中的版本号。
在网络里面搜索论坛提到的DMM的api调用地址osapi
,可以看到有一个资源hit了:

复制这个资源的响应:

将其保存到名为response.txt
的文本文件中。
然后把下面的脚本保存为decode.py
(这里的key和iv并没有发生变化):
和上面密码一样。
最后我们将response.txt
和decode.py
放在同一目录下,执行python decode.py response.txt
,就可以获取到一段明文响应Config.json
,响应中就包含获取资源包需要的hashkey。(上图)
在上图我们可以看到ab_hash_key
和res_version
等重要参数,也和脚本里的内容对上了。
后面再进行更新也只需要在网页端访问游戏,然后按本节解密响应内容即可。