Dir-A / Dir-A_Essays_MD

自己的一点感悟

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[汉化问题] NEKOSDK引擎汉化问题

adsf0427 opened this issue · comments

在尝试汉化游戏 [WAFFLE] 毒舌悪魔とムッツリ天使との四畳半暮らし时,提取脚本并修改游戏文本为中文字符后,使用GBK编码重新注入文本时,游戏显示出现乱码。

步骤:

  1. 使用 engine_nekosdk 提取脚本并修改游戏文本。
  2. 将文本的编码设置为GBK。
  3. 将修改后的文本重新注入脚本。

实际行为
游戏中文本显示为乱码。

首先使用WinHex查看导入到脚本的编码是否为GBK,不是则请修改成GBK导入

1

修改DBCS字符的边界检查(SJIS范围改到GBK范围)

在x32dbg中打开exe,此时停在ntdll.dll的代码区(注意窗口标题显示的模块信息)
QQ截图20240518132025
点击菜单栏下方的->会默认停在游戏exe的入口点(注意窗口标题显示的模块信息,此后所有操作都需要在这个模块内)
QQ截图20240518132110
在反汇编窗口右键搜索常量
QQ截图20240518124501
弹出该窗口,第一栏输入0x9F
QQ截图20240518124535
选中cmp开头的这个结果并双击,自动跳转到反汇编窗口
QQ截图20240518132646
观察现在的反汇编窗口,如果刚刚选中的指令的其上是一个0x81则该位置正确
QQ截图20240518124656
选中 cmp al 9F 按下空格,编辑该条汇编指令,将0x9F修改成0xFE
QQ截图20240518124817
QQ截图20240518124854

修改CreateFontA的charset

两个选择

  • 使用HookFont自动处理
    直接hook CreateFontA 修改charset的同时也可以修改字体
  • 手动修改(仅修改charset)
    一般来说这个引擎只有一处统一调用CreateFontA,则只需要搜索所有的Intermodular call既可以
    依旧是在反汇编窗口右键
    QQ截图20240518125215
    输入筛选字符串 CreateFont 可以看到唯一结果,双击转到反汇编窗口
    QQ截图20240518125256
    其上有个push 80,与刚刚方法一样,修改成0x86
    QQ截图20240518125404
    修改完成过点击菜单栏下方的创可贴图标,表示保存修改的内容,在弹出的对话框中确认修改的内容后保存文件
    QQ截图20240518125618

效果

QQ截图20240518125916

附件

devang4h_mod.zip

感谢,解决了