我是基于Kimi moonshot-v1-8k实现的AI助手,在此博客上负责整理和概括文章

本文为KrKr引擎游戏解包封包方法的补充教程。主要内容包括: 1. 《恋愛、はじめまして》游戏解包方法: - 使用KrkrExtract.exe或GarBro解包,需注意环境设置。 - 通过Make Universal Patch和新建ProjectDir实现免封包读取。 - 使用winhex修改游戏exe实现直接读取data文件夹。 - 制作补丁时需配合Xp3Pack.exe和version.dll。 - 游戏需在中文环境下打开以正常显示中文。 2. 《見上げた空におちていく》游戏解包方法: - 需要在中文环境下打开exe以避免乱码。 - 对文本文件进行编码转换为UTF-16 LE with BOM。 - 将修改后的文件打包为patch2.xp3。 3. 字体修改方法: - 使用winhex修改exe实现字体修改。 - 使用krkrfont.exe制作预渲染字体文件。 - 修改first.ks和HistoryLayer.tjs文件以应用新字体。 - 将修改后的文件打包为patch。 本教程提供了详细的步骤和注意事项,适用于KrKr引擎游戏的汉化和修改。

编辑记录

2025-03-05 11:05:00 第一次编辑

  • 正文

# 简介

  本文章为对 KrKr 引擎 游戏的解包封包的一些方法的对于 (二) 的补充。

# 教程

# 示例一

以游戏《恋愛、はじめまして》为例介绍解包方法。

  1. 直接使用 KrkrExtract.exeKrkrExtract.dll 进行解包,拖入游戏时会报错:"access violation : the thread attempts to read from or write to a virtual address for which it does not have access"。解决方法是:把 KrkrExtract.dll 重命名为 wuvorbis.dll 就能解决,之后能正常解包。
  2. 或者使用 GarBro 解包,密钥选择:"Kari Gurashi Ren'ai",也能解包成功。
  3. 对于该游戏,可以使用 KrkrExtract 进行 Make Universal Patch 得到 _patch.exe 文件,然后新建文件夹 ProjectDir 用于存放修改的文件,即可实现免封包读取。不过要保留 KrkrExtract.db 和 KrkrUniversalPatch.dll,另外两个 KrkrExtract.exe 和 wuvorbis.dll 删去即可。
  4. 还可使用 winhex 修改 游戏 exe 的 forcedataxp3 相关值为 0(这里已经为 0 不用修改),之后则可直接新建 data 文件夹存放 data.xp3 解包的 data 文件夹里的文件,可以修改里面的文件,不过会优先读取 data.xp3 所以需要移出去,才能读取 data 文件夹。
  5. 本游戏不能用 Xp3Viewer 解封包,不会弹出那个窗口,但有一个方便的方法制作补丁,工具,下载 Xp3Pack.exeversion.dll ,把 version.dll 放在游戏目录下(其实对该游戏可以不放),作用是令读取加密 xp3 包的游戏去读取未加密的包。然后 xp3packer 就是个封未加密的包的工具,与 version.dll 配合使用。 只需要把修改的文件放到一个 patch 的文件夹,然后拖到 Xp3Pack.exe* 就可打包为 xp3 文件,如果游戏中已经有 patch.xp3,则命名为 patch2.xp3,以此类推。对于原本的文件例如 data.xp3,patch.xp3 不用处理。 该工具里的 KirikiriDescrambler.exe 是用于解密加密的脚本的。
  6. 对于该游戏,需要在中文环境下打开,才能显示出中文汉字,如果在日文区域打开,如果是 shiftjis 不支持的汉字,会变成点。之前我的系统由于配置了日文区域和环境,导致一直解决不了变成点的问题。

# 示例二

以游戏《見上げた空におちていく》为例。

  1. 之前遇到的字体一粗一浅,winhex 修改编码无效,原来就是因为环境问题,需要在中文环境下打开 exe 才能成功。然后直接打开该游戏,原来的日文字符会乱码。需要中文环境下转日区运行,才能正常显示日文,而中文字体也正常。
  2. 要想直接打开不乱码,需要对各种文本文件进行转换编码。脚本的中文汉字之所以能正常显示,就是因为在汉化打包回 ks 文件时编码已经变成了 UTF-16 LE with BOM。所以,需要对游戏内所有文本文件,后缀例如:.tjs,.ks,.scn,.csv,.txt,.ini,.func,.asd,.sinfo,.stand,找到这些文件,拖入 EmEditor ,注意,需要在 EmEditor 正确识别编码的情况下,再统一进行编码转换为 UTF-16 LE with Bom。这里有坑是针对 csv 文件,一般用于立绘,可能会不能正常显示,需要额外处理,对于该游戏没有 csv 文件所以不需要处理,详情参考 Gal 汉化入门 #9 KiriKiri2/Z 脚本编码转换
  3. 之后,对于所有需要修改的文件,还是可以都拖到一个 patch2 文件夹(因为目录里有 patch.xp3),然后 Xp3Pack.exe 打包为 patch2.xp3 放在游戏目录即可。游戏就能读取并看到修改的效果。

# 字体的修改

  1. 首先就是 winhex 修改 exe:搜索 C6431780 把 80 -> 86,8A401A8845D7 -> C645D7869090。然后保存。
  2. 修改游戏字体。方法为:
    • 用 krkrfont.exe 制作 krkr 预渲染 tft 字体,首先电脑要安装想用的字体,再在 krkrfont.exe 里选择该字体(注意还是得中文环境打开)。例如这里选择 “霞骛文楷”,然后选择保存目录,再点击创建。

    • 把字体放到 data 文件夹内,确保与 startup.tjs 在同一目录下,然后找到 first.ks 文件,在最初加上例如:

    [mappfont storage="xw.tft"]     //前面保存的字体名词
    [font face="rei"]               //随便写
    
    这里生效的只是脚本的字体。
    • 要是 BackLog 也生效,需要修改文件: data\system\HistoryLayer.tjs ,找到 function HistoryLayer(win, par) ,然后进行下列修改:
    var myfont = 'xw.tft';      //增加的内容
    function HistoryLayer(win, par)
    {
    	super.Layer(...);
    	(HistoryLayer_config incontextof this)(); // configuration
    	(HistoryLayer_config_override incontextof this)()
    		if typeof global.HistoryLayer_config_override != "undefined";
    	name = "メッセージ履歴レイヤ";
    	setImageSize(parent.width, parent.height);
    	setSizeToImageSize();
    	hitType = htMask;
    	hitThreshold = 1;
    	/**/font.height = fontHeight-4;
    	/**/lineHeight = fontHeight-2;
    	font.bold = fontBold;
    	if(verticalView)
    	{
    		font.angle = 2700;
    		font.face = '@' + fontName;
    		font.mapPrerenderedFont(myfont);    //增加的内容
    	}
    	else
    	{
    		font.angle = 0;
    		font.face = fontName;
    		font.mapPrerenderedFont(myfont);    //增加的内容
    	}
    ...
    }
    这样 History 的字体也会修改。
  3. 打包的话,就是把字体文件和修改的例如 first.ks 和 HistoryLayer.tjs 都扔到 patch 文件夹里,再 Xp3Pack.exe 打包即可。

# 参考链接

1.krkr 引擎研究记录 | 网页备份

2.Krkr 引擎工具合集(一)—— 解包封包 | 网页备份

3. 各引擎工具包集合 | 网页备份