一、抓包分析 – UNI'S ON AIR资源提取逆向全记录

  作为我第一次成功逆向的经历,当我看到密钥的那一刻简直激动不已。前前后后花了半个月时间,虽然绕了一大圈弯路最后才发现原来是那么简单,但是却从整个过程中学习到了非常多的东西,毕竟这是自己第一次成功的逆向经历。为了防止时间久了忘记细节,以及给其他有兴趣的人一个参考,于是用几篇文章详细记录下逆向的过程,希望能对后来者有所帮助。

0x01 起因

  事情的起因是这样的,欅坂出了一个音乐手游UNI'S ON AIR,里面的游戏背景都是先前未公开的Live片段而且其他地方获取不到。那肯定是要想办法把这些片段提取出来啦,不然哪一天游戏停止运营了不就没得地方去看了,这种好东西还是放在自己的硬盘里才踏实。

UNI'S ON AIR的启动画面,这个背景其实就是在播放.usme视频文件以及注意左下角的CRIWARE图标

0x02 抓包

  一般提取资源首先想到的肯定是抓包了,根据安装包的大小来分析,我所找的Live视频应该不会在安装包里,而是在安装完软件后通过网络传输过来的,那这时候抓包软件就派上用场了,首先打开Burp Suite,在手机上设置好代理,安装上Burp Suite的证书,然后打开应用,等到打完一首歌后停止抓包开始分析。Android手机由于Android最新的安全策略抓包失败了,不过还好可以抓到iOS的数据包。

应用的部分抓包记录,由于应用使用HTTPS进行网络传输,只有iOS版本的应用可以抓包成功,Android由于 Android 7.0之后默认不信任用户添加到系统的CA证书导致抓包失败(当然root了之后还是有办法的)

  初次打开应用会有大量的数据包下载下来,简单看了下大概有这么几种文件:.unity3d、.cpk、.mp4和.json,一一介绍如下:

  • .unity3d:这些文件很明显的显示出这是一个Unity3d游戏,这个信息其实对于之后的逆向而言是很重要的。这种.unity3d文件其实是Unity的File System文件,一般储存着Unity游戏所需要的资源,例如图片、文字、场景等等,也可能包含着我所要找的视频。使用这种文件的好处是可以将许多零碎的资源打包起来,节省网络传输,并且这种File System中的文件路径可以直接被Unity引用。既然是文件系统,那知道了存储结构解包得到其中的资源文件并不是非常困难的事情,这个已经有大佬开发出了非常强大的工具AssetStudio,直接把文件扔到里面就可以看到有什么东西。然而我试着解包了一些文件发现这里面似乎并没有包含视频资源。
  • .mp4:如果这些mp4就是我要找的视频文件的话,那么就不会有这篇文章了,刚看到有mp4文件的时候还激动了一下,然而看了下这些mp4文件都是初次进入游戏时各个成员的介绍视频,并没有我所要找的Live视频,白激动了。
  • .json:这应该是游戏的主要API传输了。有各种登录、每日奖励、抽卡等等的请求,基本上想作弊的话改这些请求就可以了,不过我此次目的并不是作弊,而且看了下请求体和响应体都是经过加密的。
  • .cpk:这个后缀的文件我之前并没有见过,Google搜了一下大概也是一种打包文件,并且还发现了一个好用的解包工具VGMToolbox,解了几个cpk文件发现里面有.acb、.awb、.usme三种后缀的文件,简单搜了一下发现.acb和.awb应该是音频文件,.usm是视频文件,但是并没有找到关于.usme后缀的信息,然后发现VGMToolbox也有将.usm文件转换为可以直接用播放器播放的文件的功能,于是试了试把.usme文件放了进去,竟然可以转换,然而打开转换后的文件却发现,根本看不了图像整个是花的。
直接用VGMToolbox将.usme文件转换成.m2v文件后播放花屏

0x03 确定视频文件

  现在基于几点信息可以确定这种.usme就包含着我要寻找的视频文件了:

  1. 它的大小通常四五十MB,正好符合两三分钟的视频大小;
  2. usme的后缀名和已知的usm视频文件非常相似;
  3. 文件名live_movie_xxx非常明显的说明这是Live的视频文件。

  关于这个.usme后缀名其实还是有些疑问的,在网上查不到关于这个后缀名的一点信息,会不会是新版本的格式或者根本就是自己随便起的?如果这是一种新创造的视频压缩格式,只有用专门的解码播放器才可以播放,那就很麻烦了。

  另外在网上也搜了一下这个.usm视频文件的更多信息,在一个2ch上关于游戏音视频提取的帖子『【ムービー・画像】吸い出そう 5【音声・BGM】』中找到了另一个转换.usm的工具,后面才发现其实VGMToolbox里面关于.usm转换的部分就是来源于这个帖子中的代码。以及一篇与我想要做的事情类似,不过是提取音频的逆向分析博客『CGSS 核心反向过程实录』。

  看完后大概了解了,这些音视频一般会被一个密钥加密,知道了这个密钥就有可能用在2ch上找到的工具解密出来。然而这已经超出最初的预想,本来以为只是抓下包就可以直接获取到那些视频,就像抓的那些mp4文件一样简单,另外我也不确定这个usme和usm到底是不是一个东西,于是提取视频这件事就暂时搁置了。

5条评论

  1. 你好,看了这篇文章之后对逆向有了新的认知,但是在同样是有criware标志的游戏ザンビ THE GAME里,虽然我也拿到了key,但是在逆向过程中发现似乎该游戏本身自带加密,不知道大佬是否能够帮忙解惑,感谢

  2. 大佬好,很感谢您分享的这系列文章,
    我本身也是坂道粉丝,从您的文章中学会了如何提取视频,
    乘着上面有人起了头,想请问也是坂道的游戏 ザンビ THE GAME要如何解密卡片资源?
    视频部分我都能顺利解密,但这游戏将unity3d、jpg另外做了加密,
    所以虽能从抓包中获得但都无法解开,
    之前想着虽然我不擅长解密不过可以自己慢慢研究,但前几天营运公布游戏即将停止营运,
    只好来打扰您了,想请大佬能否私信指点指点,万般感谢。

    1. 这…我并没有玩过这个游戏,不过如果是游戏自己加密的话需要去反编译Unity3d的C#代码了,如果用了原生编译就需要反编译看汇编代码找密钥了,具体可能会很麻烦。
      当然你也可以留个apk包的链接,我有空的话会看一看。

发表评论

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