Антивирусы
Главная
Вход
Регистрация
Пятница, 13.03.2026, 17:02Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Антивирусы [21]
Дополнения [20]
ключи [2]

Информация о Вас
Узнай свой IP адрес

Информация о Вас
Узнай свой IP адрес

Друзья сайта
женский сайт

Главная » 2009 » Август » 3 » Установка ловушек в Windows
Установка ловушек в Windows
01:21
Если ты плохо воспринимаешь Си-шный код, на Delphi заголовок выглядит так:SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId:DWORD): HHOOK;Функция SetWindowsHookEx() в случае установки hook\'a возвращает его дескриптор, в случае ошибки возвращает 0.Разберем подробней все входящие параметры этой функции:

1. idHook - константа, определяет типа устанавливаемого hook\'а. Может принимать одно из ниже перечисленных значений:

WH_CALLWNDPROC - Следит за сообщениями до отправки в оконную функцию и вызывается, когда процедуре окна посылается сообщение. Ловушка срабатывает при каждом вызове функции SendMessage. 

WH_CALLWNDPROCRET - Контролирует сообщения после их отправки в оконную функцию.

WH_CBT - Вызывается перед обработкой большинства сообщений окон, мыши и клавиатуры (созданием окон, активация окон, уничтожением окон, сменой размера окон, перед установкой фокуса и.т.п.)

WH_DEBUG - Вызывается перед любой другой ловушкой. Полезно для отладки hook\'ов. 

WH_GETMESSAGE - Вызывается, когда из очереди приложения считывается сообщение.

WH_HARDWARE - Вызывается, когда из очереди приложения считывается сообщение установленного на компьютере оборудования.

WH_JOURNALPLAYBACK - Вызывается, когда из очереди системы считывается сообщение. Применяется для добавления в очередь системных событий. 

WH_JOURNALRECORD - Вызывается, когда из очереди системы запрашивается какое-нибудь событие. Применяется для регистрации системных событий. 

WH_KEYBOARD - Вызывается, когда из очереди приложения считывается сообщения WM_Keydown или WM_Keyup. Одна из самых распространенных ловушек -).

WH_MOUSE - Вызывается, когда из очереди приложения считывается сообщение мыши. 

WH_MSGFILTER - Вызывается, когда сообщение должно быть обработано диалоговым окном приложения, меню или окном приложения.

WH_SHELL - Вызывается, когда создаются и разрушаются окна верхнего уровня или когда приложению-оболочке требуется стать активным.

