0

我目前正在做一个项目,我必须对一个软件进行逆向工程。在查看内存反汇编和内存访问视图时,我需要知道是否可以同时显示 32 位和 64 位寄存器值。

4

1 回答 1

1

不,这是不可能的。在 x64 目标进程上,您将看到 64 位寄存器。

但是很容易识别较小的寄存器表示。

以 RAX 为例:

  • RAX 是 EAX 的 64 位扩展版本
  • EAX 是 AX 的 32 位扩展版本
  • AX 在寄存器是 16 位的时候是 16 位寄存器

您仍然可以轻松地将十六进制的 64 位寄存器值分解为较小的组件。

  • RAX 是总共 64 位
  • EAX 是低 32 位
  • AX 是低 16 位
  • AH 代表AX 的高 8
  • AL 代表 AX 的8 位

因此,如果您的 64 位寄存器包含: A0B1C2D3E4F5A6B7

  • EAX = E4F5A6B7
  • AX = A6B7
  • AH = A6
  • AL = B7

通过打开 Windows 计算器并将其设置为程序员模式、十六进制模式和 QWORD 值,您可以很容易地从视觉上识别这一点。粘贴“A0B1C2D3E4F5A6B7”,然后单击 QWORD 将其类型逐渐变小,以查看每个阶段的截断值。

于 2019-07-24T02:35:44.417 回答