吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7407|回复: 28
收起左侧

[原创] 解决QT5软件汉化中的乱码

[复制链接]
罗萨 发表于 2020-6-16 12:00
本帖最后由 罗萨 于 2020-6-16 12:01 编辑

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1200885&page=1#pid32439535
求助区看到法王的帖子,简单看了一眼,qt汉化都有乱码,网上资料只有qt4乱码解决方法的,下载了帖子中的软件开搞.

因为软件是64位的,所以说得用x64dbg来调试.
直接搜索要汉化的字符串,本帖以"Escaped string"为例.
1.png
搜索到3个字符串,全部下断点.
2.png
例子对应的位置是这里,断点断下来之后.
3.png
注意看这三行.
qword ptr [0000000140800810 <binaryninja.&?fromAscii_helper@QString@@CAPEAU?$QTypedArrayData@G@@PEBDH@Z>]=<qt5core.?fromAscii_helper@QString@@CAPEAU?$QTypedArrayData@G@@PEBDH@Z>
可以看到软件调用了fromAscii_helper()函数,搜索一顿.函数原型为
QString QString::fromAscii(const char *str, int size)
那么看到这里就明白了,参数1为字符串,参数2为字符串的大小
至于为什么乱码说到底还是因为编码的问题,因为软件使用的ascii编码,我们用winhex等工具修改字符串的话是utf8,所以我们手动转换一下
这里用个简单的方法
新建记事本内容为"转义字符串"保存一下,c32中可以看到16进制为
4.png
EFBBBFE8BDACE4B989E5AD97E7ACA6E4B8B2
但是这个字符串要远远比原来字符串保存的位置要长,所以随便找个空地址填进去
5.png
000000013FBB8E9B | 48:8D0D 36C4C500         | lea rcx,qword ptr ds:[1408152D8]                              | rcx:PEB.InheritedAddressSpace, 00000001408152D8:"Escaped string"
在把这里的指针指向刚刚填数据的地址,同时上面的
000000013FBB8E98 | 8D53 0E                  | lea edx,qword ptr ds:[rbx+E]                                  |
这一句的[rbx+E]里的E就是字节的长度,修改为刚刚替换数据的长度12
6.png
运行一下,ok没问题了


TIM截图20200616102557.png

这里只是提供个思路,如果想汉化的内容比较多的话可以根据这三句代码的特征快速定位,然后补个区段把编码转换过后的字节填进去修改字节长度.当然 这得自己写个工具来实现了



免费评分

参与人数 9威望 +1 吾爱币 +31 热心值 +9 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jafck + 1 我很赞同!
菜姬 + 1 + 1 谢谢@Thanks!
hoder + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
dreamlivemeng + 1 + 1 谢谢@Thanks!
黑龍 + 1 + 1 谢谢@Thanks!
生有涯知无涯 + 2 + 1 我很赞同!
冥界3大法王 + 4 + 1 厉害,感谢 支持。

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

微笑一刀 发表于 2020-6-16 12:59
隐约记得好像可以PATCH代码找fromUtf8这个函数处理的.
冥界3大法王 发表于 2020-6-16 13:47
本帖最后由 冥界3大法王 于 2020-6-16 13:53 编辑

@罗萨 成功了,很给力,一会给你传魔改版
另外还有一个2进制忍者的,python调试插件(https://www.52pojie.cn/thread-1201097-1-1.html) 没安装成功,拜托给分析下。
https://github.com/Vector35/debugger/releases/tag/1.2
他说插件安装看这个 https://docs.binary.ninja/getting-started.html#using-plugins
可是,实在是看不明白。解完包了:%APPDATA%\Binary Ninja\plugins 或软件本身的插件目录下,始终不识别,程序菜单里也未出现。
不明白那几句英文到底该如何安装   ,用的 2.0.2097 DEV 个人版, 看雪论坛下的,demo版不支持插件,别试。
 楼主| 罗萨 发表于 2020-6-16 12:01
冥界3大法王 发表于 2020-6-16 12:06
本帖最后由 冥界3大法王 于 2020-6-16 12:07 编辑
@罗萨
厉害,感谢 支持。
我是开Notepad++  和 WinHEX中直接 修改的
在x64dbg中一运行调试就时不是的报告 异常 ,这点不知你怎么解决的?
另外PYG的视频中有个QT汉化不乱码的视频 +  挪移的工具

我尝试过 Athena-A ,然而无输出效果。
 楼主| 罗萨 发表于 2020-6-16 12:07
冥界3大法王 发表于 2020-6-16 12:06
@罗萨
厉害,感谢 支持。
我是开Notepad++  和 WinHEX中直接 修改的

因为字符太长了把,找一段空地址填就行
冥界3大法王 发表于 2020-6-16 12:08
罗萨 发表于 2020-6-16 12:07
因为字符太长了把,找一段空地址填就行

@罗萨
WinHEX中看到字符的临近点有 多个00 够用了。
MC阿虎 发表于 2020-6-16 12:09
学习了学习了
 楼主| 罗萨 发表于 2020-6-16 12:14
冥界3大法王 发表于 2020-6-16 12:06
@罗萨
厉害,感谢 支持。
我是开Notepad++  和 WinHEX中直接 修改的

我感觉我上面的方法没毛病,有机会我把它工具化了,另外能不能给我来一份你的x64dbg魔改版
yunkof 发表于 2020-6-16 12:16
能发出来这个帖子的都是大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-27 18:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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