«چگونه آپدیت ویندوز GTA: SA را خراب کرد؟»
👤 هیربد بهنام | کارشناسی ۱۳۹۹
☢️ بهدنبال انتشار آپدیت 24H2 ویندوز ۱۱، یک مشکل عجیب در بازی قدیمی Grand Theft Auto: San Andreas بهوجود آمد که باعث میشد هواپیمای آبنشین Skimmer قابلساخت نباشد. برنامهنویس ماد Silent Patch پس از بررسیهای دقیق، منشأ مشکل را یک باگ قدیمی در خود بازی یافت؛ در فایل دادههای بازی، فیلدهای مربوط به اندازهٔ چرخهای این هواپیما (که اصلاً چرخ ندارد) خالی مانده بود. این باعث میشد تابع خواندن اطلاعات در بازی که متغیرهایش را به درستی مقداردهی اولیه نمیکرد، از مقادیر تصادفی و باقیمانده در حافظۀ موقت استفاده کند.
🐞 این باگ برای بیش از دو دهه پنهان مانده بود، زیرا در نسخههای قبلی ویندوز، تابع fgets که بین خواندن خطوط فایل فراخوانی میشد، این مقادیر بازمانده را overwrite نمیکرد و یک عدد اعشاری (۰.۷) را به جا میگذاشت. اما در آپدیت جدید، تغییر در پیادهسازی توابع سیستمی (مانند LeaveCriticalSection) باعث شد فضای بیشتری از استک استفاده شود و این مقادیر بازمانده پاک شوند. در نتیجه، عددی بسیار بزرگ و نامعتبر برای ارتفاع هواپیما محاسبه و باعث میشد هواپیما در ارتفاع غیرممکنی ایجاد شود. این حادثه نمونهٔ بارزی از خطرات «رفتار نامشخص» در برنامهنویسی بود که پس از سالها، بهدلیل تغییر در محیط اجرا خود را نشان داد.
📁 متن «چگونه آپدیت ویندوز GTA:SA را خراب کرد؟» به قلم هیربد بهنام در شمارۀ چهارم نشریۀ بایت را از طریق فایل الکترونیکی یا وبسایت نشریه مطالعه کنید.
#شکار_باگ #سیستم_عامل
😌 Telegram | 🤖 Twitter
🌐 Website | 🌐 Linkedin
Post #53
1.74K