понедельник, 1 декабря 2008 г.

Просто следуйте правилам и никто не пострадает

Это перевод Just follow the rules and nobody gets hurt. Автор: Реймонд Чен.

Может быть вы были ленивы и никогда не вызывали VirtualProtect(PAGE_EXECUTE), когда вы создавали код на лету. Вам это сходило с рук, потому что у системы защиты страниц процессора i386 нет режима "читать, но не выполнять", поэтому всё, что вы могли читать, вы могли и выполнять.

До сегодняшего дня.

Начиная с Windows XP Service Pack 2 на процессорах, которые это поддерживают, стек и куча более не будут исполняемыми. Если вы сделаете попытку выполнить код в стеке или в куче, будет возбуждено исключение, а код выполняться не будет. Другими словами, защита выполняeмых страниц скоро будет вводиться насильно, потому что появились процессоры, которые её поддерживают (вообще-то, мне кажется, что Windows XP для Itanium уже используют новый уровень защиты, и те из вас, у кого есть возможность поиграть со своим Itanium, уже могли видеть это в действии).

Если вы были хорошим разработчиком и следовали правилам по защите страниц памяти, тогда это изменение вас никак не затронет. Но если вы читерили и пользовались деталями реализации конкретного железа, то у вас могут быть проблемы. Считайте, что вас предупредили.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.