Как найти вектор NtUserSetWindosHookEx

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

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Очень нужен "надежный" способ определить по какому вектору в Shadow SSDT лежит NtUserSetWindosHookEx. К сожалению, эта функция не экспортируется, поэтому трюк с GetProcAddress + посмотреть mov ax, vector не проходит.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    естественно, эта функция не экспортируется -)
    я бы предложил дизасм + анализ кода SetWindowsHookEx. В конце концов вызов все равно определится. Единственный минус - сложно и неудобно.
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Это конечно вариант, но уж слишком сложно, тем более, вызов NtUserSetWindosHookEx находится "глубоко".

    Уж проще тогда сделать таблицу: версия dll - вектор
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну да, самый простой вариант по-моему=)
     
  5. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Что странно - Rootkit Unhooker показывает все векторы с правильными именами функций... Попробую пореверсить.
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Посмотри номер сервиса NtUserSetWindosHookEx - это и будет индекс в SDT
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Clerk
    Логично :)) Но.. Как я понял его и интересует номер сервиса =0))
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Не понял?
     
  9. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    функция НЕ ЭКСПОРТИРУЕТСЯ
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Я уже делал это когдато, тока с другой функцией Win2k
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ух... Безнадёжно.
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Да какая разница, экспортируется или нет.
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну в смысле как его определить - видимо его интересует. Наверное, хочет напрямую сисентером вызывать.
    Вот и интересует его как найти номер сервиса.. Ну либо жестко зашить для разных версий, либо искать как-то саму NtUserSetWindowsHookEx, вероятно, дизасмом экспортируемой SetWindowsHookEx.
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Я вчера приводил пример для ntoskrnl.
     
  15. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    предлогаю определять эмпирически. не знаю тока действенный метод иле нед

    NtUserSetWindosHookEx вроде единственный вызываемый через syscall прекол в SetWindowsHookEx. сталобыть ставем перехват на FastSysCallRet(или как там его), делоем вызов SetWindowsHookEx. срабатывает обработчек, смотрем чо там лежит в стеке (адрес возврата из KiFastSystemCall), несколькими байтами выше буит mov eax,index(NtUserSetWindosHookEx). не забыть потом перехват снять.
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ну вот!
     
  17. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    либо даже легче, поставеть на KiFastSystemCall int3, вызвать SetWindowsHookEx, схватить исключение, опять же взять адрес возврата и посмотреть чуть выше.. ну и не забыть инт3 убрать
     
  18. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Пойду посмотру дизассемблером...
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Freeman прав.
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    тогда уж просто посмотреть EAX ивсе тут