欢迎光临散文网 会员登陆 & 注册

Switch游戏《超侦探事件簿 雾雨谜宫》UE4解包笔记

2023-07-10 15:51 作者:NB_XX  | 我要投稿

最近在玩《超侦探事件簿 雾雨谜宫》这款弹丸精神续作,里面的小死神的各种颜艺表情,让我想起之前的黑白熊非常的可爱。

就是她↑

在有着同样想法的群友怂恿下,开始了痛苦的初次解包之旅。

需要的工具我会放在文末跟参考文章链接一起,并在文章中用加以标注。

解包本体NSP获取NCA资源文件

首先拿到游戏的ROM,我是从Switch520上下载的nsp文件。随后是本次解包需要的prod.keys[注 1],当前最新的V16.0.3测试可用。

第一个是BASE是游戏本体,而第二个是更新包,我们要提取的表情就在游戏本体里。

下载游戏文件解包工具:NCA-NSP-XCI_TO_LayeredFS_v1.6.rar[注 2],把下载的prod.keys放在同一的文件夹下。

打开脚本NCA-NSP-XCI_TO_LayeredFS.bat,第一个界面是选择要处理的文件类型,因为我们本次的解压的是NSP商店包,所以选择 2.  eShop NSP。

之后选择对文件进行的操作,我们选择1.  Extract Eshop NSP。

之后脚本提示我们把文件拖入窗口,选择刚才的BASE文件然后回车。

在解包结束后生成一个Extracted_NSP的子文件夹,里面会有些nca、cert、tik文件,其中后续会用到的文件有

将tik文件拖到NCA-NSP-XCI_TO_LayeredFS工具包里的脚本获取titlekey.bat

这个32位字符串就是我们后续解包NCA所需的titlekey。

提取NCA文件里的Romfs文件夹

这一步骤我们还是用到脚本NCA-NSP-XCI_TO_LayeredFS.bat,选择需要提取的文件类型1.  NCA,随后选择2.  Extract Ecrypted NCA提取已加密的NCA包,之后选择2.  Romfs folder我们把提取的文件释放到文件夹,之后拖入上面提到的体积最大NCA包,输入获取的32位titlekey后回车。

如果解包顺利你可以看到最后有如下的输出,若提示prod.keys不存在等信息,尝试把prod.keys 重命名为keys.ini后重新解包。

这告诉我们UE4引擎的资源包pak和ucas文件都已经成功输出到Extracted_NCA\romfs\RC\Content文件夹下了。

确定所用引擎版本

需要用到另一个脚本UnrealPakSwitchv10[注 3],我们把提取出的pakchunk0-Switch.pak复制到解压后的文件夹内,将pak文件拖动到脚本1.check.cmd就能看到当前使用的UE引擎版本。

一定要把pak文件复制到脚本同一文件夹下。因为作者的编写问题,脚本会以pak包所在文件夹的相对位置去调用u4pak.py,如果pak文件在不同文件夹就无法调用

脚本提示我们pak包版本可能是11或者11.27。按照脚本发布作者的原帖可以找到,对应的引擎版本是Unreal Engine 4.26.2 (for v11 *.pak),或Unreal Engine 4.27.2 (for v11.27 *.pak)。

题外话:UnrealPakSwitchv10本身设计也有解压pak包的功能,但本次教程并没有使用这个方法。其一需要下载原UE4引擎再调用其中的UnrealPak.exe,下载UE引擎略微麻烦。其二超侦探的包虽然没有加密,但是提取出的并不完整,原因不明。

非加密UE4的资源查看方式1:UnrealPakViewer

在前面的操作中我们已经提取到了pak和ucas文件,以下就进入到常规的UE4引擎游戏解包流程。

查阅资料的时候我发现大多数都是针对pak的解包教学,但是很少有人提到另一个文件ucas,而在我们解包出来的资源文件中,ucas明显应该是包含更多资源的。

查询了UE官方wiki[注 4]和一些论坛讨论后逐渐了解到,在UE4和UE5引擎更新了一种打包方式,优化原来的pak包的资产存储模式来加快加载速度。可以简单地理解为:

.pak 存储访问率低的文件,在《超侦探事件簿:雾雨迷宫》中主要存储游戏剧情动画,音乐等。

.utoc 是一个描述文件,主要记载容器文件压缩格式以及是否被加密。

.ucas 存储游戏中的主要数据,在本作游戏中所有的场景贴图,人物建模和动作,以及UI等资产都在这个包里。

UnrealPakViewer[注 5]是一个界面友好的pak查看器,README中描述也支持ucas文件,但是使用过程中发现只能读取到ubulk文件,无法直观的看到素材资产。怀疑可能是没办法导入utoc的原因。

下载工具后打开脚本Run.bat就可以把pak包拖进窗口使用树形图方式阅览。

pak包中主要的内容集中在RC/Content/CriData路径下,awb是音频格式,里面存放着游戏的BGM和效果音以及人物配音。在Moives文件夹下的usm文件是游戏的剧情动画,而RC/Content/RC/Ul/Font/FontFace路径下存放的是游戏所用字体。

