← أحدث الأبحاث
💻 computer science

Tamper-Proofing with Self-Modifying Code

تجادل هذه الورقة بأنه من خلال الاستفادة من التوقيت الخارجي، والتزامن، وحالة البنية الدقيقة كعناصر قابلة للرصد، يمكن هندسة الكود ذاتي التعديل ليصبح آلية فعالة وعملية ومكتشفة لمنع التلاعب تتفوق على محاكيات غير الكود ذاتي التعديل على المعالجات الشائعة الحديثة.

المؤلفون الأصليون: Gregory Morse, Tamás Kozsik

نُشر 2026-04-15
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Gregory Morse, Tamás Kozsik

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

الفكرة الكبرى: حارس الأمن "ذاتي التعديل"

تخيل أن لديك وصفة سرية غالية جداً في مطبخ لا تثق به. لا يمكنك قفل الباب لأن الشخص الموجود بالداخل يحتاج للطبخ. عادةً، قد تضع كاميرا مراقبة (فحص ثابت) لترى ما إذا كان أي شخص سيغير الوصفة. لكن يمكن للصوص الماكر أن يطفئ الكاميرا ببساطة، ويغير الوصفة، ثم يعيد تشغيل الكاميرا قبل أن تلاحظ ذلك.

تقترح هذه الورقة نوعاً مختلفاً من حراس الأمن: الطاهي ذاتي التعديل.

بدلاً من مجرد مراقبة الوصفة، يقوم هذا الطاهي بإعادة كتابة الوصفة باستمرار أثناء طبخها.

  1. الخدعة: يكتب الطاهي ملاحظة على الوصفة، يطبخ خطوة واحدة، ثم يمسح تلك الملاحظة فوراً ويكتب ملاحظة جديدة للخطوة التالية.
  2. الفخ: إذا حاول لص التسلل وتغيير الوصفة لسرقة السر، فسيلاحظ الطاهي ذلك فوراً. لماذا؟ لأن الطاهي يضبط توقيته بدقة شديدة لمعرفة كم تستغرق كل خطوة. إذا قام اللص بتغيير الورقة، فإن توقيت الطاهي سيختل (مثل توقف الساعة أو تسارعها)، وينطلق جرس الإنذار.

تجادل الورقة بأنه بينما يمكن للحاسوب نظرياً محاكاة هذا السلوك دون إعادة كتابة الكود فعلياً، فإن القيام بذلك على حاسوب حديث سيكون بطيئاً وخرقاً للغاية لدرجة تجعل من المستحيل القيام به دون كشف الأمر.


المشكلة: لماذا لا تعمل القواعد القديمة؟

في الأيام الخوالي لنظرية الحاسوب، قال الخبراء: "لا تحتاج لإعادة كتابة الكود لفعل أي شيء؛ يمكنك فقط محاكاته". الأمر يشبه قول: "لا تحتاج لرسم لوحة بالفعل؛ يمكنك فقط وصف اللوحة بدقة متناهية لتصبح هي نفسها".

لكن في العالم الحقيقي، الوقت مهم.
الحواسيب الحديثة تشبه خطوط التجميع الضخمة وعالية السرعة. لديها "خطوط أنابيب" (pipelines) تحافظ على حركة التعليمات حتى قبل أن تنتهي. إذا حاولت تغيير التعليمات أثناء حركتها عبر الخط، سيتعين على المصنع بأكمله التوقف، وتفريغ الخط، ثم البدودة من جديد. وهذا ما يسمى بـ "تفريغ خط الأنابيب" (Pipeline Clear).

  • التشبيه: تخيل قطاراً يتحرك بسرعة 200 ميل في الساعة. إذا حاولت تبديل المسارات بينما القطار عليها، فسيتحطم القطار. يجب على الحاسوب أن يتوقف، ويعيد الضبط، ويبدأ من جديد. وهذا يستغر وقتاً طويلاً.
  • معضلة اللص: اللص الذي يحاول اختراق برنامجك يجب أن يتظاهر بأنه هو الحاسوب. وللقيام بذلك دون إعادة كتابة الكود فعلياً، عليه محاكاة كل عمليات "تبديل المسارات" و"توقف القطارات" المعقدة تلك بدقة. تجادل الورقة بأن محاكاة هذا الأمر تتطلب الكثير من قدرة المعالجة لدرجة أن حاسوب اللص سيكون بطيئاً جداً لدرجة أن الضحية سيلاحظ: "مهلاً، برنامجي يعمل أبطأ بـ 100 مرة مما ينبغي!"

