Детект эмулятора клавы на удаленном компе

Тема в разделе "WASM.NETWORKS", создана пользователем Jgfhyfyhftfhfgf, 2 апр 2022.

  1. Jgfhyfyhftfhfgf

    Jgfhyfyhftfhfgf New Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2020
    Сообщения:
    3
    Всем привет, прошу помочь - может кто в теме...
    Есть удаленный комп, на него захожу обычно по RDP. На этом удаленном компе установлена какая-то следящая программа типа Mipko.
    На локальном компе работает эмулятор нажатий на клавиатуру и мышь. Эмуляцию можно делать либо прямой записью в порт клавиатуры(через драйвер), либо из ринг3 вызовом SendInput например.
    Вопрос. Может ли какая-либо прога на удаленном компе отличить SendInput от реального нажатия(или от записи в порт)?
     
  2. Andrey333

    Andrey333 Member

    Публикаций:
    0
    Регистрация:
    30 янв 2020
    Сообщения:
    35
    Ввод от SendInput/keybd_event/mouse_event можно отличить от "реального" в хуке WH_KEYBOARD_LL/WH_MOUSE_LL. Проверяй флаги LLKHF_INJECTED/LLKHF_LOWER_IL_INJECTED и LLMHF_INJECTED/LLMHF_LOWER_IL_INJECTED.
     
    Последнее редактирование: 4 апр 2022
  3. Jgfhyfyhftfhfgf

    Jgfhyfyhftfhfgf New Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2020
    Сообщения:
    3
    Andrey333, ты не понял вопроса. Отличить реальное нажатие от SendInput на локальном компе я могу и мне это абсолютно не интересно. Я спрашиваю совершенно другое.
    Может ли программа на удаленном компе, который управляется по RDP отличить реальные нажатия от эмуляции? Эмуляция и реальные нажатия происходят не на том компе, где установлена прога, а передаются по RDP. Т.е. тут нужно хорошо разбираться, как работает протокол RDP и есть ли в нем разница между передачей эмулированного и реального ввода.
     
  4. Andrey333

    Andrey333 Member

    Публикаций:
    0
    Регистрация:
    30 янв 2020
    Сообщения:
    35
    Jgfhyfyhftfhfgf, да, сорри, не понял. На твой вопрос ответа не знаю.
     
  5. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Какая-то очень странная постановка вопроса. RDP насколько я помню подразумевает создание отдельной сессии отдельного пользователя в отдельном рабочем столе, чисто технически "реального ввода" с клавиатуры в такой сессии быть не может. Таким образом эмулированный ввод будет в локальной сессии локального пользователя, удаленный - в другой. Как бы на этом технические тонкости службы RDP можно дальше не изучать: таки да, может с легкостью отличать, было бы зачем.
     
  6. Jgfhyfyhftfhfgf

    Jgfhyfyhftfhfgf New Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2020
    Сообщения:
    3
    f13nd, ты тоже совсем не понял моего вопроса. Я даже и не знаю уже, как объяснить то....
    Есть комп, он управляется по RDP, на этом компе стоит прога. Может ли эта прога отличить эмулированный и неэмулированный ввод, который приходит c другого компа по RDP?
    Для этого нужно хорошо знать протокол RDP, т.к. в случае реального ввода, по RDP может передаваться какой-то признак-флаг, что это реальный ввод и на удаленном компе виндовоз, получивши такой признак, будет писать напрямую в порт клавиатуры например. А если этот гипотетический флаг сброшен, то виндовоз на удаленном компе понимает, что это эмуляция и вызывает SendInput. В этом случае прога на удаленном компе сможет отличить реальность от эмуляции.
    Чтобы это проверить, нужно написать драйвер обработчик прерываний/отслеживатель записи в порт и запустить его на удаленном компе.
    Но у меня времени нет на это, я думал - вдруг кто-то знает, а никто не знает получается.