Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0x0152
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
1

Не работает Hook

01.05.2015, 23:39. Просмотров 660. Ответов 7
Метки нет (Все метки)

Скажите,что я делаю неправильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <Windows.h>
 
HHOOK hook;
HINSTANCE hIns;
 
LRESULT CALLBACK KeyBrdProc(int nCode, WPARAM wParam, LPARAM lParam){
    if (nCode == WH_KEYBOARD){
        MessageBox(NULL, L"Нажата клавиша", L"Сообщение", NULL);
    }
    return CallNextHookEx(hook, nCode, wParam, lParam);
}
DWORD APIENTRY DllMain(HMODULE hModule, DWORD ul, LPVOID lpReserved){
    switch (ul){
    case DLL_PROCESS_ATTACH:
        hIns = (HINSTANCE)hModule;
        hook = SetWindowsHookEx(WH_KEYBOARD, KeyBrdProc, hIns, NULL);
        break;
    }
    return true;
}
Где можно найти примеры работающих hook'ов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2015, 23:39
Ответы с готовыми решениями:

Hook клавиатуры не работает
Всем доброй ночи, возникла такая проблема: дано задание написать аудит...

Не работает пример Hook'a с MSDN
Решил попробовать хукать эвенты. Вот код, практически полностью идентичный...

hook
моя работа заключается в написании сервиса с функцией контроля действий...

Hook клавиатуры
Помогите мне пожалуйста с лабораторной работой, мне нужен хук клавиатуры в...

Hook на recv
Здравствуйте. Есть необходимость узнать, что у пользователя в браузере....

7
zenden2k
43 / 28 / 12
Регистрация: 21.04.2015
Сообщений: 82
01.05.2015, 23:50 2
Ээээ SetWindowsHookEx вроде надо вызывать не в DLL_PROCESS_ATTACH а один раз в программе, которая делает инжект длл

Вот пример http://resources.infosecinstitute.co...on-on-windows/
1
0x0152
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
02.05.2015, 00:45  [ТС] 3
The next thing that we need to do is create the program.exe as was demonstrated on the first picture of the article. This is the program that will do the actual injection of our DLL into the process’s address space. Let’s not waste any more words and present the code of the program straight away. We can see the code below:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "stdafx.h"
#include <Windows.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
 
/*
* Load library in which we'll be hooking our functions.
*/
HMODULE dll = LoadLibrary(L"C:\\drivers\\dllinject.dll");
if(dll == NULL) {
printf("The DLL could not be found.\n");
getchar();
return -1;
}
 
/*
* Get the address of the function inside the DLL.
*/
HOOKPROC addr = (HOOKPROC)GetProcAddress(dll, "meconnect");
if(addr == NULL) {
printf("The function was not found.\n");
getchar();
return -1;
}
 
/*
* Hook the function.
*/
HHOOK handle = SetWindowsHookEx(WH_KEYBOARD, addr, dll, 0);
if(handle == NULL) {
printf("The KEYBOARD could not be hooked.\n");
}
 
/*
* Unhook the function.
*/
printf("Program successfully hooked.\nPress enter to unhook the function and stop the program.\n");
getchar();
UnhookWindowsHookEx(handle);
 
return 0;
}
Чего-то я не понял, а где в этой программе DLL "инжектится" в процесс?
0
zenden2k
43 / 28 / 12
Регистрация: 21.04.2015
Сообщений: 82
02.05.2015, 01:16 4
0x0152,
Цитата Сообщение от 0x0152 Посмотреть сообщение
Чего-то я не понял, а где в этой программе DLL "инжектится" в процесс?
Строчка 30:
C++
1
HHOOK handle = SetWindowsHookEx(WH_KEYBOARD, addr, dll, 0);
Функция SetWindowsHookEx сама инжектит длл.
1
0x0152
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
02.05.2015, 01:20  [ТС] 5
zenden2k, В какой процесс она инжектится???
0
Enno
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
02.05.2015, 02:36 6
0x0152, во все на этом десктопе.
1
0x0152
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
02.05.2015, 09:23  [ТС] 7
C++
1
2
3
4
5
6
7
8
9
10
extern "C" __declspec(dllexport)  int qwe(int nCode, WPARAM wParam, LPARAM lParam)
{
    switch (nCode)
    {
    case HC_ACTION:
        MessageBox(NULL, "Нажата клавиша ", "Сообщение ", NULL);
                 break;
    }
        return CallNextHookEx(NULL, nCode, wParam, lParam);
}
Почему кода я закрываю MessageBox хук перестает работать?
0
0x0152
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
01.09.2015, 22:10  [ТС] 8
Спасибо
0
01.09.2015, 22:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2015, 22:10

Hook функция
Решил потренироваться и поработать с hook функцией, запихнул ее вв dll, по идее...

Ловушки (Hook)
Нужна программа которая при нажатии Ctrl или Alt будет выводить звуковой...

Не выходит реализовать Hook
Я хочу создать хук с помощью которого буду перехватывать сообщение изменение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru