关于KrKrZ的CXDEC加密大批量提取解包游戏文件的思路与方法技术的总结初步

逆向工程 实用技术 算法KrKrZCXDEC魔女的夜宴柚子社hxv4天使纷扰柠檬即兴曲
7340 编辑于

本文Python代码与文章内容遵循MIT协议

Textile
Copyright <2025> <Kinotern>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

仅供逆向汉化学习参考,不得用于其他非法用途


本文重点在于制作映射表格以快速对CXDECExtracter提取的游戏文件分类重命名

本文参考:

https://www.kungal.com/topic/2670

使用项目:

HXNames.lst

https://github.com/MLChinoo/hxv4_deobf_tools

Steamless:

https://github.com/atom0s/Steamless

撞库程序源码:

https://github.com/YuriSizuku/GalgameReverse/blob/master/project/krkr/src/krkr_hxv4_dumphash.cpp

Steam的KrKr游戏处理

所需的文件在

https://github.com/Kinotern/CXDECNameRipper/tree/main/Steam去除drm

Steam版本的游戏提取需去除DRM后使用

如果不想这么麻烦可以选择下HF商城的官中


Steamless脱壳

Steamless打开游戏exe

image.png

选1257项

点Unpack File

image.png出现绿色字,提取成功

image.png游戏目录会有一个叫SabbatOfTheWitch.exe.unpacked.exe


替换api

将steamapi.dll覆盖过去

Dracu-Riot的也是,不要用steamapi64.dll来提取

image.png

覆盖后报错直接是正常的

image.png

然后出现弹窗Malformed exe/dll detected或无法找到入口


原因是没绕过程序startup.tjs的if link fail逻辑

本小工具优化了一些修改startup.tjs的方法

并测试了魔女的夜宴,星光咖啡馆,病弱妹,DR,LLLJ这几个游戏都可以patch掉

其他若失败请提出issue

https://github.com/Kinotern/CXDECNameRipper/tree/main/去除MFD弹窗

提取XP3内容

接下来使用CxdecExtractor拿到加密的文件夹映射表

https://github.com/Kinotern/KrkrExtractForCxdecV3.3Extra

将处理好的游戏程序拖到CxdecExtractor.exe上放松开即可

然后有这个窗口

image.png点击add files,把所有XP3选中打开

或者把xp3拖拽到弹出窗口以创建任务队列

image.png

选择打开后会立马开始任务队列处理等待即可

image.png

完成后关闭游戏再重新拖到提取程序打开

然后点第二个加载字符串Hash


实时dump与运行时顺带找到名字恢复请看如下

https://github.com/Kinotern/KrkrExtractForCxdecV2Extra

走完游戏流程不一定百分百能恢复,但是把大部分都恢复好了

结束游戏前请点击停止实时恢复按钮




使用hxv4_deobf_tools制作补充表格

我稍微魔改了一下改成GUI形式我懒得在代码文件指定路径这么难受了

直接打开选择文件夹就可以干活了,不过在这之前要准备一些些文件


KirikiriTools动态提取文件

批量提取Scn剧情脚本

吐游戏scn

https://github.com/Kinotern/CXDECNameRipper/tree/main/指定文件提取/吐游戏Scn

第一种让游戏自己吐出来

在使用之前确保以下文件

Version.dll

unencrypted.xp3

patch.xp3

不要出现在目录中,如果你下的是汉化版记得把汉化补丁移到别的目录

启动时候不要启动汉化版exe请启动原版日版exe


第二种解包汉化补丁xp3

garbro2解包汉化补丁中的Scn到指定目录即可

撞库提取记载表

创建一个files.txt

里头写入如下字段

简单无日文的文件名编码建议为utf-16le

若进行更复杂的文件撞库一定要保存为utf-16le不带Bom!

javascript
base.stage
cglist.csv
soundlist.csv
charvoice.csv
imagediffmap.csv
savelist.csv
scenelist.csv
replay.ks
_chthum_index.pbd


将version.dll(切记不要与kirikiritools的dll混在一起二者注入的东西不一样)复制到游戏目录

打开游戏

然后打开游戏后出现这个弹窗就是在撞库了




等待一会后

