Помогите разобраться с драйвером-фильтром

Тема в разделе "WASM.NT.KERNEL", создана пользователем 0xFox, 14 янв 2010.

  1. 0xFox

    0xFox Андрей

    Публикаций:
    0
    Регистрация:
    14 янв 2010
    Сообщения:
    47
    Адрес:
    Белгород
    Уважаемые, подскажите пожалуйста определение NtUserTranslateMessage, какой у нее перечень входных параметров, что то в инете искал ничего нет похожего, может не там искал конечно))) если не сложно бросьте заголовок этой функции
     
  2. quad

    quad New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2010
    Сообщения:
    7
    reactos говорит
    BOOL
    NTAPI
    NtUserTranslateMessage(
    LPMSG lpMsg,
    HKL dwhkl );
     
  3. 0xFox

    0xFox Андрей

    Публикаций:
    0
    Регистрация:
    14 янв 2010
    Сообщения:
    47
    Адрес:
    Белгород
    А второй параметр куда кажет?? и что это
     
  4. quad

    quad New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2010
    Сообщения:
    7
    поиск дает следующее:

    http://msdn.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx

     
  5. 0xFox

    0xFox Андрей

    Публикаций:
    0
    Регистрация:
    14 янв 2010
    Сообщения:
    47
    Адрес:
    Белгород
    Благодарю

    Еще вопросец.

    На сколько понял NtUserTranslateMessage, перехватывать нужно не из SDT, а из SDT shadow, так как процессы GUI. соответственно нужно аттачиться к процессу. Это верно?? пните в нужное направление))
     
  6. 0xFox

    0xFox Андрей

    Публикаций:
    0
    Регистрация:
    14 янв 2010
    Сообщения:
    47
    Адрес:
    Белгород
    Тогда получеатся что второй параметр - это ничто иное как хэндл окна, верно??
     
  7. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Тупишь вообще дико. Про второй параметр уже сказали, а хендл окна у тебя в lpMsg->hwnd будет.
     
  8. 0xFox

    0xFox Андрей

    Публикаций:
    0
    Регистрация:
    14 янв 2010
    Сообщения:
    47
    Адрес:
    Белгород
    Все понял, благодарю, а то что туплю)) знаю, поэтому и спрашиваю
     
  9. 0xFox

    0xFox Андрей

    Публикаций:
    0
    Регистрация:
    14 янв 2010
    Сообщения:
    47
    Адрес:
    Белгород
    Уважаемые, подскажите все таки, как коректно сделать перехват NtUserTranslateMessage, из какой такблицы ее необходимо перехватывать из KeServiceDescriptorTableShadow или KeServiceDescriptorTable. Вопрос возник по причине того что сервис из win32..
     
  10. AntiFreeze

    AntiFreeze Дмитрий

    Публикаций:
    0
    Регистрация:
    26 июн 2008
    Сообщения:
    65
    Беда Ваня.
    Тебе нужна KeServiceDescriptorTableShadow.
    Она не экспортируется, но найти легко. Имхо самый простой способ - разбор KeAddSystemServiceTable. Но вообще вариантов много.
    Номера сервиса NtUserTranslateMessage отличаются в зависимости от сборки. Можешь анализировать код user32.dll (ф-и TranslateMessage и TranslateMessageEx в более свежих ос) динамически, если есть чем, а можешь, как самый простой вариант - табличку составить и выбирать номер сервиса в зависимости от номера сборки.
    Если ты пишешь коммерческий продукт, то при перехвате функций нужно обязательно осуществлять валидацию параметров, если PreviousMode это UserMode.
    Иди в общем, разбирайся.
     
  11. 0xFox

    0xFox Андрей

    Публикаций:
    0
    Регистрация:
    14 янв 2010
    Сообщения:
    47
    Адрес:
    Белгород
    С таблицами разобрался уже, а вот за информацию про меняющиеся номера сервиса NtUserTranslateMessage, отдельное спасибо))
     
  12. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    x64
    вы в курсе по моему вопросу?
     
  13. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Ну если первую часть вопроса я ещё как-то понял, то вторую, честно говоря, не очень. По поводу "обойти" читаем описании TranslateMessage():

    Другими словами, в общем случае перехвата NtUserTranslateMessage() не будет достаточно. Лучше всего попробовать сделать это через NtUserGetMessage():

    Хотя мне всё таки кажется, что для большинства приложений должно хватить и NtUserTranslateMessage(). Пробуйте. По поводу добавить сообщение в очередь не понял, а в чём проблема-то собственно? Очередь есть у каждого UI-потока. Чтобы добавить сообщение в очередь для конкретного потока, существует сервис NtUserPostThreadMessage():

     
  14. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Перехваты в сст умерли. Мб пониже шадова следить за клавой ?
    x64
    Собственно ось не заканчивается на документации, в частности мсдн. По этой причине ваши взгляды не верны. Можно внутрь фунок загрянуть, это не чёрный ящик.
     
  15. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Может быть, ну, называй.
     
  16. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    просто где-то (на форуме, и не однократно, да и проверял вроде) проскакивала инфа, что с помощью хука можно различать настоящие сообщение от того которое послало другое приложение. или это к нативной NtUserPostThreadMessage не относиться?
     
  17. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    If hWnd is -1, GetMessage retrieves only messages on the current thread's message queue whose hwnd value is NULL, that is, thread messages as posted by PostMessage (when the hWnd parameter is NULL) or PostThreadMessage.
     
  18. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    тьфу, бред скопировал )
     
  19. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    x64
    http://wasm.ru/forum/viewtopic.php?id=28972
    нашел ) еле как.

    SEA
    это про SendInput, а про отправку сообщений и определение "кто отправлял" в первом посте
     
  20. wf_

    wf_ New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2009
    Сообщения:
    40
    0xFox, к сожалению коды те потерялись где-то, но вот тема которая мне тогда очень помогла http://www.wasm.ru/forum/viewtopic.php?id=27397