- 307
- 218
Здарова, сделал я структуру для хука, но она почему-то не ставит хук, хотя просто функция работала нормально, как можно решить?
C++:
struct Hook {
DWORD addr = NULL;
byte* data = nullptr;
size_t size = NULL;
Hook(const DWORD& addr, const DWORD& func, const size_t& size = 5) {
this->data = new byte[size];
this->size = size;
this->addr = addr;
DWORD dwProt = PAGE_EXECUTE_READWRITE;
VirtualProtect((void*)addr, size, dwProt, &dwProt);
memcpy(data, (void*)addr, size);
memset((void*)(addr-4), 0x90, size-4);
*(byte*)(addr) = 0xE9; // jmp
*(unsigned int*)(addr + 1) = func - (addr + 5);
VirtualProtect((void*)addr, size, dwProt, NULL);
}
~Hook() {
if (data != nullptr) {
DWORD dwProt = PAGE_EXECUTE_READWRITE;
VirtualProtect((void*)addr, size, dwProt, &dwProt);
memcpy((void*)addr, data, size);
VirtualProtect((void*)addr, size, dwProt, NULL);
delete[] data;
}
}
};

