谱面粗看 – 世界大明星梦幻星辰

好久没看新游戏了,随便搞一个

卡140150觉醒卡面

这是一个由柏木咲姬、江江、逢坂茜还有星咲阿卡丽参加的chunithm mobile游戏(迫真)

https://apps.apple.com/jp/app/id6447166623


通信很刺激,api和资源都不走代理,所以第一天就只是看了看全部缓存后的本地。一看并没有加密,可以很美好地舔卡面,好文明。

本地还有一个masterdata,粗看是MessagePack,但是直接读好像是只有一个header,写了每个部分的offset和size,后边对着规范看,也确实是msgpack的内容,但是并不是组合起来的,感觉需要自己从头写个parser出来,就没细看了。


今天有人提到想看看谱面,反正昨天把程序扔到ida了,今天就随便看看。

通信不走代理,那就先开个火箭看一下dns记录,搞到api和资源的三个域名:api.wds-stellarium.com ag-api.wds-stellarium.com assets.wds-stellarium.com 。

拿到域名,去自己自签名一个证书给本地nginx用,然后进ipad写hosts,就可以看通信了(自签的根证书在设备上一直都是信任的,以前做mltd和arc的api反代用的)

随便开一个歌,就看到谱面的下载了,果然是现场下谱面的,我以为会通过api下发,他还是扔到了cdn上。

知道文件名了就可以 stringliteral.json 搜了,找地址看引用,然后开始搜。结果搜着MusicConfig呢密码就自己蹦出来了。

一看password,本以为又是一个pbkdf2,顺着密码的string literal引用找到debug里的引用(正常流程反而没引用,搞不懂),跟进去看到一个CustomAes类。结果跟了几下一看,这东西直接就是aes key,iv是文件本身的前16字节。

music config打开是个csv,存了用到的音频cue,谱面打开看到1b开头的一堆binary,以为是什么神秘自建格式,结果同样的去debug notation parse一看,是brotli。感觉是头一次见到有人在游戏用brotli。(对的,这游戏的谱面叫做Notation,蛮新奇的叫法)

这东西本质也是个csv,列是 Start,End,NoteType,Lane,Width,GimmickType,GimmickValue ,具体的NoteType和GimmickType就没看了,dump.cs 里可以直接找到enum


最后稍微的评一下这个游戏。

总体来说,他所有的函数,都是先有一个对应的interface,然后用类去实现这个interface,哪怕只用一次。可以说代码规范很强迫症级别,但是对于il2cpp逆向来说是比较致命的。因为我看所有的函数都没有引用,他全是方法指针调用,没有直接调具体方法的。

这种写法的代码,顺着调用走还只能算是有点难受,得看方法指针名去dumpcs里面找,然后在手动跳转;想要逆着调用找引用就基本不可能了,只能从其他路子,比如类成员下手。

然后他不知道为什么,这程序居然有160m大。做对比rotaeno 90m,bandori 80m。不知道是不是因为里面塞了大量的debug方法没有清掉。也不知道是不是这东西太大了的原因,我ida分析一直卡在开头死循环。


游戏体验上,这东西是我第一次见到,剧情跳过会少掉一点奖励(买歌券-1),以及虽然外面和mv都是全3d,但是一进剧情就是spine做的立绘(对不是live2d),动作好僵硬而且整个系统好卡,对比同样是spine做立绘的已故的sbr fes a live,那个就不卡也更加流畅一点(不会是回忆滤镜吧?)

另外还有一个最弱智的点……这游戏所有的时间都是依照本地时区计算的,包括体力、活动时间、歌曲解锁等等。我从一开始就在奇怪,为什么我总有60体力没法使用掉。结果今天下午解锁管人歌的时候,+10的始终过了17点直接在商店里显示了,然后我购买报错弹回首页,我才反应过来时区是本地的。2023年了为什么有人写时间不是用timestamp的啊,why?

难怪之前看他FAQ界面想看看有没有编成说明的时候(当时运营还没有在游戏内公告弹窗提示如何编队),看到他写了个“系统时区在日本以外的区域不在支持范围,请将系统设置为日本时区游玩”


以上,暂时想到的评价就是这些,下周有机会补一下动画看看。

(olivier谱太塞了…………)

8 thoughts on “谱面粗看 – 世界大明星梦幻星辰”

      1. 用msgpack是打开了
        但内里只是一堆buffer的数值
        而 mastermemory 是如何用的…

  1. 大佬你好 我想问一下本地的那些bundle档是如何打开的
    用AssetStudio打开不了…

    1. 在设置里随便写一个2021.3.17f3不就行了,版本号我都记不清乱编的,反正这游戏是个2021

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax