Получение доступа к виртуальной памяти

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by VERte][, 1 May 2012.

  1. VERte][

    VERte][ Elder - Старейшина

    Joined:
    17 May 2007
    Messages:
    240
    Likes Received:
    163
    Reputations:
    32
    Всем доброе время суток.
    Есть следующий пока теоретический вопрос: как получить из режима ядра доступ к памяти произвольного процесса?

    Опишу проблему подробнее: Есть процесс родитель, который вызывает CreateProcess(). В ядре я хочу отлавливать появление нового процесса и заносить его в свой список на основе некоторых данных относящихся к образу (например хэша), причем отлов должен происходить на самом раннем этапе, до передачи хэндла родителю, до появления потоков в процессе, в общем на этапе инициализации. Для такого отлова я в PspCreateProcess() выбрал функцию MmInitializeProcessMemmory(); принимающую в качестве аргументов ссылку на eprocess и ссылку на объект типа секция. После выполнения этой функции исполняемый образ проецируется на адресное пространство нового процесса. И вот здесь я хочу прочитать некоторые данные из памяти создаваемого процесса. Как это можно сделать если выполнение происходит в контексте родителя, а у нового процесса нет ни хэндлов, ни потоков?
    Есть вариант заюзать ZwMapViewOfSection(), т.е. замапить физпамять, в которой находится образ, в виртуальную память родителя. Можно ли так сделать, не возникнет ли каких-нибудь конфликтов?