这篇文章上次修改于 190 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
前几天,我的一位朋友问我有关Galgame——天使☆嚣嚣 RE-BOOT!(天使纷扰)的问题,我也就顺手查阅了有关的资料,并提前下载下来,打算有时间就推推。
不过我发现,天使☆嚣嚣 RE-BOOT!在2023年4月28日发行,是柚子社最新的一部作品,所以使用的是最新版的krkr引擎,封包加密方式又发生了变化,导致现在针对krkr引擎的解包工具基本全部失效了。为了后期天使☆嚣嚣 RE-BOOT!的艺术集整理,我也在近几天里开始了针对新版krkr引擎的解包研究:
注意:本篇文章涉及到Galgame解包操作,请不要将解包文件进行任意的出售和未声明的二次创作!
解包毕竟是一种侵权行为,建议资源分享与使用注意场合与时机,确实地保护游戏公司的利益。所有解包过程仅供学习使用!!
再次,该文章面向群众为:对新版krkr引擎感兴趣的人士,以及对某些Galgame艺术集收藏纪念意向的玩家。
初探新版krkr引擎:
这是天使☆嚣嚣 RE-BOOT!的汉化版本:
虽然从文件分布来看,引擎和之前的版本没什么区别,但常用的krkr解包工具(例如krkrzExtract、krkrExtract等)、系列的xp3解包工具,甚至涵盖面广的GARbro都没能成功解包。不过,我在网上找到了一个的针对新版krkr引擎的解包工具——KrkrDump。它由主程序KrkrDumpLoader.exe、扩展KrkrDump.dll以及配置文件KrkrDump.json组成。我们编写好KrkrDump.json,然后把天使☆嚣嚣 RE-BOOT!的启动器拖动到KrkrDumpLoader.exe后,在我们推Galgame的过程中,这款工具就自动把我们在天使☆嚣嚣 RE-BOOT!看到的所有krkr打包类音频、视频、脚本、剧本以及各种图像文件慢慢提取出来,剩下的就是时间问题了!
提取出的部分krkr资源(半解包,未分类):
这样,我们就成功把天使☆嚣嚣 RE-BOOT!的相应文件给提取出来了。
但是,我在提取的一堆文件里又发现了新的问题:立绘合成所必须的坐标文件.pbd竟然没有反编译出来?!
通常,在解包旧版本krkr引擎的封包时,krkrExtract就自带了将.pbd文件反编译成.json文件的功能,所以大部分人一般没怎么注意过.pbd文件的反编译问题。但现在,krkrExtract在第一步解包步骤就不起作用了,更不能完成反编译.pbd文件的功能。而且,现在用的KrkrDump没有将.pbd文件反编译成.json的功能。这个问题就比较棘手。
反编译.pbd坐标文件:
于是,我去网上找了找相应的反编译工具,结果一无所获。在民间大神们没有编写好反编译.pbd文件的相应工具之前,这个问题会一直存在。所以,我先下手为强,开始分析并尝试反编译.pbd文件。
首先,我将一个提取出来的.pbd文件用十六进制编辑器打开:
从上面我们可以看出,这个.pbd文件实际上是TJS类型的文件,也就是krkr引擎常用的脚本文件格式(.tjs、压缩tjs和tjs2100),但除了.tjs类型可以排除外(.tjs类型通常为纯文本),我并不知道这个文件属于哪一个类型的tjs。于是,我就在网上找到解压压缩.tjs和查看tjs2100相应的工具,但结果却是不起作用。我不禁怀疑这个.pbd文件是不是类似于.dll文件的那种二进制扩展文件。
然后,我再用IDA反编译工具打开.pbd文件:
结果发现,这个.pbd文件就是个纯纯的二进制加密文本文件。在不知道加密原理的情况下,想反编译出来简直比登天还难……
而且,我还去krkrExtract的GitHub原项目里找到了项目作者编写的与PBD反编译相关的C++和C源码,结果因为源码错误本来就比较多以及重定向等问题无法编译出独立的反编译工具……
再遇契机:
在研究反编译.pbd文件的时候,一次偶然的机会,我在YouTobe上面看了关于一部分Galgame的汉化教程,其中就包括krkr旧版引擎的封包教程。于是,我突发奇想:krkrExtract自带反编译.pbd文件的功能,但不能解包新版krkr引擎的封包。如果我把我想要反编译的.pbd文件封进krkrExtract可以解包的封包里,然后再进行解包,不就可以顺势把.pbd文件给反编译了?!那就试试看!
偷梁换柱:
于是,考虑到封包的时候最好不要封成带加密的包,我把隔壁的RIDDLE JOKER汉化版本给拉了过来,用krkrExtract解包了patch.xp3:
然后,我把天使☆嚣嚣 RE-BOOT!里面的.pbd文件放到patch里:
然后,我用krkr_upk封包工具进行封包:
并进行再次解包,然后我们看到了久违的由.pbd反编译过来的.json文件:
终于,我们成功将天使☆嚣嚣 RE-BOOT!的坐标文件.pbd给反编译了出来!
反编译后的结果(和原.pbd文件比较):
这种方法只要在未来的新版krkr引擎里.pbd文件的加密方式不发生变化,目前来看可以反编译出所有的.pbd文件。虽然不能一步解决.pbd的反编译问题,但在民间大神们没有编写好反编译.pbd文件的相应工具之前,个人认为是目前最好用方法。