PspCreateProcessNotifyRoutine

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

  1. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    Доброго времени суток,
    Вопрос возник по поводу PspCreateProcessNotifyRoutine.
    Вообще как понял - это переменная ядра, проецируемая на адресное пространство каждого процесса. И представляет собой массив указателей на поцедуры вызываемые при создании и удалении процесса.

    В отладчике выводится массив адресов начинающихся с e16f04e7 . но по каждому из этих адресов какая то ерунда, может на мой не опытный взгляд конечно, но процедурами там не пахнет...
    Знает кто нить где все таки адреса этих процедур, и вообще как можно добавлять и удалять последние из этого массива??? (иными словами можно ли добавить указатель на свою процедуру в этот массив?)

    если кто знает ссылки кидайте, потому что вопросов по этой теме у меня возникло больше чем описано выше =)
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Vic
    Никуда она не проецируется, эта переменная в ядре.
    PsSetCreateProcessNotifyRoutine() добавляет нотификатор в эту таблицу.
     
  3. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    эм... таак, теперь заранее прошу прощения, может совру но тогда не очень понимаю:
    переменная в ядре -> образ ядра проецируется на адресное пространство процесса (диапазон сист. адресов), так разве не прав говоря , что переменная проецируется??
     
  4. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    не проецируется никуда, сказали же :) она "как бы" общая. у процесса свое пространство только в user mode, а ядро одно на всех.

    з.ы. Clerk чур не пинать мну)))
     
  5. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    хорошо , суть понятна, признаю выразился не корректно...

    В описании переменной сказано, что max элементов массива 8, т.е. 8 процедур. Если добавляю 9ую, функция завершится неудачно получается??
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Vic
    Юзермодное адресное пространство ограничивается адресом 0x7FFE0FFF, всё что выше для юзермода не доступно. Из ядра доступно, так предел сегмента определён в дескрипторе, а для ядерных соответственно лимит -1. Образ ядра никуда не проецируется, просто перезагружается регистр Cr3(каталог страниц определяет) при смене адресного пространства, при аттаче к процессу.
    Зарегать больше 8 (для XP) не получится - возвратится ошибка.
     
  7. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    Clerk
    все что написано понятно, а не пояснишь почему 0x7FFE0FFF - считал что 0х7FFFFFFF ?
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Потомучто с адреса 0x7FFE0000 выделена страница разделяемой ядром памяти, а остальная память до начала системного адресного пространства(тоесть 31 страница) зарезервирована дабы ловить исключения.
     
  9. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    хм, у Руссиновича ничего про это не написано вроде...
    а есть ссылка что почитать, потому что сходу сложновато ...
    что за разделяемая ядром память??
    А исключения - речь о фреймах ловушек??
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    UserSharedData, там инфа о системе, процессоре, счётчики времени и пр.
    Исключения генерировать при проверках, аналогично как и начало системного ап зарезервировано. Смотри к примеру теневые сервисы как проверки адресов делоют.
    Нет, не знаю что предложить.
     
  11. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    Clerk
    спасибо большое, посмотрю
     
  12. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Vic
    Относительно формата массива посмотри сорцы wrk.