汇编:双字到十六进制转换问题
Assembly: Dword to Hex conversion problem
我是逆向工程的新手,在使用 IDA 时,我看到 wstring
'CPRE' 已在 rdata
部分转换如下:
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 位)。反汇编没有告诉你的是这些常量中有 high-order 0 个字节:
500043h
真的是00500043h
。它由两个字符 0050h
(P) 和 0043h
(C).
其他两个字母也是如此。它们之间没有 00h
,这是文字中第一个 (lower-order) 字符的一部分。
这可以减少混淆(同时仍将其保留为原始数据,而不是解析为 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
的位置,但已包括在内以明确宽度。
我是逆向工程的新手,在使用 IDA 时,我看到 wstring
'CPRE' 已在 rdata
部分转换如下:
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 位)。反汇编没有告诉你的是这些常量中有 high-order 0 个字节:
500043h
真的是00500043h
。它由两个字符 0050h
(P) 和 0043h
(C).
其他两个字母也是如此。它们之间没有 00h
,这是文字中第一个 (lower-order) 字符的一部分。
这可以减少混淆(同时仍将其保留为原始数据,而不是解析为 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
的位置,但已包括在内以明确宽度。