首页 > 解决方案 > 汇编:Dword 到 Hex 转换问题

问题描述

我是逆向工程的新手,在与 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?有人可以帮忙吗?

代码是 32bit 和 IDA idafreeware64。

标签: assemblyx86-64

解决方案


正如您所说,这些是宽字符串,由宽(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

其中00s 可以删除,但已包括在内以明确宽度。


推荐阅读