Что на самом деле делает KeStackAttachProcess?

Тема в разделе "WASM.WIN32", создана пользователем ubil, 5 дек 2005.

  1. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    Хотелось бы разобраться как именно реализуется данная функция на IA32

    на уровне ассемблерных команд, чтобы, возможно, потом ее реализовать самостоятельно, без DDK. Еще мне не совсем понятно, как так получается, что после ее выполнения адреса которые были исходно в контексте присоединяющегося потока там же и остаются. Ведь казалось бы, что меняя контекст меняется и адресное пространство, но, как показывает опыт, после выполнения функции доступ к глобальным переменным в драйвере сохраняется...
     
  2. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    яж тебе уже в аське объяснял, перегружает CR3, кроме того, делает настройку регистров fs, загружает по необходимым адресам EPROCESS и прочее, ну и , может быть что то еще, доточно не разбирался )
     
  3. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    CARDINAL

    У меня хистори тада не сохранялась:)



    ...Ну и как тогда поток после всего этого к глобальным адресам в драйвере может свободно обращаться? Например по адресу pDE... Я конечно понимаю, что можно настроить таблицу страниц процесса, чтобы обращаться по правильному физическому адресу посредством старого указателя pDE, но может это как-то проще реализуется в KeStackAttachProcess?
     
  4. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    ЧТО ТО я тебя не понял, ты сначала разберись как устроена память виндовая. Страничная изоляция существует только для юзермодной памяти. В ядре изоляция к примеру осуществлена для таблиц каталогов страниц, ну и еще некоторых тебе ненужных ресурсов. Так что за глобальность адресов в драйвере можешь не бояться )