Вызов функций из ntdll

Тема в разделе "WASM.BEGINNERS", создана пользователем nikifar, 18 май 2009.

  1. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    nikifar
    Если бы ты посмотрел код, ты бы догадался, что перехват ставися в тот момент когда ты хочешь, потом небольшая задержка до фактического его исполнения, а потом собственно нужные тебе действия.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Clerk
    Ты слишом придираешься, обертки нужны.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Great
    Стуб выполняет следующие действия:
    - Формирует регистровый стек(KTRAP_FRAME).
    - Устанавливает PreviousMode исходя из селектора кодового сегмента переданного в стуб.
    - Для теневого сервиса вызывает NtGdiFlushUserBatch.
    - Копирует аргументы сервиса в стек.
    - Определяет из SST адрес обработчика и вызывает его.
    - Доставляет APC если он есть в очереди.
    Что из этого нужно для ядерного треда - ничего, разумеется если не хотим в чужёй обработчик попасть.
    PreviousMode вручную нормально так устанавливается.
    Обьясни мне зачем обёртки нужны ?
    [И я не придираюсь.]
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    * Формирует регистровый фрейм(KTRAP_FRAME).
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Clerk
    Спасибо, конечно, но я знаю, что делает стаб.

    Обертки нужны - для PreviousMode. Что проще - дернуть один раз инт 2е или искать превиоус моде?
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Great
    Даже дизасм таскать не нужно, достаточно из второй инструкции PsGetCurrentThreadPreviousMode() смещение взять. Полядра заюзать чтобы одну переменную изменить.. это никуда не годится.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Да делай как тебе больше нравится, ей богу) Нашли проблему блин:lol:

    Только четогда придираться то
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Это тупик без сомнения, идём в #16. Вполне нормальное обсуждение.. Только одного не пойму, товарищ сам ответить может, зачем за него говорить.
     
  9. wasm_test

    wasm_test wasm test user

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