【原创源码】【VB6】文字转unicode或ascii
我今天在汉化一个C++的软件时,遇到了点编码的问题。先说经过吧。我在ODBG调试器里面载入文件,并搜索到英文字符串,然后追过去:
之后就是找到这个字符串存放的地址。考虑到这个API调用的是GetSaveFileNameW,所以查看它的Unicode字符串。
接下来我就犯了难了,平时接触的程序里面通常是Ascii的调用,直接在二进制编辑窗口的Unicode文本框输入中文,结果不行。
只能通过修改十六进制数据实现。
于是我用网上的文本转Unicode工具,把文字转成了Unicode再填入,结果还是不行。
经过我一个多小时的研究发现,程序的Unicode二进制数据是高低位互换的。然而,网上的文本转Unicode工具转换出来的结果是高位在先,低位在后。
所以只能动手写文本到Unicode的转换程序了。
界面长这样:
用起来也相对容易,只需要把需要的文本放第一行,就会生成高低位颠倒的Unicode码。
例如,我在之前找到的字符串为“Animated PNG 0utput”,翻译成中文就是“动画化PNG输出”。
把这个输入到第一行,然后就能看到转换后的结果。
这时候单击“拷贝Unicode”,再在ODBG的十六进制编辑窗口粘贴一下,就能看到效果。
很明显,这里改过来了。之后偷梁换柱就可以。
https://static.52pojie.cn/static/image/hrline/1.gif
接下来是代码部分。
其实,本工程的代码并不复杂,利用好ASC和ASCW函数就可以分对文本转换成Ascii和Unicode了。
重点还是C++程序里面的数据的放置方式,经过我的摸索,可以得到这个结论:
Unicode字符串的每一个字符高低位颠倒;Ascii字符串的每一个字符不用颠倒高低位。
因此,用本工程的代码生成出来的程序,其计算出来的Ascii码是正确的。
https://static.52pojie.cn/static/image/hrline/1.gif
最后是代码下载:
(此附件仅包含程序源码,不提供成品文件,需要者请自行编译)
od那个窗口输入中文可以选择,在记事本里输入,然后复制上去
论坛有你真的精彩~ 苏紫方璇 发表于 2021-8-6 18:32
od那个窗口输入中文可以选择,在记事本里输入,然后复制上去
我试过了,只有ascii的可以这么做,unicode的是乱码 马云爱逛京东 发表于 2021-8-6 19:52
我试过了,只有ascii的可以这么做,unicode的是乱码
有可能是我装的od或者某些插件给修复了,我这里可以复制
页:
[1]