вот вижу (в IDA), что для страницы стека - есть R&W атрибуты для кода R&X как, млин, выполнить в стеке... по всем статьям - в стеке должно быть разрешено Х... а если не должно, то что делать? вот если как-то мне прояснить по тексту сможете, болванка из С++, на которой изучаю: Код (Text): int fun(int a) { int b; _asm {int 3} b=a; printf("Parametr 1: %d\n",b); return a; } int main(int argc, char* argv[]) { int i; __asm{ push i push 0xAABBCCDD push 0x11223344 } for(i=1;i<argc;i++) fun(atoi(argv[i])); return 0; } VC++6 (SP6)
строго говоря, Интеловые камни поддерживают атрибут X только для сегментов, но не для страниц. поскольку в винде код, данные и стек засандалили в один сегмент, ему дали право на исполнение (на уровне сегмента). на уровне страниц контролируется лишь доступ на чтение/исполнение и запись. атрибут X, присустствующий в PE-файле, равносилен R, и наоборот
извиняюсь, если криво выразился именно про сегменты вопрос и задаю... вот как это выглядит у меня курсор на сегменте стека - у него eXecute нет разрешений вопрос - как реализовать в таких условиях срыв стека с выполнением навязанного кода? http://smax.indusoft.ru/ss/ida.gif
Тебе же уже обьяснили, что в винде не нужно Х чтобы выполняться, достаточно R. Вот M$ только во втором SP к XP пытается как-то ограничивать выполнение на стэке.