2. lpfn - указатель на саму hook функцию. Ее заголовок:function HOOKFUNCTION(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULTstdcall;Значения входящих параметров зависят от типа hook\'a. Если ставится глобальный hook, эта функция должна обязательно находиться в dll.

3. hmod - принимает значение hInstance или дескриптор DLL (в глобальных ловушках).

4. dwThreadId - идентифицирует поток, в который вставляется ловушка. В глобальных hook\'ах этот параметр должен быть равен 0.

Для удаления установленной ловушки существует функция UnhookWindowsHookEx(). В качестве параметра нужно использовать указатель (дескриптор) на hook функцию (значение, которое возвращает функция SetWindowsHookEx()).

Ну вот и все, с основами ты ознакомлен. Теперь напишем маленькую шуточную программу, ставящую hook на считывания сообщений мыши (WH_MOUSE). Сделаем так, чтобы при нажатии на правую кнопку мыши скрывалась кнопка \"Пуск\", при нажатии на левую - появлялась, среднею - изменялся заголовок активного окна. Сама hook функция будет находиться в dll. Кроме того, в dll будут находиться две процедуры - sethook() и removehook(), соответственно устанавливающие и удаляющие ловушку.Привожу код dll библиотеки:

--- lib.dll ---

library lib;

uses
windows,messages;
var
H : THandle;

{Hook-функция}
function hook(c0de, wParam, lParam : integer): Lresult; stdcall;
{Объявления переменных}
var 
w : THandle;
hw: hwnd;
begin
{Если c0de не меньше 0, все в порядке, продолжаем}
if c0de >= 0 then
begin
{ Если wParam = WM_RBUTTONUP, т.е. нажата правая кнопка мыши, получаем хендл (handle) кнопки \"Пуск\" и скрываем ее }
case wParam of
WM_RBUTTONUP :
begin
W:= FindWindow(\'Shell_TrayWnd\', nil);
W:= FindWindowEx(W, HWND(0),\'Button\', nil);
ShowWindow(W, SW_hide);
end;
{ Если wParam = WM_LBUTTONUP, т.е. нажата левая кнопка мыши, получаем хендл кнопки пуск и показываем ее }
WM_LBUTTONUP:
begin
W:= FindWindow(\'Shell_TrayWnd\', nil);
W:= FindWindowEx(W, HWND(0),\'Button\', nil);
ShowWindow(W, SW_SHOW);
end;
{ Если wParam = WM_MBUTTONUP, т.е. нажата средняя кнопка мыши, получаем указатель на заголовок активного окна и изменяем его }
WM_MBUTTONUP:
begin
hw:=GetForegroundWindow;
SetWindowText(hw,\'EXAMPLE OF WINDOWS HOOK (WH_MOUSE) - by Dark Lord \');
end;
end;
end else
{Если c0de меньше 0}
begin
{Вызываем следующую ловушку в цепочке ловушек Windows и выходим из процедуры}
result := CallNextHookEx(H, c0de, wParam, lParam);
exit;
end;
{Вызываем следующую ловушку в цепочке ловушек Windows}
result := CallNextHookEx(H, c0de, wParam, lParam);
End;

{ Процедура установки ловушки, если не удалось установить - выводим сообщение об ошибке }
procedure sethook;
begin
H:= SetWindowsHookEx(WH_MOUSE, @hook, hInstance, 0);
if H = 0 then 
messagebox(0,\'hmmm..\',\'ERROR\',mb_iconhand);
end;

{ Процедура удаления ловушки }
procedure removehook;
begin
UnhookWindowsHookEx(H);
end;

{ Экспорт процедур установки и удаления hook\'a }
exports
sethook index 1 name \'sethook\',
removehook index 2 name \'removehook\';
end.

--- lib.dll ---

В самой программе ловушка будет устанавливаться вызовом из dll процедуры sethook, удаляться - вызовом процедуры removehook. Пример установки и удаления hook\'а, а также исходник dll библиотеки есть в прилагающемся архиве.В данной статье были рассмотрены только основы установки ловушек. Есть немалое количество нюансов и возникающих проблем при установке нескольких hook\'ов, установки hook\'ов в разных ОС (особенно это касается глобальных ловушек). Для получения подробностей по этим вопросам рекомендую использовать Win32 API Reference или MSDN (если нет дисков с MSDN - прогуляйся наhttp://msdn.microsoft.com, здесь правда не вся информация, но большая ее часть). Ну что же, на сегодня это все. Будь здоров! -)Исходники

Категория: Дополнения | Просмотров: 12157 | Добавил: moov-chan | Рейтинг: 0.0/0 |
Всего комментариев: 3
3 Заметил красивую статью про мотоциклы.  
0
Обзор нового ktm duke 200. Прошу ознакомится "http://www.motones.ru/news/136-ktm-duke-200-poyavitsya-pozzhe.html" - ktm duke 200

2 warty_zaufania  
0
https://plus.google.com/u/0/106057978043366745758/about

1 Afferienharge  
0
Добро жаловать в выше игровой портал. На нашем портале представлен громадный прибор лицензионных CD и DVD дисков: фильмов на DVD, компьютерных игр, в часть числе и детских игр, а также лицензионные программы, музыка-MP3, аудиокниги. Беспричинно же вы можете приобрести у нас зрелище чтобы консолей: Playstation 3, Nintendo Wii, Xbox 360 и другие. В нашем магазине вы сможете встречать компьютерные зрелище различных жанров: стратегии, симуляторы, логические игры, экшен, приключенческие зрелище, квесты, игры-ужасы и многие другие. Выше список cd дисков неусыпно пополняется, и вы постоянно сможете найти у нас самые последние новинки, а беспричинно же зрелище, ставшие классикой. Мы отправляем CD и DVD почтой сообразно всей России.
Часть "Новинки компьютерных игр" пополняется еженедельно - у нас Вы сможете найти всетаки последние игровые новники, выпущенные в России.Для наших постоянных покупателей действуют накопительные скидки.
Приятных покупок!

Имя *:
Email *:
Код *:
Форма входа

Теги
Скачать антивирусы бесплатно,скачать антивирус касперского беслпатно. скачать лучшие бесплатные антивиурсы. ESET NOD32 Antivirus BUSINESS EDITION 3.0.669.0 + Русификатор !!!Ключи не требуются!!! [2008, Антивирус] Активация Касперского 7 и 8 версии NodLogin 8.2 - Автопоиск ключей для Nod 32 Вечный триал для Касперского AnVir Task Manager 5.5.0 Рабочие ключи для Касперского 5,6,7,8 от 27 Июня 2009 Kaspersky AVP Tool 7.0.0.290 (29.06.2009) Dr.Web (версия 5.00.1.07020) Ключи на НОд от Доброго Админа=) Avast! 4.8.1195 Professional Edition Kaspersky Anti-Virus 2010 v9.0.0.459 Rus + Key NOD 32 Antivirus v.3.0.650 RUS x32 + Fix v.3 - Официальная Русская Версия (2008) Уязвимость в WinAMP при проигрывании MIDI файлов В комп через IE Взлом запароленного аккаунта в TheBat! Удаленное переполнение буфера в mIRC клиенте Подмена заголовка письма Извращения с рассылкой Установка ловушек в Windows Убираем баннеры из Odigo kaspersky antivirus, dr. web, norton, panda antivirus, nod 32. скачать обновление антивируса касперского беслпатно. скачать лучшие бесплатные антивиурсы.

Теги
Скачать антивирусы бесплатно,скачать антивирус касперского беслпатно. скачать лучшие бесплатные антивиурсы. ESET NOD32 Antivirus BUSINESS EDITION 3.0.669.0 + Русификатор !!!Ключи не требуются!!! [2008, Антивирус] Активация Касперского 7 и 8 версии NodLogin 8.2 - Автопоиск ключей для Nod 32 Вечный триал для Касперского AnVir Task Manager 5.5.0 Рабочие ключи для Касперского 5,6,7,8 от 27 Июня 2009 Kaspersky AVP Tool 7.0.0.290 (29.06.2009) Dr.Web (версия 5.00.1.07020) Ключи на НОд от Доброго Админа=) Avast! 4.8.1195 Professional Edition Kaspersky Anti-Virus 2010 v9.0.0.459 Rus + Key NOD 32 Antivirus v.3.0.650 RUS x32 + Fix v.3 - Официальная Русская Версия (2008) Уязвимость в WinAMP при проигрывании MIDI файлов В комп через IE Взлом запароленного аккаунта в TheBat! Удаленное переполнение буфера в mIRC клиенте Подмена заголовка письма Извращения с рассылкой Установка ловушек в Windows Убираем баннеры из Odigo kaspersky antivirus, dr. web, norton, panda antivirus, nod 32. скачать обновление антивируса касперского беслпатно. скачать лучшие бесплатные антивиурсы.

Статистика




Rambler's Top100

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Зарегистрированных49

45

3
Администраторов:2
Модераторов:2
Забаненных юзеров:2
Пользователей:45
Проверенных:0


Copyright MyCorp © 2026Создать бесплатный сайт с uCoz