В XP SP2 софтварный DEP в юзермоде проверяет исполнение кода в стэке только при обработке исключений в KiUserExceptionDispatcher. Соотв-но, если проц не поддерживает хардварный DEP (биты NX\XD в AMD64\EM64T), то включение DEP в XP SP2 не может запретить исполнение (юзермодного) кода в стэке, если этот код не вызывает исключений. Делаются ли какие-то доп.проверки при переходе в ядро - не знаю
leo там везде про winxp sp2 относится ли это к любым ОС работающим на железе без аппаратной поддержки DEP?
Не знаю. До XP SP2 вообще никакого DEP не было, а после - в принципе могли что-то еще накрутить. Но тут нужно учитывать следующее. Если не считать обработку исключений, то без аппаратной поддержки ось может контролировать юзерский код только по адресам возврата при вызове ф-й АПИ или по адресам ф-й ThreadProc, WndProc и т.п. Но поскольку проверка атрибутов страниц сопровождается переходом в ядро (ZwQueryVirtualMemory), то вставлять ее в каждую АПИ-функцию довольно накладно. Поэтому видимо, если и добавили такие проверки, то не во все функции АПИ, а лишь в некоторые "избранные". Но разумеется, это лишь ИМХО PS: Ну а элементарный код типа #15, не использующий обращения к АПИ, разумеется вообще никак проконтролировать невозможно без аппаратной поддержки
Оффтоп leo у них все просче как в пробке Код (Text): где-то в глубине ядра void kernel_function_what_execute_everywhere() { ZwQueryVirtualMemory(...); Sleep(50); DoNothing(...); return Random(0xFFFFFFFF); } P.S. не понявших просьба не пинать - это шутка!