Re: ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY
От: Аноним  
Дата: 01.12.13 22:51
Оценка: 16 (2) +1
>как и для чего это делается отдельный вопрос, не относящийся к сути проблемы
Ммм.. Гхм.. Окей.

По сути проблемы — это, видимо, SMEP. Запрет на выполнение юзермодных страниц из r0.
Re: ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY
От: Аноним  
Дата: 01.12.13 23:00
Оценка: +2
> ситуация когда ring0 вызывает функцию в юзермодной длл.

Отрезать руки за такое
ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY
От: anonymous185  
Дата: 01.12.13 22:31
Оценка: 5 (1)
есть (необычная) ситуация когда ring0 вызывает функцию в юзермодной длл. (как и для чего это делается отдельный вопрос, не относящийся к сути проблемы). на xp/2003/vista/2008/win7/win8 (32 и 64) всё работает стабильно. а вот на win 8.1 32 бит PAE (64 пока не смотрел) — вываливается в BSOD при попытке исполнения первой инструкции в user space.



#pf — ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY

Page-Fault Error Code: 0x11

Virtual address for the attempted execute — совпадает с адрессом функцию в юзермодной длл (он же в CR2)


смотрю в PTE он валидный и NX бит в нём не установлен !
вообще все соседние PTE 'правильные' — там где в длл данные — есть NX для этих страниц, где код — нет
ну и если просто в ring3 вызвать функцию — то всё ok.
вообщем что-то никак не могу понять — почему процессор генерит исключение, если память executable (нет NX бита) и только в ring0 (по идее не должно зависит от этого а только от NX). ну и как я писал выше проблема появилась только на 8.1 — на всех предыдущих системах работает. есть какие-то мысли почему это происходит ?
Re[2]: ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY
От: anonymous185  
Дата: 02.12.13 06:26
Оценка:
Здравствуйте, Аноним, Вы писали:

>>как и для чего это делается отдельный вопрос, не относящийся к сути проблемы

А>Ммм.. Гхм.. Окей.

А>По сути проблемы — это, видимо, SMEP. Запрет на выполнение юзермодных страниц из r0.


да вы правы, это действительно CR4.SMEP = 1 . не знал об этом (SMEP) раньше. спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.