[src/krkr_hxv4_dumphash.cpp,216,calc_thread,I] try to calc names in dirs.txt [src/krkr_hxv4_dumphash.cpp,218,calc_thread,I] calculate finish, results in files_match.txt, dirs_match.txt

直接关掉命令窗口就可以快速关掉游戏了

即可在游戏目录找到files_match.txt与dirs_match.txt

里头记载着撞库得到的信息

本文版权遵循 CC BY-NC 协议 本站版权政策

45 条回复

柚香希冀
发布于

@kinotern #33

就比如调色板的9nine系列(第一部官中除外),还有猫娘乐园那种,目录里有.xp3还有.xp3.sig这样的

kinotern
发布于

@柚香希冀 #35

这种krkrextract解包,注入汉化kirikiritools

柚香希冀
发布于

@kinotern #36

有加密的,程序会跑一遍,然后拆出来空的文件夹

kinotern
发布于

@柚香希冀 #37

xp3.sig只是一个哈希值记录表,没必要管

柚香希冀
发布于

@kinotern #38

老哥能加个qq嘛 uid:2514536515

Lite
发布于
kinotern
发布于

@Lite #40

差不多,但是那个填什么字典的太难用了

舞释
发布于

UP我用AI修改了一下image.png能做到16线程处理了但是还原的有点少怎么办

python
kinotern
发布于

@舞释 #42

加油你可以的,我还没有时间抽空重构这个重命名项目,至少有个思路吧[苦笑]

实时dump跑游戏把缺漏的也找出来也行💤

s310535
发布于

大佬好,最近DRACU-RIOT!在steam上架了,游戏更新后只用steamless和steam_api.dll就会跳Malformed exe/dll detected错误 我试着照网盘里的影片去操作但无奈我技术不足加上視頻没有声音,有些地方实在看不懂在做什么或怎么来的 希望大佬能来破解这款游戏然后顺便把破解过程录下来(希望能详细一点)让小弟我学习一下(跪求

kinotern
发布于

@s310535 #44

私信你了,原始视频仓库作者账号挂了

星の在り処
发布于 (编辑于 )

首先学习技术是好的,但是俺寻思着...既然KrkrDump能提取出文件了,那还有撞库的必要吗...还是说我眼瞎忽略了什么必要条件?

就目前我测试过的,魔女的夜宴,谜语小丑,千恋万花,都可以用KrkrExtract直接解,GARBro有内置密码的也可以直接解。艹猫好像没加密?忘了,反正很简单。就是新出的DRACU-RIOT!麻烦一点,但是KrkrDump还是能提出来,就是...这个没有用pimg了,用的另一种格式的tlg,文件头TLGqoi,TLGref,目前没有工具用...
关于过steam检测的,有一个办法就是把steam.xp3拆包后把里面的文件内容清空,再封回去就可以了,不过如果涉及到加密就不怎么好弄了...


好吧引用的链接没点开看..如果说能免Dump,那还是挺方便的,但是按楼主你介绍的方法,似乎并没有这一点,那么就还不如直接Dump了

kinotern
发布于

@星の在り処 #46

防止一些东西缺漏,保证lst完整性,scn最后也会提取出来里头的关键信息,加一份现成的模拟器版本,再把里头的所有东西汇总为一个文件列表,撞库制作映射表的前置条件,你提到的草猫及老版本的krkrz不是一个加密,老版本的很友好一下子是可以解出来。本文针对经cxdec这个dll加密的纯哈希名xp3封包,不过这个把steam.xp3拆包后把里面的文件内容清空的跳过检查有点意思,我稍后试试检验

星の在り処
发布于 (编辑于 )

@kinotern #47

你试试这个游戏 OPPAI Succubus Academy Sucky and Busty Demonic and Lusty/吹弹!丰盈!波涛汹涌!异世界魅魔学园!,它原版根本就没调用steam的相关api(至少验证之前),全部内嵌到exe里面...所以网上的破解补丁都是修改后使用另一个exe来调用它...但是这就有个问题了,这样的话所有的把启动器exe拖入到其他exe打开的这种解包方式就都用不了了...这种怎么解?

星の在り処
发布于 (编辑于 )

(。>︿<。) 已经一滴回复都不剩了哦~