如何将这些伪 unicode 数据声明代码翻译成 MASM 风格的代码?

Posted

技术标签:

【中文标题】如何将这些伪 unicode 数据声明代码翻译成 MASM 风格的代码?【英文标题】:How to translate these pseudo unicode data declaration code into MASM style code? 【发布时间】:2014-02-24 19:03:05 【问题描述】:

我有一些从 IDA Pro 生成的伪 asm 代码,如下所示:

aR6033AttemptTo:
unicode 0, <R6033>
dw 0Dh, 0Ah
unicode 0, <- Attempt to use MSIL code >
unicode 0, <from this assembly during n>
unicode 0, <ative code initialization>

而这个变量就是这样使用的:

dd offset aR6033AttemptTo  

我知道是否有单行 unicode 声明,我可以使用它:

include \masm32\macros\macros.asm
....
WSTR aNull_0, "this is a unicode string"

但是我该如何处理多行声明呢?特别是有dw 0Dh, 0Ah,谁能帮帮我?谢谢!

【问题讨论】:

【参考方案1】:

自己创建 UNICODE 字符串?!?!

普通字符串是 ASCII - 每个字符 1 个字节(声明为 BYTE),UNICODE 字符串是每个字符 2 个字节(声明为 WORD)

UniString       word    'I', 13, 10, \
                        'a','m', 13, 10, \
                        'a', 13, 10, \
                        'M','u','l','t','i', ' ', 'l','i','n','e', 13, 10, \
                        'U','N','I','C','O','D','E', ' ', 's','t','r','i', 'n', 'g','!',0, 0

让我们用 Unicode MessageBox 测试它

Invoke MessageBoxW, 0, offset UniString, NULL, MB_ICONINFORMATION

现在,所有的打字都可能很乏味,我肯定没有把这些都打出来。我有一个带有源代码的程序,当您输入变量名、一些 ASCII 文本时,它会将您的字符串输出为 UNICODE 定义的字符串。 Unicode String Variable Creator 链接中的那个,只会做单行字符串。您可以像我一样修改它以创建多行字符串。将底部 2 编辑控件更改为富文本控件修改转换循环以添加 13 和 10 用于回车和换行。

【讨论】:

以上是关于如何将这些伪 unicode 数据声明代码翻译成 MASM 风格的代码?的主要内容,如果未能解决你的问题,请参考以下文章

数组分配与访问

Kendo 导出到 PDF Unicode 支持

如何将Unicode转换成汉语

Unicode 转义序列

伪代码

如何检测 Java 字符串中的 unicode 字符?