看到没有?乱码已经正常,字体大小也正常了。汉化方法如下:
1、用非标宏来提取和写入翻译
2、显示乱码
3、此为QT5编译的程序,经用非标宏中的字符编码修改器反复测试,为toLocal8Bit函数引起,改为toUtf8函数,全部写入即可
4、运行看看,是否显示正确,但是字体太小,QT程序的通病
下面我们来调整字体大小,这里比较复杂
1、我们用 x32dbg 来调试,先设置一下菜单中的选项为如下值
2、加载程序
3、搜索当前模块中的跨模块调用,搜索完成后,输入Font,缩小模块名称的范围
4、找到 setPointSize 函数单击,程序自动转入 CPU 界面
5、我们知道,setPointSize 只有一个大小参数。所以只要查找这个参数即可。
往上翻,看看输入到 setPointSize 函数的参数值是什么?
我们看到了 push eax,这是输入 eax 寄存器中的值,可以确定该函数使用了 eax 中的值。
我们在此下断,再一直按 F9 运行到下断的地方,看到右边 eax 寄存器中的值为 8,如图:
6、那么这个 8 是怎么来的呢?
我们再往上翻,发现有 dec eax 语句,它的意思是 eax 值减去 1,那就说明原来的 eax 值原来是 9,9 不正好是我们中文的字体大小吗?
那我们把它取消掉,汇编为 nop,再重新开始按 F9 直到断点,再看看 eax 寄存器中的值是不是变成 9 了。
7、再把修改 dump 出来,做成补丁,保存为文件。
8、运行看看,是不是正确了啊
最后,感谢济友汉化爱好者QQ群、朵朵、永乐大师。