IDA Pro 反汇编显示 ?而不是 .data 中的十六进制或纯 ascii?

IDA Pro disassembly shows ? instead of hex or plain ascii in .data?

我正在使用 IDA Pro 反汇编 Windows DLL 文件。有一次我有一行代码说

mov esi, dword_xxxxxxxx

我需要知道 dword 是什么,但双击它会将我带到 .data 页面,一切都是问号

如何获得应该存在的纯文本?

如果您在 IDA 中看到问号,这意味着文件(在您的磁盘驱动器上)的这个位置没有物理数据。

PE 文件中的部分具有物理大小(由部分 header 的 SizeOfRawData field of the section header). This physical size (on disk) might be different from the size of the section once it is mapped onto the process memory by the Windows' loader (this size is given by the VirtualSize 字段指定)。

因此,如果 VirtualSize 字段大于 SizeOfRawData 字段,该部分的一部分没有物理存在,它只存在于内存中(一旦文件被映射到进程地址 space).

在大多数情况下,在程序入口点,您可以假设此内存填充为 0(但内存的某些部分可能由 windows 加载程序写入)。

要获取写入、读取或加载数据的位置,您可以使用 cross-references(外部参照)。这是一个例子:

单击要从中获取外部参照的数据的名称:

然后按 'x',您将看到使用数据的所有已知(ida)位置:

第二列表示数据的使用方式:

  • r表示读
  • w表示写成
  • o表示作为指针加载