论坛风格切换切换到宽版
  • 369阅读
  • 5回复

汉化的程序输入中文数据乱码 [复制链接]

上一主题 下一主题
离线chinajxw
 

发帖
3
金钱
30
威望
3
只看楼主 倒序阅读 0 发表于: 07-28
问题:输入显示没有问题,确认后就成为乱码了。
程序原版是英文的,不知道是不是没有添加中文的语言支持?如何添加?
需要使用到那些软件?

还有就是汉化的字符串长度不够如何修改增加?
(使用的是 Radialix 3 )






测试步骤:
1.打开程序后,点击文件下方的新建
2.点击左侧的位置后,再在中间的地图上面用鼠标左键拖出一个方格
3.双击方格在名称处输入中文确认后,再次双击打开看是否乱码






汉化的程序在这里,希望大佬帮忙解决一下
汉化后的程序 ScmDraft 2-716_CHS.zip (1017 K) 下载次数:4
离线wanfu

发帖
2699
金钱
11840
威望
1184
只看该作者 1 发表于: 07-29
你确定是这个文件有问题吗?你试试这个是否可以解决问题。
ScmDraft 2-716_CHS.rar (810 K) 下载次数:4
非标字串翻译后长度不够?RD3不是可以自动移位PE32的字串吗?应该不存在这个问题啊,难道没有引用?没有引用的字串是无法移位,即只能被截断写入翻译。
离线chinajxw

发帖
3
金钱
30
威望
3
只看该作者 2 发表于: 07-29
大佬解决了,能告诉我需要使用何种软件以及解决办法吗?
当然如果太复杂了就算了,可能不能理解!我就是为了汉化这个程序才搜索资料汉化的,接触才1周。
太谢谢了

我原来的程序确实不能成功,只能输入,保存后就乱码。
离线wanfu

发帖
2699
金钱
11840
威望
1184
只看该作者 3 发表于: 07-29
它将输入的字符都保存为UTF-8,显示时却使用了 CP_ACP = 0 的代码页,故乱码。
方法如下:
1、打开 x32dbg,设置选项如下:


2、打开文件,停在入口断点处:


3、CPU窗口中单击右键,选择搜索 > 当前模块 > 跨模块调用


4、在搜索中输入MultiByte,只列出转码函数 WideCharToMultiByte 和 MultiByteToWideChar


5、查看每个转码函数,发现都是Pash 0,即代码页参数值都是 0,即 Get_ACP。系统的默认值,简体中文就是 936,繁体系统就是 950,英语系统就是 1252


6、最后一个 WideCharToMultiByte 的后面,发现有 push FDE9,说明输入了 UTF-8 的编码


7、再查看后面又发现有 push FDE9,同样说明输入了 UTF-8 的编码


8、把发现的二处 push FDE9 改成 push 0 并 nop 掉多余的三个字节


9、生成补丁,把修改后的文件 Dump  出来,大功告成。


离线chinajxw

发帖
3
金钱
30
威望
3
只看该作者 4 发表于: 07-30
虽然看不懂,但是按照这图文并茂的详细步骤,我成功了,这样我就能继续汉化后续更新版本了。

多谢大佬
离线欣欣然

发帖
8
金钱
70
威望
7
只看该作者 5 发表于: 09-13
我看见OD就头痛。感觉太深奥了