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