如何将这些伪unicode数据声明代码转换为MASM样式代码?

时间:2014-02-24 19:03:06

标签: winapi unicode masm masm32

我有一些从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 个答案:

答案 0 :(得分:2)

自己创建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

enter image description here

现在,所有打字都很乏味,我确定没有输入所有内容。我有一个带源代码的程序,当你输入一个变量名,一些ASCII文本时,它会输出你的字符串作为UNICODE定义的字符串。 Unicode String Variable Creator链接中的那个只会执行单行字符串。您可以像我一样修改它以创建多行字符串。将底部的2个编辑控件更改为richtext控件,修改转换循环以添加13和10 for Carriage Return和Line Feeds。