Обычная кодировка mov rcx, [a]
является относительной:
48 8b 0d DD CC BB AA
Смещение со знаком, AABBCCDD, относится к следующей инструкции. Если используется эта кодировка, ваш код C ++ должен быть:
DWORD64 PatchAddress = FindAddressLocation();
uint64_t addr = PatchAddress + 7 + *(int32_t *)(PatchAddress + 3);
*(BYTE*)addr = 0;
Другая кодировка, не относящаяся к RIP, использует байт SIB:
48 8b 0c 25 DD CC BB AA
В этом случае адрес является 32-разрядным адресом со знаком. Код C ++ будет:
DWORD64 PatchAddress = FindAddressLocation();
uint64_t addr = *(int32_t *)(PatchAddress + 4);
*(BYTE*)addr = 0;