Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
#1

Не работает Hook - C++ WinAPI

01.05.2015, 23:39. Просмотров 575. Ответов 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 (C++ WinAPI):

Hook клавиатуры не работает - C++ WinAPI
Всем доброй ночи, возникла такая проблема: дано задание написать аудит клавиатуры, еще проще обычный кейлоггер. Вот код hooks.h ...

hook - C++ WinAPI
моя работа заключается в написании сервиса с функцией контроля действий пользователя в системе.Как с помощью hooka решить данную...

Hook функция - C++ WinAPI
Решил потренироваться и поработать с hook функцией, запихнул ее вв dll, по идее все символы, полученные функцией должны записываться в...

Hook клавиатуры - C++ WinAPI
Помогите мне пожалуйста с лабораторной работой, мне нужен хук клавиатуры в win32 VS, сама я не дружу с win32..

Hook на recv - C++ WinAPI
Здравствуйте. Есть необходимость узнать, что у пользователя в браузере. Добрый человек на хабре подсказал поставить хук на сетевые...

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

7
zenden2k
43 / 28 / 8
Регистрация: 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 / 8
Регистрация: 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 / 8
Регистрация: 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 / 8
Регистрация: 23.03.2015
Сообщений: 210
02.05.2015, 01:20  [ТС] #5
zenden2k, В какой процесс она инжектится???
0
Enno
267 / 170 / 38
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
02.05.2015, 02:36 #6
0x0152, во все на этом десктопе.
1
0x0152
31 / 31 / 8
Регистрация: 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 / 8
Регистрация: 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'a D3D - C++ WinAPI
Приветствую всех!) Пишу DLL'ку для игры. Что бы не перезагружать саму игру каждый раз при написании кода , делаю выгрузку DLL по кнопке и...

Hook клавиатуры и мыши - C++ WinAPI
Я пересмотрел кучу сайтов по похожим запросам И нигде толком и понятно не написано выручайте люди.

очередной раз hook - C++ WinAPI
Доброго времени суток! Я новенький в WinAPI, но все же мне интересно, хоть и тяжело. Мое желание - написать хук для клавиатуры, который...

HOOK не пропускает сообщения - C++ WinAPI
Вот такую программу создал, чтобы, когда она работает, и я где-то нажимаю клавишу, программа будет что-то делать #include&lt;windows.h&gt; ...


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

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

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