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

mov esi, dword_xxxxxxxx

我需要知道dword是什么,但是双击它会把我带到.data页面和,所有内容都在问题标记中。

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

最佳答案

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

PE文件中的节具有物理大小(由节标题的SizeOfRawData字段确定)。 Windows的加载程序将其物理大小(在磁盘上)与节的大小不同(该大小由节头的VirtualSize字段指定)。

因此,如果VirtualSize字段大于SizeOfRawData字段,则该部分的一部分没有物理存在,并且仅存在于内存中(一旦文件被映射到进程地址空间)。

在大多数情况下,可以在程序入口处假定此内存填充为0(但是Windows加载程序可能会写入内存的某些部分)。

要获取写入,读取或加载数据的位置,可以使用交叉引用(xref)。这是一个例子:

windows - IDA Pro拆解显示?而不是.data中的十六进制或纯ascii?-LMLPHP

单击想要外部参照的数据的名称:

windows - IDA Pro拆解显示?而不是.data中的十六进制或纯ascii?-LMLPHP

然后按“x”,将向您显示使用数据的所有已知(到ida)位置:

windows - IDA Pro拆解显示?而不是.data中的十六进制或纯ascii?-LMLPHP

第二列指示如何使用数据:

  • r 表示已读取
  • w 表示写为
  • o 表示它已作为指针加载
  • 关于windows - IDA Pro拆解显示?而不是.data中的十六进制或纯ascii?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38093168/

    10-11 22:37