حفاظت از فضای آدرس اجرایی
پیاده‌سازی در سیستم‌عامل‌های گوناگون > ویندوز

قابلیت بیت غیراجرایی اولین بار برای معماری X86 در ویندوز XP با service pack۲ (در سال ۲۰۰۴) و در
ویندوز سرور ۲۰۰۳ با service pack۱ (در سال ۲۰۰۵) عرضه شد. راهکار حفاظت از فضای آدرس اجرایی در ویندوز "جلوگیری از اجرای داده" (Data Execution Prevention) و به اختصار DEP نام دارد.


قابلیت بیت غیراجرایی در ویندوز xp و ویندوز سرور ۲۰۰۳ به صورت پیشفرض برای سرویس‌های حیاتی ویندوز تنطیم شده است. همچنین اگر یک پردازنده X86 این قابلیت را در سخت‌افزار خود پشتیبانی کند، در این دو نسخه ویندوز نیز این ویژگی به صورت پیشفرض فعال می‌شود و اگر چنین قابلیتی در این معماری وجود نداشته باشد، این قابلیت در ویندوز نیز در دسترس نخواهد بود. 


نسخه‌های ابتدایی DEP تصادفی کردن چیدمان فضای آدرس‌(ASLR) را در نظر نگرفته بودند و احتمال حمله بازگشتی به libc وجود داشت و به وسیله آن می‌توانستند سیستم DEP را در زمان حمله از کار بیندازند.
مستندات روش PaX به طور دقیق دلیل لزوم وجود ASLR را شرح میدهد،
همچنین به عنوان یک اثبات مفهومی می‌توان جزئیات روشی را در نظر گرفت که DEP در صورت عدم وجود ASLR کارایی خود را از دست می‌دهد.
در صورتی که مهاجم آدرس داده‌های از پیش آماده شده مانند تصاویر و mp3ها را بداند می‌تواند یک حمله موفق داشته باشد.


مایکروسافت قابلیت ASLR را به ویندوز ویستا و ویندوز سرور ۲۰۰۸ افزود. در زیرساخت ارائه شده، DEP در هسته‌های ۶۴ بیتی به صورت پیشفرض و در نسخه‌های ۳۲ بیتی به کمک بهره‌گیری از هسته‌های PAE پیاده‌سازی شده است. در ویندوز ویستا DEP با نشان‌گذاری بخش‌هایی از حافظه آن‌ها را تنها به نگهداری از داده‌ها اختصاص می‌دهد که در پردازنده‌هایی با قابلیت بیت غیراجرایی، این بخش از حافظه غیراجرایی می‌باشد. 
در ویندوز ویستا و نسخه‌های بالاتر از آن، فعال و یا غیرفعال بودن DEP برای هر پردازه از طریق گزینه Processes/Details در مدیریت وظایف ویندوز قابل مشاهده است. 


ویندوز قابلیت DEP را به کمک Safe Structured Exception Handling" (SafeSEH)" مایکروسافت به صورت نرم‌افزاری و بدون نیاز به بیت غیراجرایی پیاده‌سازی کرده است. در برنامه‌هایی که به درستی کامپایل شده باشند، safeSEH کنترل می‌کند که خطای حین اجرای برنامه توسط هندلر خود برنامه که در زمان کامپایل وجود داشته است، مدیریت شود. با وجود چنین قابلیتی مهاجم نمی‌تواند هندلر خودش را در ورودی‌های بررسی نشده‌ی برنامه ذخیره و اجرا کند.


در صورتی که سخت‌افزار از بیت غیراجرایی پشتیانی کند در ویندوز به صورت پیشفرض فعال می‌شود. در ویندوز برنامه‌ها می‌توانند هم از طریق رابط کاربری و هم به کمک سرآیندهای موجود در فایل‌های PE صفحات غیرقابل اجرایشان را کنترل کنند. فراخوانی‌های موجود در Win32 به نام VirtualAlloc[Ex] و VirtualProtect[Ex] در زمان اجرا به برنامه امکان دسترسی به بیت غیراجرایی را میدهند. بدین ترتیب هر صفحه می‌تواند به صورت مجزا نشان اجرایی و یا غیراجرایی داشته باشد. هر دو قابلیت صفحه اجرایی و غیراجرایی از همان ابتدا تعبیه شده است. در CPUهایی که قبل از وجود بیت غیراجرایی طراحی شده است، وجود ویژگی اجرایی هیچ تاثیری نداشته است. در مستندات چنین است که این قابلیت امکان اجرا را فراهم می‌کند و در نتیجه برنامه‌نویسان نیز از آن به خوبی استفاده کرده‌اند. در قالب فایل PE نیز هر قسمتی به صورت جداگانه می‌تواند قابلیت اجرایش را مشخص کند. نشان اجرایی از زمان شروع در این قالب وجود داشته است و 
linkerهای استاندارد، حتی از مدتها قبل از وجود بیت غیراجرایی، به درستی از این نشان استفاده می‌کنند. به همین دلیل ویندوز می‌تواند به راحتی قابلیت بیت غیراجرایی را روی برنامه‌های قدیمی نیز به کار بگیرد. اگر برنامه‌نویس برنامه را با توجه به بهترین ساختارها کامپایل کرده باشد، برنامه پس از به کارگبری قابلیت بیت غیراجرایی نیز عملکرد خودش را ادامه می‌دهد. تنها در چندین مورد مشکلاتی وجود داشته است. به عنوان نمونه محیط اجرایی .NET مایکروسافت با بیت غیراجرایی مشکل داشته و منجر به به‌روزرسانی در این برنامه شده است.
سخت افزار پردازنده‌های قابل پشتیبانی: X86-64 (AMD64/ Intel 64)، IA-64، Efficeon، Pentium M، AMD Sempron
شبیه سازی: دارد
سایر سخت‌افزارهای پشتیبانی‌شده: هیچ
توزیع استاندارد: نسخه‌های بعد از ویندوز XP
تاریخ انتشار: ۶ آگوست ۲۰۰۴