ویژگی Control Flow Guard در سیستمعامل ویندوز چیست و چه تاثیری بر Frame Rate دارد؟
درود بر شما همراهان و مخاطبان مجله اینترنتی ساعت هفت، در این مقاله میخواهیم دربارهی یکی از ویژگیهای Windows Defender در سیستمعامل Windows صحبت کنیم که بسیاری از کاربران در شبکههای اجتماعی و فرومهای مربوط به Gaming معتقدند با Off کردن آن توانستهاند به نرخ فریم پایدار دست یابند و مشکل Frame Stutter خود را در بازیای “خاص” برطرف کنند. پس با ما همراه باشید تا دربارهی Control Flow Guard بیشتر بدانید.
مقدمه
با شنیدن خبر انتشار ابزار Mod سازی بازی Witcher 3، دوباره این بازی را نصب کردم و اینبار به سراغ نسخهی Next Generation آن رفتم که برای کنسولهای نسل نهم و PCهایی که قابلیت Ray Tracing دارند، عرضه شده است (در ادامه، توضیحات مربوط به نسخهی PC بازی است). با نصب بازی Witcher 3 با دو Icon روبرو شدم که یکی برای اجرای بازی در حالت Dx12 و دیگری Dx11 بود که مربوط به Direct X در سیستمهای مختلف با کارتگرافیکهای متفاوت میشود. از آنجایی که کارت گرافیک سری 40 انویدیا را داشتم به سراغ Dx12 رفتم و آن را اجرا کردم و تنظیمات دلخواه خود را در بخش Video و Graphic اعمال کردم و به بازی را اجرا کردم.
در حین اجرای بازی متوجه سکتههای Frame شدم، یعنی انگار بازی برای ۱ ثانیه متوقف شده و سکته میزند و دوباره با فریم ۹۰ یا ۹۵ اجرا میشود. این سکتههای گاه و بیگاه که هر ۸ یا ۱۰ دقیقه یکبار اتفاق میافتاد بر روی اعصابم رفت. با Off کرد گزینهی Frame Generation در بخش Video، زمان رخ دادن سکتههای فریم ریت به ۱۵ تا ۲۰ دقیقه کاهش یافت ولی همچنان وجود داشتند. گزینههای مختلف را در Graphic تست کردم، Ray Tracing را Off کردم ولی همچنان این سکتهها که Frame Stutter خوانده میشوند، وجود داشتند. با جستجو در اینترنت در نهایت به راه حلی دست یافتم که در نگاه اول ریسک بالایی داشت زیرا تغییراتی در سیستم ویندوز باید اعمل میشد اما چون بسیاری مشکلشان با این روش حل شده بود، پس به سراغش رفتم و نتیجه خارقالعاده بود. به همین منظور این مقاله را تهیه کردم تا برای شما مخاطبان که احیاناً مشکل مرا داشتید و از پیدا کردن راه حل نااُمید شدهاید، امید را در دلهایتان دوباره زنده کنم (توضیحات پیرامون CFG از وب سایت thewindowsclub.com ترجمه شده است).
ویژگی Control Flow Guard چیست؟
ویژگی امنیتی داخلی ویندوز 11/10 – Control Flow Guard (CFG) برای مبارزه با آسیبپذیریهای تخریب حافظه طراحی شده است. Control Flow Guard به جلوگیری از تخریب حافظه کمک میکند، که جلوی حملات باج افزاری را میگیرد. قابلیتهای سرور محدود به هر چیزی است که در آن نقطه از زمان برای کاهش سطح حمله مورد نیاز است. Exploit Protection بخشی از ویژگی Exploit Guard در Windows Defender است و CFG بخشی از این ویژگی است.
حال Control Flow Guard چیست و چگونه کار میکند؟ CFG یک ویژگی است که اجرای کد دلخواه را برای اکسپلویتها ( بخشی از یک کد یا برنامه است که به طور مخرب نقصها و نقاط آسیبپذیر نرمافزار یا سختافزار برای شروع یک حمله (ویروسی، باجافزاری، تروجانی وغیره) مورد استفاده قرار میدهد ) از طریق آسیبپذیریهایی مانند سرریز بافر دشوارتر میکند. همانطور که میدانید، آسیبپذیریهای نرمافزاری اغلب با ارائه دادههای بعید، غیرمعمول یا شدید (Extreme) به یک برنامهی در حال اجرا مورد سوءاستفاده قرار میگیرند. به عنوان مثال، یک مهاجم میتواند از آسیبپذیری سرریز بافر با ارائه ورودیهای بیشتر از آنچه انتظار میرود به یک برنامه سوءاستفاده کند، در نتیجه ناحیهای را که برنامه برای نگهداری پاسخ اختصاص داده است، بیش از حد اجرا کند. این طرح احتمالاً حافظه مجاور را که ممکن است نشانگر تابع را نگه دارد، خراب میکند. هنگامی که برنامه از طریق این تابع فراخوانی میکند، ممکن است به مکان ناخواستهای که توسط مهاجم مشخص شده است، برود.
برای جلوگیری از چنین مواردی، ترکیبی قوی از کامپایل و زمان اجرا که توسط Control Flow Guard پشتیبانی میشوند، یکپارچگیِ جریانِ کنترلی را زیرِ ذرهبین قرار داده و نقاطی را که میتوان دستورالعملهای غیرمستقیم به آنها داد و اجرا کرد را به شدت محدود میکند. همچنین مجموعهای از عملکردها را در برنامه شناسایی میکند که میتوانند اهداف بالقوهای برای تماسهای غیر مستقیم باشند. به این ترتیب، Control Flow Guard چکهای امنیتی اضافی را وارد میکند که میتواند تلاشها برای ربودن کد اصلی را تشخیص دهد (سرقت اطلاعات، نفوذ، هک کردن).
هنگامی که یک بررسی CFG در زمان اجرا با شکست مواجه میشود، سیستمعامل ویندوز بلافاصله برنامه را خاتمه میدهد، بنابراین هرگونه سوءاستفادهای را که سعی در فراخوانی غیرمستقیم یک آدرس نامعتبر دارد، از بین میبرد.
چگونه Control Flow Guard بر عملکرد جستجوگر تاثیر میگذارد؟
گزارش شده است که این ویژگی باعث مشکلات عملکردی برای مرورگرهای مبتنی بر Chromium میشود [با جستجویی که در فرومهای Gaming داشتم این مورد فقط مختص مرورگرها نیست]. به نظر میرسد همه مرورگرهای اصلی مانند گوگل کروم، مرورگر مایکروسافت Edge و Vivaldi و بسیاری از مرورگرهای دیگر تحت تأثیر آن قرار گرفتهاند. این مشکل زمانی آشکار شد که توسعه دهندگان Vivaldi واحد Chromium خود را روی ویندوز 7 آزمایش کردند و متوجه شدند که آنها سریعتر از آخرین نسخه ویندوز 11/10 کار میکنند.
مدیر تیم ویندوز Kernel این مشکل را تایید کرد و گفت که آنها یک اصلاح ایجاد کردهاند که ظرف چند هفته ارسال میشود.
چگونه Control Flow Guard را در ویندوز Off یا On کنیم؟
[توجه داشته باشید که با خواند دو بخش قبلی مقاله ممکن است اینطور تصور کنید که CFG ویژگیای حیاطی برای سالم نگهداشتن سیستم از حملات هکری، ویروسی و غیره است. جواب آری است! اما سیستمعامل ویندوز این امکان را به ما میدهد تا CFG را برای یک App خاص در ویندوز On یا Off کنیم، بدون اینکه کلِ سیستم را در حالت ریسکپذیری قرار دهیم].
برای On و یا Off کردن ویژگی Control Flow Guard از روش زیر استفاده کنید (توجه داشته باشید که حتماً از بازی خارج شده و سپس این مراحل را انجام دهید تا تغییرات اعمال شوند):
۱- ابتدا بر روی Start کلیک کنید.
۲- در قسمت Search واژهی “Exploit Protection” وارد کرده و انتخاب کنید.
۳- بر روی زبانهی Program Settings کلیک کنید.
۴- بر روی Add Program To Customise+ کلیک کنید.
۵- بر روی “Choose Exact File Path” کلیک کنید.
۶- در پنجرهی باز شده مسیر دقیق فایل EXE بازی را وارد کنید و فایل Exe بازی را انتخاب و سپس Open را بزنید.
۷- تنظیمات مختص به بازی مدنظرتان باز میشود. به سمت پایین Scroll کنید تا Control Flow Guard را بیابید (هرگز از For Global Setting استفاده نکنید).
۸- تیک مربوط به Override System Settings را فعال کنید و خط پایین آن را از On به Off تغییر دهید (یا بلعکس) و بر روی Apply کنید.
نکته: چنانچه درخواست Administer مربوط به Windows Defender برای اعمال تغییرات و کسب اجازه از Admin ویندوز ظاهر شد، بر روی Yes کلیک کنید، در غیر اینصورت تغییرات اعمال نخواهد شد.
۹- ممکن است ویندوز در خواست Restart کند (بستگی به سطح طبقهبندی App دارد ولی چون App مدنظر Game است، ویندوز چنین درخواستی نمیکند و صرفاً متنی زرد رنگ را مشاهده میکنید که هشدار میدهد بازی را Restart کنید تا تغییرات اعمال شوند).
در نهایت باید عرض کنم که Off کردن CFG برای تمام بازیها به منظور دریافت Frame پایدار اثربخش نیست. ۳ موردی که با Off کردن Control Flow Guard توانستم تجربهای بدون Frame Stutter را داشته باشم، Elden Ring – Witcher 3 Next Generation و Baldur’s Gate 3 بودند. این بازیها مبتنی بر Direct x11 هستند که چنانچه بر روی سیستمهای Dx12 اجرا شوند چنین مشکلی بوجود میآید. دقت داشته باشید که بازیهایی مانند Hellblade 2 که مختص Direct x12 هستند، نیازی به Off کردن CFG ندارند زیرا کاملاً با کارتهای گرافیکی مبتنی بر Dx12 سازگارند. اما بازیهایی مانند Control (که در فرومهای Gaming بحثِ گرفتن فریم ثابت با Off کردن CFG از همین بازی آغاز شد) یا Valorant و یا Fortnite و غیره… که مبتنی بر Dx11 هستند و صرفاً با آپدیتی به Dx12 ارتقا داده شدهاند، با Off کردن CFG نتیجهی خارقالعادهای را در گرفتن Frame ثابت از آنها خواهید دید.
پس دوباره عرض میکنم که این مورد را بر روی تمام بازیها اعمال نکنید و چنانچه با اجرای بازیای، مثل Hellblade 2 دچار اُفت فریم و یا Frame Stutter شدهاید و در عین حال کارت گرافیک Dx12 دارید، مشکل را در میزان Ram (حداقل ۱۶ گیگ باید باشد) یا Overheat شدن کارت گرافیک و CPU جستجو کنید. شاید بازی به خوبی بهینه نیست (مشکلی اکثر بازیهای نسل نهم دچارش هستند) و بسیاری موارد دیگر، دقت داشته باشید که این مقاله صرفاً جهت آشنایی شما با Control Flow Guard و کارکرد آن و نحوهی On و Off کردن آن بود و تجربهای که خود بنده در بازیهای Witcher 3 Next Generation و Baldur’s Gate 3 و Elden Ring داشتهام.