Перейти к содержанию

Проблемы с хуком функций


Рекомендуемые сообщения

void CreateHook(DWORD funcAddr, DWORD HookFunc){        DWORD prot;	VirtualProtect((void*)funcAddr, 5, PAGE_EXECUTE_READWRITE, &prot);	HookFunc-= (funcAddr + 5);	*((BYTE*)funcAddr) = 0xE9;	memcpy((void*)(funcAddr + 1), &HookFunc, sizeof(DWORD));	VirtualProtect((void*)funcAddr, 5, prot, NULL);}void *FuncRetAddr = NULL;void __declspec( naked ) HOOK_AddToConsole(int param, char *text){         param = 5;       MessageBeep(-1);       __asm jmp FuncRetAddr}int main(){   DWORD consoleAddr = (DWORD)GetModuleHandle("console.dll");   FuncRetAddr = (void*)consoleAddr + 0x1EC5;   CreateHook(consoleAddr + 0x1EC0,(DWORD)&HOOK_AddToConsole);   _getch();   return 0;}

почему приложение тупо виснет? по идее при каждом вызове AddToConsole должен быть месседжбип 

Изменено пользователем Kroch
Ссылка на комментарий
Поделиться на другие сайты

Привет! Ты отлаживал код?

Нет. Скажи пожалуйста это вообще рабочий код?

Я про эту часть 

 

void __declspec( naked ) HOOK_AddToConsole(int param, char *text)

{

param = 5;

MessageBeep(-1);

__asm jmp FuncRetAddr

}

Изменено пользователем Kroch
Ссылка на комментарий
Поделиться на другие сайты

Я довольно плохо компилирую в уме, а тем более - чужой код. Вопрос в том, откуда ты взял смещения 1EC5h и 1EC0h. Логику кода можно проверить через отладчик, это очень полезный инструмент.
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.