Операции с памятью загруженных драйверов

Тема в разделе "WASM.NT.KERNEL", создана пользователем Entropy, 9 мар 2021.

  1. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    Здрасти,как вам известно для юзермода есть функции для чтения и записи в память процесса(Read\WriteProcessMemory),так возникает вопрос,может ли загруженный драйвер читать и записывать память других драйверов ? очень интересно будет рассмотреть реализацию этого
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ты путаешь процессы и ядро, у каждого процесса своя виртуальная память, память ядра образно одна, драйвер может писать что угодно, куда угодно, главное в бсод систему не уронить.
     
  3. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    то есть надо отследить адрес куда загружен драйвер ?
    --- Сообщение объединено, 9 мар 2021 ---
    но также нужно учитывать атрибуты памяти
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ты хочешь пропатчить код другого драйвера или что?
     
  5. X-Shar

    X-Shar Active Member

    Публикаций:
    0
    Регистрация:
    24 фев 2017
    Сообщения:
    354
    А ядро это позволит, пачгарды всякие и т.д. ?
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    > память ядра образно одна

    На самом деле это не так, есть сессии где память ядра не общая. Изменяются таблицы адресной трансляции MiAttachSession() etc. Адрес может одинаковым быть, а значение по нему разное. Так отображается гуй в ядро каждой сессии.

    Entropy,

    > отследить адрес куда загружен драйвер ?

    Есть такая интернал функция MmEnumerateSystemImages(). Подключается к сессии, получает инфу про образ, дальше перечисляет сессии и образы.

    > может ли загруженный драйвер читать и записывать память других драйверов ?

    В юзер манипуляции адресами проходят через VAD, в ядре через MDL. Что это такое можешь почитать у Рихтера или есчо где то тут например.
     
  7. cddee3

    cddee3 Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2020
    Сообщения:
    55
    На самом деле это не так, если работает Hyper-V с включенным VBS то будут два ядра ntoskrnl.exe и securekernel.exe
    securekernel.exe будет в защищенном мире VTL1 доступ к нему блокируется гипервизором на уровне SLAT, но адресное пространство - общее
     
  8. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    откуда такая инфа ? сурки wrk или таблица экспорта ?
    --- Сообщение объединено, 12 мар 2021 ---
    нет,меня интересует чтение памяти
    --- Сообщение объединено, 12 мар 2021 ---
    пачгард это совсем другое,он не контролирует целостность загруженных драйверов
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Entropy,

    > откуда такая инфа ?

    Так дебаг символы любой диз обрабатывает, идой открыл да посмотрел. Это в несколько кликов мышем конечно, наверно вопрос как это найти - я не первый месяц в кернел там неплохо ориентируюсь. Без аттача к сессиям образу ты не перечислишь. Если большое количество экспортных апи, в юзер например я предпочтительно использовал RtlWalkFrameChain() тк это табличные решения не блокирующие поток, в ядре вариков больше. Там всё упирается как ты сможешь найти символьную апи, тоесть там есть всё но оно не паблик что значит не внесено в экспорт.
    --- Сообщение объединено, 12 мар 2021 ---
    > нет,меня интересует чтение памяти

    Ты не описал проблему с чтением, рано походу тебе в ядро лезть покури архитектуру пару лет(ты можешь тупо что то копипастить сбилдить оно упадёт но отладить ты это не сможешь, затем тупо кинешь потратив очень много времени, так у всех было новичков) :)
     
  10. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    уже не успею,нельзя исключать что архитектура с течением времени будет усложняться,думаю для ознакомления эти пару лет подойдут
     
    Indy_ нравится это.
  11. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Entropy,

    Да, это можно назвать проблемой вхождения". Попытка догнать поезд.
     
    M0rg0t нравится это.
  12. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    если отрубить "защитные" рюшечки, то дравер обретает силу былых времён. к тому же, скорость софта заметно растёт :)
     
  13. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    а если подробнее и как это относится к этой теме ?
     
  14. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    так тебе на какую вынь нужны дрова и цель этих дров?
     
  15. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    вынь 7,цели: чтение памяти других загруженных дров