·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 特殊汉化 >> 干货-如何逆向解决QT程序汉化中的乱码问题    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

干货-如何逆向解决QT程序汉化中的乱码问题

作者: 葫芦娃很厉害 来源:逆向驿站 时间:2019-02-03 点击:786

原文链接
干货 - 如何逆向解决QT程序汉化中的乱码问题

 

一款QT开发的国外软件,大概率是没有做中文支持的,所以你汉化中,不论怎么设置编码都一定是乱码。面对这个问题,你去互联网上找答案,答案却大多是复制粘贴的开发中解决乱码的文章,可是我们是要逆向中解决,于是吾爱破解、汉化新世纪等找过来,盘搜搜个遍,发现基本不是资源过期就是驴唇不对马嘴的抄袭贴,所以我来发一篇干货


 

准备


 

文章中涉及软件、课件、源码等均在网盘,为避免网盘链接失效,公众号中回复:网盘


【环境和工具】
 

【学习层次】
 




详解视频



 

干货视频,放出来尽可以去传播,但是不要干那种修改我版权说是自己视频的事,那就low了!



https://v.qq.com/x/page/o08254fqdmq.html


 

实战图文



一.某QT程序汉化中遇乱码
QT开发的国外软件,若是没有特意做中文支持,不论怎么搞,都是乱码
例如汉化下图中的标题registration



乱码



二.逆向分析寻找原因
1.OD中定位标题字符串
程序载入OD,定位"registration",并查看,程序中都有那些位置会调用这个字符串,如图


发现有三个地方调用了这个字符串地址,全部下断点


2.运行观察
断点下好后,运行程序,观察调用字符串的逻辑流程,发现下的三个断点中有两个在程序启动会被调用,调用的目的分别是作为两个QT库函数的参数,如下图







3.正向查阅相关函数源码
这里多说一句,玩逆向不只光玩逆向,一直强调逆向是一种思维,逆向破解的逆向就是开发,活用开发资料,逆向破解中往往事半功倍。
安装QT后就可以看QT各种库函数的源码和资料,如果你想更深入的了解,给吃透的话,最好的方式莫过于自己开发,自己逆向分析。
开始寻找目标函数源码,everything搜两个函数类命,QCoreApplication和QMetaObject

打开源码,阅读相关函数,源码如下
QCoreApplication::translate函数定义,发现核心参数就是这个枚举类型,当枚举类型为0的时候中文是乱码,当是1的时候中文没问题



QMetaObjcet::tr函数实现,发现这个函数的实质其实是以枚举类型参数为0去调用QCoreApplication::translate


4.逆向中验证上面的正向源码
从新载入OD,重新运行,根据上面正向查阅的源码资料观察相应的两个库函数在逆向中的体现,如下图




可见,两个函数其实最终调用的都是第一个函数,而核心关键点就是枚举类型参数的值,那么我们在第一个库函数入口【6A2B5818】下断点动态运行一下,堆栈中观察参数的变化,如下动图



5.总结所有线索
 

三、修改QT库QTCore4.dll解决问题
其实上面的分析如果已经完全搞懂了,其实就已经知道怎么解决了,而且解决方法有很多,但是都并不能保证所有程序的通用性,毕竟一个开发一个样,这次他用这个库函数,没准下次他用另外一个,所以吃透后,具体问题具体分析才是任何武功中的“无招胜有招”!针对于这个案例,解决的思路就至少有以下三种
 

后两种方法都是修改QT库函数,所以最终体现是修改了QTcore4.dll这个文件,方法分别如下
方法1



方法2



修改后,生成新的qtcore4.dll文件,替换原版qtcore4.dll就会发现,再去汉化此软件,乱码问题已经解决了。我们依然以汉化题目为示例,OD中修改数据(如果你是大量汉化工作就别用OD了否则累死哦),注意要是utf-8的内存编码形式,关于编码常识可以在公众号内回复“编码”阅读,也可以点此链接 编码常识 ,修改标题registration为“测试”,“测试”的utf-8内存编码模式16进制数据是E6 B5 8B E8 AF 95 ,转换方法如下,有兴趣的也可以自己写工具
notepad++写入内容,转码




010editor查看16进制内容


OD改字符串



乱码解决




汉化新世纪 责任编辑: wanfu .:|:. 标签(Tag): QT乱码

·上一篇: 没有记录 ·下一篇:

· 版权申明: 本文引自《逆向驿站》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《逆向驿站》[ 作者: 葫芦娃很厉害],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号