Показать сообщение отдельно

  #26  
Старый 08.08.2024, 17:19
maksmanus228
Участник форума
Регистрация: 23.10.2020
Сообщений: 135
С нами: 2925217

Репутация: 83
По умолчанию

void* SetCallHook(uintptr_t HookAddress, void* DetourFunction) {

uintptr_t OriginalFunction = *reinterpret_cast(HookAddress + 1) + HookAddress + 5;

DWORD oldProt;

VirtualProtect(reinterpret_cast(HookAddress + 1), sizeof(uintptr_t), PAGE_READWRITE, &oldProt);

*reinterpret_cast(HookAddress + 1) = reinterpret_cast(DetourFunction) - HookAddress - 5;

VirtualProtect(reinterpret_cast(HookAddress + 1), sizeof(uintptr_t), oldProt, &oldProt);

return reinterpret_cast(OriginalFunction);

}

а причем тут хук адрес + 1 Откуда взялась единица? объясните пожалуйста
 
Ответить с цитированием