问题描述
我是逆向工程的新手,在使用IDA时,我发现wstring
部分中的rdata
'CPRE'转换如下:
rdata:00417B30 ; const WCHAR Caption
rdata:00417B30 Caption dd 500043h
rdata:00417B34 dword_417B34 dd 450052h
rdata:00417B38 word_417B38 dw 0
rdata:00417B3A align 4
为什么?我的意思是,43h
是'C'的十六进制,50h
是'P'的十六进制,但是为什么在00之间呢?
有人可以帮忙吗?
代码为32位,IDA为idafreeware64。
解决方法
如您所说,这些是宽字符串,由宽(16位)字符组成。
这些dd
常量是4字节(32位)。反汇编没有显示给您的是这些常量中有高阶0字节:
500043h
确实是00500043h
。它由两个字符0050h
(P)和0043h
(C)组成。
其他两个字母也是如此。它们之间没有00h
,它是文字中第一个(低阶)字符的一部分。
这可以减少混乱(尽管仍将其保留为原始数据,而不是解析为wstring):
rdata:00417B30 Caption dw 0043h
rdata:00417B32 word_417B32 dw 0050h
rdata:00417B34 word_417B34 dw 0052h
rdata:00417B36 word_417B36 dw 0045h
rdata:00417B38 word_417B38 dw 0
可以放置00
的位置,但其中的内容是为了清楚显示宽度。