我正在尝试在程序中执行一些字节注入以在ecx+5C
等于我为其提供即时值的特定地址时执行特定任务。我正在尝试执行以下操作:cmp [ecx+5C], 1D59D3BC
.但是我收到一个错误。有谁知道如何将寄存器+偏移地址与 x86 程序集中的直接地址进行比较?
我正在尝试执行以下操作:
cmp [ecx+5C], 1D59D3BC
.
但是我收到一个错误。
失败的可能原因:
- 您需要指定十六进制前缀或后缀,以便汇编程序接受您的指令。
- 您需要指定操作的大小。汇编程序不会为您猜测。
尝试以下任一操作(取决于您的汇编程序):
cmp dword ptr [ecx + 5Ch], 1D59D3BCh
cmp dword ptr [ecx + 0x5C], 0x1D59D3BC
cmp dword [ecx + 5Ch], 1D59D3BCh
cmp dword [ecx + 0x5C], 0x1D59D3BC
有谁知道如何将寄存器+偏移地址与 x86 程序集中的直接地址进行比较?
lea eax, [ecx + 5Ch] ;put the address in EAX
cmp eax, 1D59D3BCh ;compare with the immediate
但正如PaulH在评论中所示的更短:
cmp ecx, 1D59D3BCh - 0000005Ch