galgame CG提取教程
Galgame 引擎
首先,你需要判断你想解包的galgame所使用的引擎。当前广泛使用的galgame引擎主要就是Krkr(包括相关的krkrz系列)。此外在作者手中的50部galgame中还有YU-RIS,Musica,Nscripter等引擎,当然这些都比较少见了。
Galgame引擎大体上决定了封包的格式与加密的方式,对我们后面搜集资料进行解包十分重要,务必判断清楚。
Krkr(z)
这一引擎的特点是包含.xp3文件,基本上有.xp3文件的可以直接确定是Krkr或其衍生的引擎了。柚子社的游戏、调色板社的大部分游戏、还有死馆真百之类的比较有名
Krkr(z)引擎的CG包含在.xp3文件中,并且基本上都进行了加密。现有技术基本上是Hook运行时的游戏进程,直接在游戏进程中提取相关文件。
其他引擎
是的。。。其他引擎直接合在一起讲了。因为除去Krkr的加密以外,其他引擎的游戏基本都是没有加密的,只是使用了特殊的储存格式,使用相关工具基本就可以解包了
本来我是不信的,但是使用相关工具真的直接打开了大部分的游戏文件。。。当然不排除是汉化组的功劳,已经帮我们解密了相关的文件。
提取CG文件的工具
GARbro

这位简直是Gal解包领域最高的山。
大部分小众的游戏引擎都可以直接解包,Krkr的xp3文件有些也是可以的,原版已经很久没有维护了,但是有Fork的版本现在仍在维护(Garbro-Mod),可以试一下的。
使用方法很简单,遇到看起来像存储CG的文件直接双击即可。顺便一说,存储CG的文件大都名字里面带有cg、ev等,并且文件较大。
可能会要求选择加密算法,根据游戏的英文名称选择即可。不知道游戏英文名的可以去VNDB查找

KirikiriTools
上一个工具几乎可以解包所有老游戏。但是他解包出的一些文件可能还是加密状态(比如一些csv文件)。我们可以使用这个工具,从运行时解包一部分解密的文件。
我们使用到的是其中的version.dll。
将version.dll拷贝到游戏的根目录,并且创建文件extract-unencrypted.txt。之后启动游戏,推进剧情即可。

一些游戏可能会出现失败的情况,甚至会乱码,不过我们提取到我们想要的东西即可


KrkrDump
我也是最近才发现这个工具。尝试下来应该是对新游戏Krkr(z)支持最好的。比如最新的asnine,我尝试过KrkrzExtract、version.dll等方法,均无法解包。
和KirikiriTools一样,复制到游戏根目录。并在游戏根目录创建文件KrKrDump.json,填入以下内容
{ "loglevel": 1, "enableExtract": true, "outputDirectory": ".\\dump", "rules": [ "file://\\./.+?\\.xp3>(.+?\\..+$)", "archive://./(.+)", "arc://./(.+)", "bres://./(.+)" ], "includeExtensions": [], "excludeExtensions": [ ".ogg" ], "decryptSimpleCrypt": true}**然后在游戏根目录创建dump文件夹
之后需要拖拽游戏exe文件,使用KrkrDumpLoader.exe打开,出现一个命令行窗口即为正常。可以在dump文件夹中找到提取出的文件。
提取CG文件
使用以上工具尝试解包游戏,CG文件一般是png类型的文件,通常以ev开头,通过缩略图可以很好的辨识,直接取用即可。
如果没有找到png文件,看看能否找到pimg文件,一些Krkr引擎的游戏(尤其是柚子社)使用这种格式。
注意:CG是懒加载的,也就是说,如果是使用KirikiriTools或KrkrDump提取,需要一张张加载CG。可以在鉴赏模式里面过一下。

如果都没有找到,尝试换一个文件或换一种方法。
如果以上方法无效,推荐这一篇文章,里面讲述的解包方法可能更详细(其实本文前半部分很多地方都是参考了这篇文章)
但是pimg的合成,其实有更好的方法,请回来再继续看。
PIMG文件的转换
写完才发现,那篇文章里面也有人在7月21号的时候提出了这种方法。。。
其实这种方法早就有了,原项目是好几年前的了,不过关注度一直不高。。
发现的时候我都已经写完了,所以就还是发出来吧。
很多文章中描述的PIMG文件转换都是使用像素吻合度穷举的方法,但这种方法需要手动进行且有错乱的bug。
其实可以通过pimg本身的元数据和imagediffmap,直接批量转换出所有的CG。
我们需要以下文件:
- 前面提取的ev*.pimg
- imagediffmap.csv
其中,imagediffmap.csv一般存在于data.xp3中,动态hook提取也常常能在解包目录中直接找到。

注意imagediffmap.csv应该是这样子的纯文本

如果不是,尝试使用KirikiriDescrambler解密。
除此之外,我们需要python和git运行环境。没有的请自行搜索安装。
转换pimg文件的方法是使用我自己的仓库
其实,这个仓库是fork自这个仓库,但原仓库不再维护且不兼容新游戏。
之后的步骤很简单,先clone我的仓库,并配置运行环境
git clone https://github.com/lizzzhh/PIMG-Decoder-2.gitcd PIMG-Decoder-2python -m venv .venv.\.venv\Scripts\activatepip install -r requirements.txt然后创建pimg文件夹,将pimg文件复制进这个文件夹。

并且将解包得到的imagediffmap.csv替换根目录原有的imagediffmap.csv

之后再venv中运行main.py,CG就会被提取到output文件夹。
python main.py
已在ライムライト・レモネードジャム中测试,旧的柚子社游戏实在懒得试了,如果新版不行可以尝试使用原仓库的代码。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
