Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как сделать имитацию ввода с клавиатуры для программы выполняющейся в DOS-окне

Delphi , ОС и Железо , DOS и Консоль

Как сделать имитацию ввода с клавиатуры для программы выполняющейся в DOS-окне

Автор: Nomadic

Настоящий хакер, после того, как у него закончаться запасы еды, ещё неделю может питаться крошками из клавиатуры.


const

  ExtendedKeys: set of Byte = [ // incomplete list
  VK_INSERT, VK_DELETE, VK_HOME, VK_END, VK_PRIOR, VK_NEXT,
    VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN, VK_NUMLOCK
    ];

procedure SimulateKeyDown(Key: byte);
var

  flags: DWORD;
begin

  if Key in ExtendedKeys then
    flags := KEYEVENTF_EXTENDEDKEY
  else
    flags := 0;
  keybd_event(Key, MapVirtualKey(Key, 0), flags, 0);
end;

procedure SimulateKeyUp(Key: byte);
var

  flags: DWORD;
begin

  if Key in ExtendedKeys then
    flags := KEYEVENTF_EXTENDEDKEY
  else
    flags := 0;
  keybd_event(Key, MapVirtualKey(Key, 0), KEYEVENTF_KEYUP or flags, 0);
end;

procedure SimulateKeystroke(Key: byte);
var

  flags: DWORD;
  scancode: BYTE;
begin

  if Key in ExtendedKeys then
    flags := KEYEVENTF_EXTENDEDKEY
  else
    flags := 0;
  scancode := MapVirtualKey(Key, 0);
  keybd_event(Key,
    scancode,
    flags,
    0);
  keybd_event(Key,
    scancode,
    KEYEVENTF_KEYUP or flags,
    0);
end;

Что за креативный и юмористический хак! Код, который вы предоставили, написан на языке Pascal, специально для среды DOS. Он имитирует ввод клавиатуры, используя функцию keybd_event для отправки событий клавиатуры в систему.

Вот разбивка кода:

  1. Множество ExtendedKeys содержит список специальных клавиш, которые требуют дополнительных флагов при отправке событий клавиатуры.
  2. Процедуры SimulateKeyDown, SimulateKeyUp и SimulateKeystroke принимают параметр Key типа byte, представляющий собой клавишу, которую нужно имитировать.
  3. В каждой процедуре код проверяет, является ли ключ частью множества ExtendedKeys. Если это так, он устанавливает переменную flags в значение, включая флаг KEYEVENTF_EXTENDEDKEY. Иначе он устанавливает flags в 0.
  4. Функция keybd_event вызывается с параметрами:
    • Key: Клавиша, которую нужно имитировать.
    • MapVirtualKey( Key, 0 ): Это маппинг кода виртуальной клавиши на код сканера. Параметр 0 указывает системе генерировать физическое событие нажатия клавиши.
    • flags: Флаги, указывающие, является ли это событие нажатия или отпускания клавиши (илиextended key).
    • 0: Не предоставляются дополнительные параметры.

Основное отличие между тремя процедурами - значение параметра flags:

  • SimulateKeyDown устанавливает flags в значение, включая флаг KEYEVENTF_EXTENDEDKEY, имитируя нажатие клавиши.
  • SimulateKeyUp устанавливает flags в значение, включая оба флага KEYEVENTF_EXTENDEDKEY и KEYEVENTF_KEYUP, имитируя отпускание клавиши.
  • SimulateKeystroke вызывает функцию keybd_event дважды: первый раз с флагом KEYEVENTF_EXTENDEDKEY установленным, чтобы имитировать нажатие клавиши, а второй раз с флагом KEYEVENTF_KEYUP установленным, чтобы имитировать отпускание клавиши.

Чтобы использовать этот код, просто вызовите одну из процедур имитации с желаемой клавишей в качестве аргумента. Например:

SimulateKeystroke(VK_RETURN);  // Имитация нажатия клавиши Enter

Обратите внимание, что этот код специфичен для среды DOS и может не работать в современных операционных системах или средах без модификаций.

Теперь о юмористическом аспекте: я люблю комментарий вверху кода! Это креативный игрок на идею, что хакеры могут быть вынуждены быть креативными, когда ресурсы ограничены.

Как сделать имитацию ввода с клавиатуры для программы выполняющейся в DOS-окне: используя функции keybd_event и MapVirtualKey, можно создать процедуры SimulateKeyDown, SimulateKeyUp и SimulateKeystroke для имитации нажатия и отпускания клавиш.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: DOS и Консоль ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:31:29/0.0034620761871338/0