Существует ли способ модификации исполняемого кода приложения Ring3 из Ring0. Судя по тому, что тот же Softice очень даже благополучно ставит, где попало точки останова, всё реально. Хотелось бы модифицировать не 1-2 байта кода, а что-то около 4 Кб. Если кто-то сталкивался, буду признателен даже за обобщённый алгоритм.
1)сбрасываем в сr0 флаг запрешяющий запись в r3, примерно так: mov eax,cr0 push eax and eax,0fffEffffh mov cr0,eax 2)пишем данные по адресу... Ж)
ProgramMan Сказки не рассказывай. Лучше читай мануалы папы-интела. Когда бит WP сбрасывается ? Когда модифицируются страницы со сброшеным битом U, то есть системные, имеющие аттрибут только чтение. А к стрницам с битом U можно лазить без всяких подобных извратов. Slav так что пиши в 1-2й гиг без проблем, сам знаешь каких
CARDINAL, а ты поробуй. Лично проверял(драйвер модифицировал кое какие dll-ки) Inhibits supervisor-level procedures from writing into user-level read-only pages when set; allows supervisor-level procedures to write into user-level read-only pages when clear. This flag facilitates implementation of the copyon- write method of creating a new process (forking) used by operating systems such as UNIX*.
ProgramMan попробовать что ???? Друг, если б я не знал этого, то соотвтестсвенно не писал бы об этом. Повторяю ещё раз, для модификации пользовательских страниц не требуется сброс бита WP.А по части твоего поста, не в обиду, но, на заьоре тоже кое что написано, а реально там дрова..
сброс WP флага поможет писать c Ring0 в user_read_only page, не вызвав исключения; если page_is_writeble, то незачем WP сбрасывать; WP в w9x он итак сброшен, в W2K-XP сбросывать его - хулиганство; Культурно надо так, как делает WriteProcessMemory; потрейсуйте разок..