On-line patch
Даже находясь в нулевом кольце непосредственно модифицировать память, принадлежащую ядру нельзя. Дело в том, что все драйвера выполняются в едином адресном пространстве, общим с ядром, и без защиты от непредумышленной записи, система постоянно страдала бы от некорректно работающий драйверов, спроектированных непонятно кем.
Как и любую другую защиту от непреднамеренно доступа, запрет на модификацию ядерной памяти можно отключить. Существует по меньше мере два документированных способа сделать это — статический и динамический.
Статическое
отключение защиты сводится к созданию параметра EnforceWriteProtection типа REG_DWORD со значением 0h в следующем разделе системного реестра HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\ (cм. рис. 1), после чего ядро может модифицировать любой драйвер (но не прикладная программа!).
Основной недостаток этого способа в том, что некоторые сторожа следят за этой веткой и стоит только тронуть ее, как они поднимают дикий визг, а то и просто молчаливо удаляют EnforceWriteProtection, возвращая защиту назад. С другой стороны, некоторые честные программы (например, тот же soft-ice, именно так и работают), поэтому слишком ретивые сторожа рискуют отправится в мусорную корзину, где им самое место. Правда, подавляющее большинство нормальных людей с soft-ice не работают и статическое отключение защиты им ни к чему. Да и не безопасно в плане стабильности системы это — оставлять ее незащищенной.