请选择 进入手机版 | 继续访问电脑版

搜索
Hi~登录注册
查看: 69|回复: 2

修改QT5编译的Vertus Fluid Mask软件的乱码和字体大小

[复制链接]

3

主题

4

帖子

30

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
30
QQ
发表于 2018-7-10 13:25:28 | 显示全部楼层 |阅读模式
有会员在论坛中反映了这样一款软件,它是QT5编译的,汉化后一部分对话框出现乱码,并且字体也偏小。
http://bbs.hanzify.org/read.php?tid=216298

下面我们来谈谈这款软件的正确汉化方法:
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群、朵朵、永乐大师。
回复

使用道具 举报

0

主题

2

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 5 天前 | 显示全部楼层
谢谢老师辛苦了  学习了
回复

使用道具 举报

0

主题

2

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 3 天前 | 显示全部楼层
谢谢老师,老师辛苦了
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表