HookService Keys User Manual


Начнём, пожалуй, с целей, которые я ставил перед собой, когда ЭТО писал. В этом документе содержится краткое описание всех программ из набора, а также краткое описание системы работы. Полное описание содержится в моей статье "Клавиатурные шпионы", которая находится в файле keys.htm в корневом каталоге. Там же, кстати, содержатся и фундаментальные исходники. Рекомендую прочесть её, прежде чем продолжить чтение этой статьи. Многие вещи станут Вам понятней.

Ну ладно, хватит. Для начала я скажу несколько слов обо всём продукте в целом. Весь продукт состоит из 5 частей:

Программа Каталог с исходниками
Сама dll-ловушка. Без комментариев. HookLib.
Системный сервис ("генштаб") - собственно кейлоггер, который занимается тем, что ждёт сообщения с клавишей от ловушки и пишет нажатую клавишу в файл. Он ещё ведёт лог ошибок и записывает таковые в файл, это довольно круто... HookService.
RunHook. То же самое, что и сервис, только для установки не нужны права админа. Программа просто лезет в автозапуск. RunHook.
Программа просмотра лог-файла. Примитивнейшая программа, которая просто считывает лог-файл и формирует из клавиш список. Ни фильтров, ни поиска по списку, но на первых порах вполне сгодится, особенно если менять лог-файлы. Если всё же кто-нибудь улучшит её - за исходники я буду очень благодарен:-). KeyView.
TestHook. Программа для тестирования библиотеки. Устанавливает и снимает ловушку. Код нажатой клавиши появляется вместо надписи "Label1". Библиотека с ловушкой должна находится в каталоге с программой. Testhook.

На библиотеке с ловушкой я уже смозолил язык и руки (пардон за идиотское сочетание - не поймите неправильно:-)))). Библиотека почти такая же, как и в статье keys.htm, разве что я ещё и записываю путь к exe-файлу программы, в которую была нажата клавиша. За это у нас отвечает модуль processes в папке UNITS, который я практически полностью содрал, в котором ещё не разбирался, который работает, и по которому я не могу дать комментариев, увы. Это первое отличие от статейной dll. Второе состоит в том, что моя dll-ка сама не пишет в файл, а ищет окно класса TfrmKeyHookMain и при помощи сообщения WM_COPYDATA отправляет ему данные о клавише. Окно в свою очередь уже пишет эту информацию в файл, который я называю лог-файлом. Про сообщение WM_COPYDATA подробно написано в файле winapi.hlp, который находится в каталоге "WinAPI Help". Это позволяет использовать dll-ку "всырую", просто переименовав класс своего окна. Третье же отличие сделано исключительно для удобства разработчиков. Тип TLogKeyInfo и MyPChar находятся не в dll-ке, а в специальном модуле htypes.pas в каталоге UNITS, чтобы можно было, поменяв типы данных, просто перекомпилировать все программы. Во всём остальном моя dll полностью совпадает с dll из статьи (ещё бы!). У сервиса есть для этого есть дополнительная форма - гляньте исходники, там всё понятно станет.

Теперь о сервисе. Его Вам придётся немного поковырять, прежде чем запускать в использование. Там (в модуле hkservice.pas) есть 2 глобальные константы - LogFile и ErrorLogFile - имена соответственно лог-файла и файла ошибок. Они не обязательно должны существовать, главное, чтобы существовали каталоги. Оба файла будут созданы. После компиляции запустите сервис с параметром /install. Если появилось сообщение "Service installed successfully", то сервис сел в Вашу систему. С этого момента он будет отображаться в списке служб под именем "NTFS File Security Service" (оригинально, не правда ли?). Удалить кейлоггер проще простого - запустите его с параметром /uninstall. Если сервис убит успешно, то вылезет сообщение "Service uninstalled successfully". Вот и всё.

Но этот способ сработает, если у Вас есть права админа на машине. Если же нет, то можете воспользоваться программой RunHook. Эта штуковина аналогична сервису, только нагло сидит в автозапуске. Увы, скорее всего, можно будет логгировать только текущего пользователя. Запустить программу RunHook нужно тоже с параметром /install, чтобы она села в автозапуск. Автозапуск для текущего пользователя находится в реестре в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run. Автозапуск для всех пользователей находится в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run. Имейте в виду, что RunHook по умолчанию лезет в HKEY_LOCAL_MACHINE, так что поковыряйте исходник.

Ну и напоследок про тестовую прогу TestHook. Эта хрень требует наличия в своём каталоге библиотеки keyhook.dll и позволяет установить-снять ловушку. Код нажатой клавиши будет появляться вместо надписи "Label1". Тут без комментов.

Уф, кажется, всё. Я не уверен, что Вам было всё понятно, да я и сам себя не всегда понимаю $-))))), но по крайней мере стабильную работу программ гарантировать могу. В любом случае все вопросы, пожелания и улучшения программы пишите мне на мыло (coldfate@yandex.ru). Буду очень признателен.

Удачи!
С уважением, James Coldfate




P.S. Благодарности находятся в статье keys.htm