بايت الحماية
بايت الحماية هو جزء من ذاكرة برنامج الكمبيوتر يساعد مطوري البرامج على اكتشاف تجاوزات المخزن المؤقت أثناء تطوير البرنامج. [ 1 ]
مبدأ
عند تجميع برنامج لأغراض تصحيح الأخطاء ، تُسبق وتُلحق جميع عمليات تخصيص الذاكرة ببايتات حماية. قد تقوم إجراءات تخصيص الذاكرة الخاصة بمهام إضافية لتحديد محاولات القراءة والكتابة غير المرغوب فيها خارج الذاكرة المخصصة. تساعد هذه البايتات الإضافية في اكتشاف ما إذا كان البرنامج يكتب في (أو حتى يقرأ من) مناطق ذاكرة غير مناسبة، مما قد يتسبب في تجاوز سعة المخزن المؤقت . في حال وصول خوارزمية البرنامج إلى هذه البايتات، يتم تنبيه المبرمج بمعلومات تساعده في تحديد المشكلة.
يمكن التحقق من الوصول غير المناسب إلى بايتات الحماية بطريقتين:
- عن طريق وضع نقطة توقف في الذاكرة عند شرط الكتابة و/أو القراءة لتلك البايتات، أو
- عن طريق تهيئة بايتات الحماية مسبقًا بقيم محددة والتحقق من القيم عند إلغاء التخصيص.
الطريقة الأولى لا يمكن تطبيقها إلا باستخدام مصحح أخطاء يدعم نقاط التوقف هذه، لكنها تزيد بشكل ملحوظ من فرص تحديد المشكلة. أما الطريقة الثانية فلا تتطلب أي مصححات أخطاء أو بيئات خاصة ، ويمكن تطبيقها حتى على أجهزة كمبيوتر أخرى، ولكن لا يتم تنبيه المبرمج بشأن تجاوز سعة الذاكرة إلا عند تحريرها، وهو ما قد يتأخر أحيانًا.
نظرًا لأن بايتات الحماية تتطلب تنفيذ تعليمات برمجية إضافية وتخصيص ذاكرة إضافية، فإنها تُستخدم فقط عند تجميع البرنامج لأغراض تصحيح الأخطاء. أما عند تجميعه كإصدار نهائي ، فلا تُستخدم بايتات الحماية إطلاقًا، ولا تُستخدم معها الإجراءات التي تعمل بها.
مثال
يرغب مبرمج في تخصيص مخزن مؤقت بحجم 100 بايت من الذاكرة أثناء تصحيح الأخطاء. لكن روتين تخصيص الذاكرة في النظام سيخصص 108 بايت بدلاً من ذلك، مع إضافة 4 بايتات حماية في البداية و4 بايتات في النهاية، وسيعيد مؤشرًا مُزاحًا بمقدار بايتات الحماية الأربعة في البداية إلى اليمين، مما يخفيها عن المبرمج. ينبغي على المبرمج بعد ذلك العمل مع المؤشر المُستلم دون معرفة وجود بايتات الحماية.
إذا قام برنامج المبرمج بالكتابة خارج المساحة المخصصة مباشرةً، فسيتم استبدال بايتات الحماية. لاحقًا، عند تحرير المساحة، سيتحقق روتين التحرير مما إذا تم تعديل بايتات الحماية، وسيبلغ عن خطأ إذا لزم الأمر.
مشاكل
تقوم إجراءات تخصيص الذاكرة بملء بايتات الحماية بقيم لا يُفترض أن تستخدمها خوارزميات المبرمج. مع ذلك، لا يمكن التنبؤ بهذا الأمر. فعندما تستخدم الخوارزمية هذه القيم وتستبدل بايتات الحماية بها (حيث تُؤخذ عملية الكتابة الأخيرة قبل إلغاء التخصيص فقط في الاعتبار)، لا يمكن اكتشاف تجاوز السعة، لأن البايتات لم تتغير فعليًا. بدلًا من ذلك، يمكن استخدام خيار نقطة توقف الذاكرة، الذي يُضبط بناءً على شرط الوصول إلى هذه البايتات في مصحح الأخطاء.
انظر أيضاً
مراجع
- ↑ "تقنيات الأمان: الحماية من اختراق المكدس (StackGuard)" . www.redhat.com . تم الاطلاع عليه بتاريخ 19-09-2024 .
- ذاكرة الحاسوب
- مصطلحات البرمجة
- تصحيح الأخطاء
