汇编:Dword到十六进制转换问题

问题描述

我是逆向工程的新手,在使用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的位置,但其中的内容是为了清楚显示宽度。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...