Опубликовано 6 марта, 20223 г. comment_2668 Как сделать скрытый VMT Hook?! Скрытый он только от проверки целостности файла. Например в Warface есть такая защита! Это дополнение к теме https://fanhack.ru/index.php/topic/849-kak-sdelat-vmt-hook-i-pochemu-luchshe-ne-ispolzovat-vmt-dl/ Для того чтобы после хука не изменился хеш файла игры нам нужно установить хук только в динамической памятиДля этого мы скопируем оригинальную таблицу VMT к себе в буфер и там установим хук то есть уже в динамической памятиПотом в классе где будет хук меняем адресс VMT на нашу копиюМы получим установленный хук без изменения хеша игры LPVOID HideHookVMT(LPVOID pClass, int MaxCount, LPVOID pHookFunc, int dwOffset) { LPVOID pVTable = *(LPVOID*)pClass;// Получаем vmt char* buf_vmt = new char[MaxCount*8];// Создаем буфер под копию оригинала vmt memcpy(buf_vmt, pVTable, MaxCount * 8);// Записываем оригинал vmt ы буфер LPVOID pAdressInTable = (LPVOID)((DWORD64)buf_vmt + dwOffset * 8);//Вычисляем адресс функции в таблице по ее порядковому номеру (ставим хук в буфере) DWORD dwOldProtection; VirtualProtect((LPVOID)pAdressInTable, sizeof(pAdressInTable), PAGE_READWRITE, &dwOldProtection);// меняем параметры страницы установка флага чтение запись memcpy(pAdressInTable, pHookFunc, 8);//Записываем наш адресс хука VirtualProtect((LPVOID)pAdressInTable, sizeof(pAdressInTable), dwOldProtection, &dwOldProtection);// Восстановили параметры страницы memcpy(pClass, &buf_vmt, 8);//Перезаписываем адресс vmt на наш буфер return (LPVOID)pAdressInTable;// Вернули адресс из таблицы где установили хук }Результат в скринах:Оригинал класса https://prnt.sc/jH3myG1PIF88Оригинал VMT https://prnt.sc/XNJnkqnDNlLUПосле установки меняется адресс VMT на наш https://prnt.sc/rVLn1xp88La-Хук установлен https://prnt.sc/ej3iKhwcsAM6 Ну а в оригинальном коде все как должно быть https://prnt.sc/nRNSd2R4c938Хеш игры не изменен античит не будет ругаться. Но хук работает)
Как сделать скрытый VMT Hook?!
Скрытый он только от проверки целостности файла. Например в Warface есть такая защита!
Это дополнение к теме https://fanhack.ru/index.php/topic/849-kak-sdelat-vmt-hook-i-pochemu-luchshe-ne-ispolzovat-vmt-dl/
Для того чтобы после хука не изменился хеш файла игры нам нужно установить хук только в динамической памяти
Для этого мы скопируем оригинальную таблицу VMT к себе в буфер и там установим хук то есть уже в динамической памяти
Потом в классе где будет хук меняем адресс VMT на нашу копию
Мы получим установленный хук без изменения хеша игры
Результат в скринах:
Оригинал класса https://prnt.sc/jH3myG1PIF88
Оригинал VMT https://prnt.sc/XNJnkqnDNlLU
После установки меняется адресс VMT на наш https://prnt.sc/rVLn1xp88La-
Хук установлен https://prnt.sc/ej3iKhwcsAM6
Ну а в оригинальном коде все как должно быть https://prnt.sc/nRNSd2R4c938
Хеш игры не изменен античит не будет ругаться. Но хук работает)