Гость Kroch Опубликовано 2 апреля, 2015 Поделиться Опубликовано 2 апреля, 2015 (изменено) 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 должен быть месседжбип Изменено 2 апреля, 2015 пользователем Kroch Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 2 апреля, 2015 Поделиться Опубликовано 2 апреля, 2015 Привет! Ты отлаживал код? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Kroch Опубликовано 2 апреля, 2015 Поделиться Опубликовано 2 апреля, 2015 (изменено) Привет! Ты отлаживал код?Нет. Скажи пожалуйста это вообще рабочий код?Я про эту часть void __declspec( naked ) HOOK_AddToConsole(int param, char *text){param = 5;MessageBeep(-1);__asm jmp FuncRetAddr} Изменено 2 апреля, 2015 пользователем Kroch Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 2 апреля, 2015 Поделиться Опубликовано 2 апреля, 2015 Я довольно плохо компилирую в уме, а тем более - чужой код. Вопрос в том, откуда ты взял смещения 1EC5h и 1EC0h. Логику кода можно проверить через отладчик, это очень полезный инструмент. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения