绝区零终于一测了!
但是暂没有测试权限只能看别人玩qwq
唉,只能瞎解包玩了。
前言:
工具没有好坏,重要的是你怎么去使用它!
目前发现了 CG 动画、角色语音包&背景音乐&各种音效( pck 文件)、图片素材、贴图、模型是可以解包出来的。
这次把 CG 动画部分放在最后,原因稍后再讲
角色语音&背景音乐尝试解包
还是熟悉的老朋友 pck 文件
在ZZZ\Win_Data\StreamingAssets\Audio\Windows里面可以找到几个 pck 文件
和原神、星穹铁道一样,使用 Extractor 2.5 解包即可。
可以解出来一堆加密的 wav 文件。
然后vgmstream进行解密和转码
https://github.com/vgmstream/vgmstream/
下载完release里面的vgmstream-win.zip(windows系统),解压缩之后,把加密的 wav 文件拖到 test.exe (新版本好像改成vgmstream-cli.exe了)上面就可以转换了,转换完成的音频就可以播放了。
批量转换脚本:
@echo off for /r %%i in (*.wav) do ( "E:\Program Files\VGMStream\test.exe" "%%~nxi" del "%%~nxi" ) pause记得把那个 test.exe 的地方改成你解压完的那个里面的 test.exe
如果转换完不想删除的话,把 del 那一行删掉即可
CG.pck 是 CG 动画的背景音或者通用的声音(比如邦布发出的声音)
CG_VO_CN.pck 和 CG_VO_JP.pck 是 CG 动画中的角色配音
CG_VO_CN 00001.mp3 那是我的保险箱!
Chara.pck 里面是角色的一些音效,比如走路打斗之类的
Chara_VO_CN 和 JP 是角色的语音,比如加入队伍语音什么的
Comic 似乎是剧情中漫画的配音
bundle文件解包
和原神的 blk 文件类似,绝区零用 bundle 格式来存储 unity 的数据
可以使用专为绝区零魔改的 AssetStudio —— ZZZStudio 来进行解包。
Razmoth/ZZZStudio: Modded AssetStudio for Zenless Zero Zone (github.com)
(仓库好像被DMCA了,用这个试试 发布 · Tools / Studio · GitLab )
在github的release页面下载最新版,解压缩后即可使用。
选择左上角的File -> Extract folder,选择绝区零的Win_Data\StreamingAssets\Bundles文件夹,然后等待他载入即可。
注意:载入全部数据至少需要12G内存,请内存不足的玩家不要轻易尝试,否则可能造成电脑死机
另外载入过程中可能会占用数十G的C盘空间,请提前预留好空间。
载入完成后可以在Filter Type选项里面筛选自己想要查看的类型,比如Mesh是模型文件,Texture2D是一些贴图文件和图片,VideoClip是游戏里的一些视频片段,比如屏幕上的广告版、选取剧情章节的动态效果等,Sprite里面好像也是一些图片?
我解出来一个手机端的截图?一些角色的选择头像还有一个月亮?
CG动画尝试解包
与原神和星穹铁道都不同,也可能是一测的缘故,绝区零的CG动画不是我们熟悉的usm文件。
我并没有在类似之前的路径中找到usm文件。那么CG动画都去哪了呢?
细心的读者可能注意到,解包音频的时候有一些有关CG的音频,这说明CG的音频和视频是分开的。
那么视频在哪里呢?
还记得解包bundle文件时的VideoClip吗?这里面的视频大部分都是没有声音的。
恰好,我在这里面找到了一些名为CutScene_ChapterX_XX的文件!
没错,这就是CG的视频文件!
光解出来视频肯定是不够的,起码也得把声音配上。
于是根据时长,我尝试匹配了CG.pck里面的背景音效,都可以匹配上。
正当我以为已经完事的时候,才发现事情没有那么简单。
这样简单搭配上的结果就是,没有声优配音的,只有背影音效和背景音乐的视频,,,
于是又想到了CG_VO_CN.pck里面的文件,然而,这里面的文件文件名只有序号,而且每一个音频文件都是某一个角色说的一小段话,,
也就是说,合并视频的时候不仅每一个角色的配音要单独放到一个音轨里,还要找清楚每一小段配音究竟是在哪一个CG的什么地方,,
由于游戏逆向工程量太大了,现阶段不太可能直接从游戏内找到对应的匹配。
于是,我找到了一些录制游戏实际效果的视频,通过视频来和这些零散的语音一一对照,之后再把他们调整到合适的位置
在忙活了一天后,终于完成了视频的初步版本。
每一个角色都是单独的音轨,,当时因为这个一共做了十二个轨道才完成,,太可怕了
不过听说崩崩崩早期的视频也是类似这种情况,后来改为了usm文件
还是改回usm吧,,这样解太费劲了,,
神秘链接
https://drive.kazuhahub.com/s/wbGCk
本文地址:https://blog.jixiaob.cn/?post=89
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。
然后又翻文件夹发现,有几个blk文件大小很小,几十KB和几十字节的,都没有mhy1的文件头,但是仍然有上述的16字节固定数据。
然后,关于正文最末尾“还是改回usm吧,,这样解太费劲了,,”这句话,我不是很赞同,因为正式服的usm文件照样是加密的,根本看不了,无疑是增加解包难度。
还有另一个发现,虽说绝区零还是unity引擎,但是被mhy加上了内存保护,无法通过内存dump的方法获取数据
最后还有个问题,也是关心mhy系列游戏的解包,那个hoyostudio的的项目不知道还在更新不?GitHub的看上去是被dmca了,但是目前只有这个项目有解包的希望。
那个hoyostudio的新版仓库在今年4月还是多少归档了,估计很难更新了qwq
https://github.com/ToaHartor/GI-cutscenes
https://github.com/BUnipendix/PyCriUsm
https://github.com/acezx-programer/H-SR-cutscene-extractor
https://github.com/donmai-me/WannaCRI
from .decrypt import VideoDecrypter
ImportError: dynamic module does not define module export function (PyInit_decrypt)
PyCriUsm那边的
python setup.py build_ext --inplace 时的输出
D:\RtEnv\py-venvs\venv-3.11\Scripts\python.exe setup.py build_ext --inplace
running build_ext
building 'pycriusm.fast_core' extension
creating build
creating build\temp.win-amd64-cpython-311
creating build\temp.win-amd64-cpython-311\Release
creating build\temp.win-amd64-cpython-311\Release\pycriusm
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -ID:\RtEnv\py-venvs\venv-3.11\include -ID:\RtEnv\miniconda3\envs\py3.11\include -ID:\RtEnv\miniconda3\envs\py3.11\Include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" /Tcpycriusm/fast_core.c /Fobuild\temp.win-amd64-cpython-311\Release\pycriusm/fast_core.obj
fast_core.c
pycriusm/fast_core.c(6463): warning C4244: '=': conversion from 'Py_ssize_t' to 'uint8_t', possible loss of data
pycriusm/fast_core.c(6473): warning C4244: '=': conversion from 'Py_ssize_t' to 'uint8_t', possible loss of data
pycriusm/fast_core.c(8221): warning C4244: '=': conversion from 'long' to 'uint8_t', possible loss of data
pycriusm/fast_core.c(8484): warning C4018: '<': signed/unsigned mismatch
pycriusm/fast_core.c(8781): warning C4018: '<': signed/unsigned mismatch
creating F:\BitPit\digg\PycharmProjects\PyCriUsm-main\build\lib.win-amd64-cpython-311
creating F:\BitPit\digg\PycharmProjects\PyCriUsm-main\build\lib.win-amd64-cpython-311\pycriusm
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:D:\RtEnv\py-venvs\venv-3.11\libs /LIBPATH:D:\RtEnv\miniconda3\envs\py3.11\libs /LIBPATH:D:\RtEnv\miniconda3\envs\py3.11 /LIBPATH:D:\RtEnv\py-venvs\venv-3.11\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\um\x64" /EXPORT:PyInit_fast_core build\temp.win-amd64-cpython-311\Release\pycriusm/fast_core.obj /OUT:build\lib.win-amd64-cpython-311\pycriusm\fast_core.cp311-win_amd64.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\pycriusm\fast_core.cp311-win_amd64.lib
fast_core.obj : warning LNK4197: export 'PyInit_fast_core' specified multiple times; using first specification
Creating library build\temp.win-amd64-cpython-311\Release\pycriusm\fast_core.cp311-win_amd64.lib and object build\temp.win-amd64-cpython-311\Release\pycriusm\fast_core.cp311-win_amd64.exp
Generating code
Finished generating code
copying build\lib.win-amd64-cpython-311\pycriusm\fast_core.cp311-win_amd64.pyd -> pycriusm
结束后复制PyCriUsm目录里的fast_core.cp311-win_amd64.pyd到usm目录,重命名并替换decrypt.pyd文件。
Unhandledexception.System.Exception:EndpointTitanium.Web.Proxy.Models.ExplicitProxyEndPointfailedtostart.Checkinner exception and exception data for details.
--->System.Net.Sockets.SocketException(10013):以一种访问权限不允许的方式做了一个访问套接字的尝试。
atSvstem.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketErrorer ror,BooleandisconnectOnFailure,StringcallerName)
atSystem.Net.Sockets.Socket.DoBind(EndPointendPointSnapshot,SocketAddresssocketAddress)
atSystem.Net.Sockets.Socket.Bind(EndPointlocalEP)
atSystem.Net.Sockets.TcpListener.Start(Int32backlog)
atTitanium.Web.Proxy.ProxyServer.Listen(ProxyEndPointendPoint)
---Endofinnerexceptionstacktrace---
atTitanium.Web.Proxy.ProxyServer.Listen(ProxyEndPointendPoint)
atTitanium.Web.Proxy.ProxyServer.Start(BooleanchangeSystemProxySettings)
atZenless.Proxy.ProxyService..ctor()
atProgram.<Main>$(Stringl]args)
的一个错误,我不知道那个Zenless.Proxy.exe的文件是用什么写的,怎么个原理也没搞懂,如果这个文件搞清楚了然后重写一个应该就可以连上本地的了吧?
不过我忘记了绝区零有没有专属域名了,可以登录的时候拿fiddler抓包看一下
国服
启动器
autopatchcn.juequling.com/download/pclauncher/0.3.0/u0tusjh1lLPb/HYP-Installer_1711789348_ZZSgPbMn_0_9_3_43.exe
压缩包直链autopatchcn.juequling.com/package_download/op/client_app/download/20240408183253_vTHA2z527fho119q/zzz.zip
安卓
autopatchcn.juequling.com/package_download/op/client_app/download/20240408145616_igYLv9zdfakL58ds/zzz.apk
国际服
启动器
autopatchos.zenlesszonezero.com/download/pclauncher/0.3.0/u0tusjh1lLPb/HYP-Installer_1711789454_UwsKtfdl_0_9_3_43.exe
启动器接口
sg-hyp-api.hoyoverse.com/hyp/hyp-connect/api/getGamePackages?game_ids[]=XVclGvfuO5&launcher_id=fo5MoD01dq
压缩包直链
autopatchos.zenlesszonezero.com/package_download/op/client_app/os/download/20240408183416_R8WrHYHbQW7jNMku/zzz.zip
这个视频,我了解到的应该是用ninja提取的,但是我试了,提取的有很多问题