右键Extract选择提取文件到文件夹,对于usm视频文件选择用vgmtoolbox[注 6]工具来查看。

VGMToolbox → Misc . Tools → Stream Tools → Video Demultiplexer 打开视频提取工具,格式选择USM,右侧勾选提取音频与视频,按照提示将文件拖入上方的Drop Files Here区域,等待转换进度条完成,可以在原usm文件所在文件夹找到同名m2v文件,主流播放器即可正常播放。

这里提取的是唯一内嵌中文字幕的视频文件,其他均为字幕挂载

非加密UE4的资源查看方式2:UEViewer

上文说到无法直接提取的ucas文件,也有其他更强大的软件可以进行破解,这里使用的是最强大的UE引擎提取软件UEViewer[注 7]

文件输入我们NCA部分提取到的整个Paks文件夹地址,勾选Overmide game detection,引擎选择UE4 4.27版本,这里不勾选具体引擎版本虽然可以阅览资源目录,但是在预览的时候无法正常查看模型和贴图等资产。

下面的Platform可以选择游戏原始平台,这里我们不勾选switch的原因是UEViewer论坛中有帖子[注 8]提到勾选后纹理显示可能会不正常。

打开资产树状图,忽略掉Engine和Plugins(引擎与插件)两个配置文件夹,我们主要的提取内容在RC/Content/RC路径下,也就是新增的ucas文件包含内容。

UEViewer在打开无法正常解析的文件时会整个软件崩溃,所以建议pak文件夹常开随时准备重启UEViewer后输入path。此外UEViewer的文件提取并不全,像RC/Content/CriData路径下的音频文件在UEViewer中没有正常显示,暂时没有查到相关解决资料

超侦探的人物模型在RC/Content/RC/Characters文件夹下,但是并不是按照人物命名分类的,而是编号+子编号的方式。例如002代表小死神,003代表大死神,后续子编号则代表不同场景下的模型。

子文件夹分别对应材质Materials、模型Meshes、动作Motins、分支Sequence、纹理Textures,下面的部分uasset文件可以用UEViewer内置的预览器预览。

我们打开Chr00300文件夹,这个对应了大死神的主要场景素材文件,

双击打开阅览器后原本的文件树状图会消失,快捷键O可以再次打开

而我们想要提取的表情包则是附着在对话框上的(如下图),那么它应该属于游戏UI的一部分(这里感谢麻衣舞HalfMai的指点),顺着这个思路开始分析UI文件夹中的结构。

请原谅我手机拍摄屏幕的懒惰行为,NS的截图WIFI分享太反人类了

在UI文件夹中,可以看到类似于菜单Menu、对话记录BackLog,谜迷宫NzUI、游戏标题Title等子文件夹,其中COMMON这个UI引起了注意。

至此耗费了大概10个小时,解包、分析试错部分9个小时

终于我们在UI/COMMON/Character/FaceChip下找到了想要的对话框表情包,而旁边的FaceEffects自然就是表情动效的其他素材。右键文件夹选择Export folder content,就可以将整个文件夹内的素材用UEViewer内置的转换器导出为TGA图片格式,至此我们的解包之旅终于告一段落。

还没完?图片的格式转换

TGA的图片格式虽然可以用常规图片浏览软件和PS正常打开,但是透明通路部分是无法正常查看的,需要转换为PNG等更通用的格式。原本自己搓轮子的时候发现已经有前人做好了工具tga2png[注 9](开源最棒!),我需要做的只有写一个批量转换脚本即可。

将以上内容保存到文本文件,修改后缀为bat。将下载好的tga2png和保存的脚本与TGA图片放在同一文件夹,双击即可批量转换。


“累死小爷了”

本次解包出来的小死神与大死神表情包也分享给大家,See You Next Time。

https://nbxx.lanzouj.com/ioPvZ11u39bg

这一次的解包虽然收获颇丰,但是仍然有很多我没有涉及到的内容,有待后续学习:

  • xci、nsz格式的解包

  • UE4引擎的aes key提取

  • UE5引擎的解包

  • UE Viewer中无法查看部分文件的真实原因

  • 模型的提取与导入

  • UE引擎游戏制作实操(地图文件和流程文件的理解)

本文涉及到的参考文章与工具下载链接如下

  1. https://prodkeys.net/

  2. https://shipengliang.com/games/switch-%E8%A7%A3%E5%8C%85-%E5%9B%BE%E6%96%87%E6%95%99%E7%A8%8B.html

  3. https://gbatemp.net/threads/how-to-unpack-and-repack-unreal-engine-4-files.531784/

  4. https://docs.unrealengine.com/5.0/en-US/zen-loader-in-unreal-engine/

  5. https://github.com/jashking/UnrealPakViewer

  6. https://sourceforge.net/projects/vgmtoolbox/

  7. https://github.com/gildor2/UEViewer

  8. https://www.gildor.org/smf/index.php/topic,8627.msg45495.html

  9. https://github.com/shusaura85/tga2png


Switch游戏《超侦探事件簿 雾雨谜宫》UE4解包笔记的评论 (共 条)

分享到微博请遵守国家法律