Запрет изменения базы kernel32

Тема в разделе "WASM.WIN32", создана пользователем float, 12 май 2011.

  1. gaeprust

    gaeprust New Member

    Публикаций:
    0
    Регистрация:
    2 май 2011
    Сообщения:
    188
    float
    1. Перечисляются все секции в модуле посредством NtQueryVirtualMemory. На каждой итерации адрес увеличивается на получаемый размер региона. RVA, Size, Protect каждого региона сохраняется в виде структуры в массиве.
    2. Создаётся не файловая секция и проецируется на R/W.
    3. Перичисляются все описатели регионов в таблице и каждый описываемый регион копируется в проекцию секции по смещению в ней равному RVA копируемого региона. Сохранять секции кода из текущей проекции не обязательно, можно спроецированть оригинальный модуль и секции для которых нет W-атрибута сохранить. Это приведёт к восстановлению проекции.
    4. Оригинальный модуль анмапится посредством NtUnmapViewOfSection.
    5. Выполняется цикл проекцирования регионов из секции. Каждый регион проецируется по RVA из таблицы и с сохранёнными атрибутами.

    Это древний код, сейчас автор реализовал бы совершенно иначе. Для чего там изменяются сегментные регистры не знаю, видимо были есчо какието манипуляции с LDT..