الحل: كيف جعلناه سريعاً؟

أدرك المؤلفون أنه إذا قمت بإعادة كتابة الكود بشكل عشوائي، فستعطل "خط التجميع" الخاص بالحاسوب باستمرار. لذا، قاموا بهندسة طريقة للقيام بذلك بسلاسة.

  1. فك الحلقات (خط التجميع) - Loop Unrolling:
    بدلاً من كتابة تعليمات واحدة، وتغييرها، ثم الانتقال للتي تليها، يقومون بكتابة قائمة طويلة من التعليمات (فك الحلقة) وتغييرها في مجموعات.
  • التشبيه: بدلاً من إيقاف القطار عند كل محطة لتغيير المسار، يقومون بتغيير المسارات في مستودع ضخم بعيد عن القطار، ثم يتركون القطار ينطلق بسرعة عبر المدينة دون توقف.
  1. التعديل عبر الصفحات (خدعة الجدولين) - Cross-Page Modification:
    قاموا بتقسيم الكود عبر "صفحتين" مختلفتين من الذاكرة. بينما يقرأ الحاسوب وينفذ التعليمات على الصفحة أ (Page A)، يقوم حارس الأمن بهدوء بإعادة كتابة التعليمات على الصفحة ب (Page B).
  • التشبيه: تخيل ساحراً يؤدي خدعة على طاولة. بينما يشاهد الجمهور الطاولة، يقوم مساعد الساحر بتبديل الأدوات على طاولة ثانية خلف ستارة. لا يرى الجمهور عملية التبديل أبداً، لذا يظل "السحر" (التوقيت) مثالياً.
  1. الساعة الموثوقة (ساعة الإيقاف) - The Reliable Clock:
    يستخدمون ساعة داخلية دقيقة جداً مدمجة في المعالج (تسمى RDTSCP) لقياس المدة التي يستغرقها الكود بالضبط. إذا حاول اللص تزييف التوقيت أو إبطاء المحاكاة، فستظهر ساعة الإيقاف فرقاً واضحاً.

النتائج: السرعة مقابل الأمان

اختبر الباحثون هذا على حواسيب حقيقية (شرائح Intel و AMD).

  • الطريقة "الساذجة": إذا قمت فقط بإعادة كتابة الكود دون تخطيط، فسيكون الأمر بطيئاً للغاية (مثل سيارة عالقة في الطين). فهو أبطأ بـ 7.9 مرة من الكود العادي.
  • الطريقة "الذكية": باستخدام حيلهم الهندسية الجديدة (فك الحلقات والتبديل عبر الصفحات)، يكون الكود ذاتي التعديل أبطأ بـ 2.5 مرة فقط من البرنامج العادي.
  • مشكلة اللص: لكي يزيف اللص هذا السلوك دون إعادة كتابة الكود فعلياً، يجب عليه محاكاة سلوك الحاسوب بأكمله. وجدت الورقة أن المحاكاة "الأمينة" أبطأ بـ 90 مرة من الشيء الحقيقي.

الخلاصة: من المستحيل عملياً أن يزيف لص سلوك هذا الكود ذاتي التعديل دون أن يلاحظ الضحية هذا البطء الهائل.

لماذا هذا مهم؟

هذه طريقة جديدة لحماية البرامج في الأماكن التي لا تثق بها (مثل حاسوب مخترق أو خادم سحابي).

  • الطريقة القديمة: "ثق بي، لدي كلمة مرور". (سهلة الكسر).
  • الطريقة الجديدة: "أنا أعيد كتابة حمضي النووي باستمرار أثناء عملي. إذا حاولت تغييري، فسأصبح بطيئاً جداً لدرجة أنك ستُكشف".

ملخص في جملة واحدة

تعلمنا الورقة كيفية بناء حارس أمن برمجِي يعيد كتابة تعليماته باستمرار أثناء التشغيل؛ ولأن الحواسيب الحديثة معقدة للغاية، لا يمكن للمخترق محاكاة هذا السلوك دون إبطاء البرنامج لدرجة تجعل الاختراق يُكتشف فوراً.

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →