42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|||||||||||
1 | |||||||||||
Глобальный хук. Довести до ума04.09.2009, 16:37. Просмотров 1913. Ответов 6
Метки нет Все метки)
(
Здравствуйте, решил изучить механизмы хуков, почитал статьи. Появились вопросы.
Вот собственно если делать глобальный хук, то функцию нужно совать в ДЛЛ. Нужно ли ее потом как-то специально загружать? Или как она ко всем процессам пристанет? Потом, как влияет на это #pragma data_seg что оно делаем в этом случае? А так же #pragma comment(linker, "/section:.ИМЯ,rws") Точнее я прочил, что эти операции делают и как работают, но не пойму, как они работают в этом случае вообще. Толку что они будут в секции READ WRITE SHARED? Вроде пока все. Вот код который есть.
0
|
|
04.09.2009, 16:37 | |
Довести до ума форму регистрации/авторизации Глобальный хук мыши Глобальный хук клавиатуры (windows) Глобальный хук клавиатуры с целью изменить клавишу |
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
05.09.2009, 22:18 [ТС] | 2 |
Хорошо, поискав еще статей я доделал рабочий вариант. Но все же остались вопросы.
1)Почему при хуке на GETMESSAGE посылая сообщение PostMessage если слать на хэндл окна к которому присоединился процесс, то проц на 99%.(Проверял в QIP в Окне сообщений, полагаю, что оно не предусматривает нажатие кнопки и поэтому тупит). Если же посылать сообщение тому хендлу, который получен из структуры MSG, то все посылается, но зацикливается почему-то. Пробовал сразу же слать WM_KEYUP, но это ничего не дало. 2)Возвращаясь к read write shared секциям, как они влияют на то, что эта ДЛЛ внедряется во все процессы?
0
|
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
|
|
16.09.2009, 13:46 | 3 |
Если ставиш хук через SetWindowsHook то загружать его спецом не нужно, винда сама подгрузит длл во все процессы, которые стригерят этот хук.
#pragma comment(linker, "/section:.ИМЯ,rws") - ты объявляеш эту секцию даных шаровой. Это значит , что содержащиеся там даные будут одинаковы для всех процессов. По умолчанию каждые даные в длл уникальны для своего процесса. В шаред секции все процессы юзают одну и ту же физическую область памяти. Поэтому доступ к таким даным должен быть ограничен мутексом. По поводу 99% - это твой косяк в коде где то.
0
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
||||||
16.09.2009, 17:28 [ТС] | 4 | |||||
Так я и спрашиваю, как так, что Винда эту ДЛЛ во все процессы подгружает? Это так со всеми ДЛЛ?
0
|
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
|
|
16.09.2009, 18:19 | 5 |
1)Пришла месага, 2)сработал хук 3) Хук вызвал Постмесадж 4) Готу 1)
0
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
16.09.2009, 19:55 [ТС] | 6 |
Да зациклил я(( Спасибо.
Если хук включать внутри программы, то он только на 1 процесс работает. А если из ДЛЛ, то ДЛЛ подгружается во все процессы и ловит все сообщения. Почему это происходит именно из ДЛЛ?
0
|
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
|
|
17.09.2009, 12:02 | 7 |
0
|
17.09.2009, 12:02 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. довести до ума курсовую Помагите довести исходник до ума в чем ошибка,как довести до ума Не могу довести до ума, не хватает функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |