【问题标题】:Assembly: Dword to Hex conversion problem汇编:Dword 到 Hex 转换问题
【发布时间】:2020-08-11 13:52:41
【问题描述】:

我是逆向工程的新手,在使用 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。

【问题讨论】:

    标签: assembly x86-64


    【解决方案1】:

    如您所说,这些是宽字符串,由宽(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 可以在其中删除,但已包含在其中以明确宽度。

    【讨论】:

    • 谢谢你的解释,我以为是,但一开始失踪的00骗了我。再次感谢您
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 2012-11-02
    • 2012-04-03
    • 2012-03-01
    • 2021-06-24
    • 2016-08-09
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多