что находится по 7FFE0300h (вызов из user32.dll)?

Тема в разделе "WASM.WIN32", создана пользователем Arthur, 4 мар 2009.

  1. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Добрый день!

    Я тут смотрел листинг user32.dll, и наткнулся на функцию содержащую следующий код:

    Код (Text):
    1. mov     eax, 1235h
    2. mov     edx, 7FFE0300h
    3. call      dword ptr [edx]
    4. retn     18h
    Что то я въехать немогу, вроде это последняя секция (смотря в OllyDbg), но толи дебаггер неправильно дизассемблирует, либо я просто не понимаю.

    В общем интересует содержательная часть этой функции, кто силен помогите.

    P. S. Предположительно данная функция в итоге организует цикл обработки windows сообщений, только вот какойто нестандартный, и наверное демоны решили это спрятать (наверно?).
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а в ntdll.dll такого не встречал?
     
  3. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    n0name
    конечно встречал.

    наверно это системный вызов? Но ведь по сути sysenter, int должны быть? Или это как в unix дальний вызов (lcall)? Или по этому адресу и лежит sysenter/int?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Arthur
    Само, собой. Посмотри что по этому адресу.
     
  5. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Booster
    но как? OllyDbg наверно неправильно дизасмит? Она показывает что инструкции лежат следующим образом:
    Код (Text):
    1. 7FFE02FF   008B EB907C94    add     byte ptr ds:[ebx+947C90EB],cl
    2. 7FFE0305  ^EB 90            jmp     short 7FFE0297
     
  6. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Если XP, то это 1235h номер сервиса NtUserTrackPopupMenuEx
    Если Vista, то это 1235h номер сервиса NtUserSetWindowFNID
    Если Seven, то это 1235h номер сервиса NtUserSetProp

    :)
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    тогда следует изучить как работать с Olly и команды ассемблера.
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Arthur
    Вот - http://www.wasm.ru/forum/viewtopic.php?pid=93115#p93115
    Давненько было. ^)
     
  9. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Flasher
    Это же из user32.dll. Я там был, и вообщем OS = XP (т. е. NtTrackPopupMenuEx).

    n0name
    Тогда как заставить Olly нормально отобразить тот кусок кода?
    т. к. переход по адресу 7FFE0297, дает область заполненную нулями.

    Booster
    Ну а где именно код находится то? В ntoskrnl.exe? По какому адресу?
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    код
    Код (Text):
    1. mov     edx, 7FFE0300h
    2. call      dword ptr [edx]
    не выполняет переход на 7FFE0300h.
    повторюсь: следует изучить хотя бы частоиспользуемый набор команд.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    В XPSP1 интереснее:
    Код (Text):
    1. 008958AA ZwClose    mov eax,19
    2. 008958AF        mov edx,7FFE0300
    3. 008958B4        call edx
    4. 008958B6        ret 4
    Arthur
    Забей в поиск на форуме по KiFastSystemCall, KiIntSystemCall, UserSharedData..
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Clerk
    В SP1 лажа.

    Arthur
    Разве так сложно взять значение по адресу 7FFE0300h? Точный адрес не помню.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Booster
    Всмысле лажа ?
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Clerk
    >Всмысле лажа ?
    Потому как код в SP2 лучше. ^)
     
  15. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Booster
    ага 7C90EB8B, т. е. по 7FFE0300h, лежит адрес в ntdll.dll (.text - секции), вот теперь понятно стало.

    по этому адресу sysenter, значить управление передается в ntsokrnl.exe?
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Arthur
    Да SYSENTER передаёт управление в ядро.
     
  17. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    А как зная номер команды (в eax) узнать где находится выполняемый участок кода?
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Arthur
    Практически это невозможно знать, если только не взять где нибудь соответсвующие таблицы или не скачать отладочные символы у майкрософт.
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Booster
    Это смотря для кого..
    Тут две противоположные точки зрения. С точки зрения реверсера это проблема, так обычно(в моём случае) если мне нужно отловить вызов потоком сервиса я ставлю жесткий останов записью [0x7FFE0300]. Это позволяет отловить все вызовы сервисов. Но в SP1 это не будет работать, так как сам код шлюза записан в рязделяемую ядром память, а она доступна только для чтения и точку останова не удастся поставить. Единственный вариант это хардварный бряк, но если приложение сбрасывает DR часть контекста, то можно забыть про юзермодные отладчики. Это делает эффективным защиту и гемор реверсеру, к примеру нельзя былобы из юзермода(дебугапи) отлавливать теневые сервисы. С точки зрения автора софта то как в SP1 соответственно лучше.
     
  20. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    с помощью ядерного отладчика легко.
    или найти Shadow-таблицу в дизассемблере.