对某手游的拆包记录
最后更新于
解密函数已失效,本文仅供参考。
本人对手游拆包是以学习交流为目的,且不用于任何商业用途。
安卓模拟器 or Android手机一台
Visual Studio Code
AssetStudio (原UnityStudio)
GFLive2DDecrypter(原文件已经很久不更新了,这里也不作提供)
官网或其他途径获得安装包
安装并运行该手游,下载完整数据包
取得数据包及释放游戏数据
在电脑上下载app可直接获得apk文件,以下Step 1为已安装应用的提取方法。
提取安装包
Android应用安装后,会在系统内部保留一份基础的安装包,属于应用运行的必要文 件,因此只要应用还存在于设备上,该应用安装包就可以随时获取。 访问这个安装包需要设备获得Root权限。
进入模拟器并打开文件管理→设置→常规设置→访问模式→超级用户访问模式→允许
设置完毕后,回到文件列表可以看到地址栏为 /
\ storage
\ emulated
\ 0
点击地址栏上的/
,然后找到data目录,打开后进入app目录,找到该游戏的文件夹,再次打开便可看到其保留的apk文件。
将apk文件选中,点击左上角≡
→内部储存设备→$MuMu共享文件夹→操作(右上角三个点)→粘贴选择项,然后打开模拟器底部的"文件共享"即可。
提取数据包
打开文件管理器,进入/
\ storage
\ emulated
\ 0
\ Android
\ data
,选中目标应用的数据包文件夹,通过任意方式传输到PC上即可。
释放数据
将所获取的.apk文件后缀名改为.zip,使用压缩软件进行解压,解压后如图所示。
关于判断游戏是否使用Unity引擎
在解压出来的目录中,进入assets
\ bin
\ Data
,若能看到Managed
与Resources
两个文件夹,则可以确定游戏为Unity3D制作。
打开AssetStudio后可看到如下界面:
选择Options选项后点击Export options,进行如下设置:(适用于v0.15.32)
拆包后加载安装包内的Data文件夹以及数据包内的Android\New文件夹,可看到游戏文本、立绘等文件。
Filter Type选择All,然后Export → Filtered assets,这样提取出来的文件都是以Asset List预览中的Container路径放置,不会被打乱。
一般手游的拆包就到此为止了,其他后续操作都是转换文件类型(比如音频等)或者整合图像(比如立绘等),在此不多作介绍。
我本次目的是为了提取游戏中的Live2D文件,提取出来后发现除了贴图,均为二进制文件,即文件被加密。
用VS Code查看model.json文件会提示(如图):
而moc文件用IDE打开后发现并没有相关moc的头字符。
上网搜索了一下,发现有大佬做过该手游的Live2D解密,我甚是高兴。 但看了看时间,3年前的东西了,但是评论区半年前表示该代码仍然奏效,我自己试了试,果然可行。
下面贴上代码:(摘自Live2D|Perfare's Blog)
版权属于: Perfare's Blog 原文地址: https://www.perfare.net/1162.html 转载时必须以链接形式注明原始出处及本声明。
注:动作文件也进行了加密。
顺便一提,原网址中说的解密函数塞在libLive2DEncryption.so
里,现在已经连文件都荡然无存了。
眼睛变色可能是录制的问题,其他都没什么大碍。
附赠另一款手游的立绘辅助处理工具: AzurLanePaintingExtract