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

逆向工程 实用技术 算法
9367 编辑于

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

本文参考:

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


使用项目提到的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


XP3静态解析文档参考:

https://github.com/Kinotern/cxdec-hxv4-static-analysis


lst生成扫描思路:

https://github.com/Kinotern/Cxdec_Tools


静态提取XP3

无需运行时

Releases · Kinotern/CXdecStaticExtractor

rust语言开发,可批量解包

请在方案库填写会社/游戏/子版本

然后在解包队列选择你相应的游戏即可

lst需要自行维护,当前版本创建lst生成的映射暂未确认能否解包

无lst解包则只能解包出无名纯hash文件


运行时解包:

如果是steam游戏请看下面的脱壳与替换dll教学

https://github.com/Kinotern/KrkrExtractForCxdecV2Extra



Steam的KrKr游戏预处理

后续如果需要

实时dump获取这个映射lst表需要去掉壳子

所需的文件在

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


如果不想这么麻烦可以选择下HF商城的官中,有一些游戏在HF暂未提供下载

如魔女的夜宴


Steamless脱壳

Steamless打开游戏exe

image.png

选1257项

点Unpack File

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

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


替换api(项目文件已含此dll)

将steamapi.dll覆盖过去



Dracu-Riot不要用steamapi64.dll来提取,应该是使用32位版本的程序提取

image.png

覆盖后报错直接打开是正常的

image.png

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


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

本文编写的小工具可以解决大多数这样的问题

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

其他若失败请提出issue

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



实时dump与运行时

顺带找到名字恢复请看如下

https://github.com/Kinotern/KrkrExtractForCxdecV2Extra

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

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



撞库确认此项存在

创建一个files.txt

里头写入如下字段或许你要撞库确认的话

编码建议为utf-16le

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打开的这种解包方式就都用不了了...这种怎么解?

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

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