Перехват клавиш

Тема в разделе "WASM.BEGINNERS", создана пользователем JJD, 22 янв 2008.

  1. JJD

    JJD New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2008
    Сообщения:
    5
    значит мне нужно отловить клавиши у одной програмки, делал хуками, но что непробовал хоки не перехватываеют калвиши только у этой программы, перехватываються все клавиши кроме клавиш с буквами, время их нажатия отлавиливается а код символа всегда 0, возможно у програмки защита от этого
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    JJD
    Можно попробовать GetAsyncKeyState по таймеру с небольшой задержкой (100 мс, например).
     
  3. xh4ck

    xh4ck New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2005
    Сообщения:
    60
    Адрес:
    Russia
    а GetMessage/PeekMessage если хукать?
     
  4. JJD

    JJD New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2008
    Сообщения:
    5
    аналогичный результат код всех клавиш с буквами 0...
    а вот это по подробнее, если можно
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    JJD
    Какой еще аналогичный? O_o GetAsyncKeyState возвращает признак нажатости клавиши, а не ее код.
     
  6. JJD

    JJD New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2008
    Сообщения:
    5
    т.е. всё время нажата клавиша с кодом 0..
    другие клавиши какбудто не нажаты...
    у меня подозрение что там есть какая-то програмка в фоновом режиме и перехватывает сообщения до того как их получит хук и т.д. мож асемблером как перехватить
     
  7. xh4ck

    xh4ck New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2005
    Сообщения:
    60
    Адрес:
    Russia
    ну а че расписывать =)
    хукаешь функции (IAT хукинг, сплайсинг..)

    в обработчике делаешь что то вроде:

    switch(lpMsg->message) // ну на случай если тебе не только клаву понадобится =)
    {
    case WM_KEYDOWN: // а может и не кейдаун
    ...

    где LPMSG lpMsg - первый параметр хукаемой функции.
    и записываешь все клавиши

    lpMsg->wParam - вирт. кей
    lpMsg->lParam - сканкод.

    а вообще есть такая полезная утилитка Spy++, с её помощью можно точно проверить какие мессаги куда посылаются
     
  8. JJD

    JJD New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2008
    Сообщения:
    5
    вот и на этом всё..., где-то там перехватывается раньше и заменяется на клавишу со сканкодом 0 :dntknw:
     
  9. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    ну тут либо инжектить код во все процессы либо хукнуть SendMessage в ядре (имхо лучший вариант) или вообще приатачить девайс на KeyboardClass0
     
  10. JJD

    JJD New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2008
    Сообщения:
    5
    легко сказать :)
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    rain
    А разве у SendMessage есть нативный аналог?
     
  12. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    ну там NtUserGetMessage вот ознакомьтесь http://milw0rm.com/papers/180 "Keyboard Independent Keylogger"
     
  13. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    rain
    Спасибо. Буду знать.
     
  14. tekton

    tekton New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2007
    Сообщения:
    48
    А что за утилита Spy++? Уже много раз слышал о ней! Где её можно скачать? xh4ck Можешь кинуть на мыло? Заранее спасибо!
     
  15. xh4ck

    xh4ck New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2005
    Сообщения:
    60
    Адрес:
    Russia
    Утилита идет в комплекте с Visual Studio, и тянет за собой соответствующие длл-ки. Лучше поспрашивай у знакомых у кого студия есть =) в ЛС кое что отправил =)