مرجع
آخر الزيارات

تعتيم (برمجة)

1٬008 كلمة•0 مشاهدة•🗒️ منذ 14 يوماً
باختصار: في تطوير البرمجيات، يُعرف التعتيم بأنه هو عملية إنشاء كود مصدر أو كود آلي يصعب على البشر أو أجهزة الحاسوب فهمه. تجد هنا «المسابقة الدولية لتشفير أكواد C»، «أدوات آلية» و«للترفيه» ضمن 14 قسماً.
المحتويات
  1. المسابقة الدولية لتشفير أكواد C
  2. أدوات آلية
  3. للترفيه
  4. ملخص
  5. عيوب التعتيم
  6. التقنيات
  7. التعتيمالنموذجي
  8. لغات البرمجة غير الاعتيادية
  9. إخطار المستخدمين بكود التعتيم
  10. التعمية
  11. قراءة متعمقة
  12. التعتيمورخص copyleft
  13. مترجم من مصدر إلى مصدر
  14. برامج فك التشفير
تعتيم (برمجة)

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

المسابقة الدولية لتشفير أكواد C

  • حماية كود Java عبر التعتيم على الكود، ACM Crossroads، إصدار ربيع 1998
  • هل يمكننا تعتيمالبرامج؟
  • يوري ليفشيتس. محاضرات حول التعتيم على البرامج (ربيع 2005)

أدوات آلية

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

كذلك، يستعمل مُجمِّع movfuscator C الخاص بـ x86_32 ISA تعليمات mov فقط من أجل الشويش.

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

علاوةً على ذلك، توجد مجموعة متنوعة من الأدوات التي تساعد في تعتيمالتعليمات البرمجية أو تنفيذها. وتشمل هذه الأدوات أدوات البحث التجريبية التي أنشأها الأكاديميون، وأدوات الهواة، والمنتجات التجارية التي كتبها المحترفون، وبرامج المصدر المفتوح. توجد كذلك أدوات إزالة التعتيم التي تحاول إجراء التحويل العكسي.

للترفيه

من جهة ثانية، يمكن أن يكون كتابة وقراءة الكود المصدري المُشوش أمرًا مثيرًا للعقل. تُقدِّم الكثير من مسابقات البرمجة مكافأة للكود الأكثر تشويشًا بشكل إبداعي، مثل مسابقة الكود C المشوش الدولي ومسابقة الكود Perl المشوش.

كذلك، يمكن استخدام برامج بيرل القصيرة والمشوشة في توقيعات مبرمجي بيرل Perl.

ملخص

الخصائص التي تجعل اللغة غامضة ليست واضحة على الفور.

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

عيوب التعتيم

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

من جانب آخر، يمكن أن يجعل مشكلات تصحيح الأخطاء بعد تعتيمالبرنامج صعبة للغاية.

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

ويضيف الوقت والتعقيد إلى عملية البناء للمطورين.

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

التقنيات

بحسب ـ مونتفورت، قد تشمل التقنيات ما يلي:

علاوةً على ذلك، تعتيمالتسمية، والذي يتضمن تسمية المتغيرات بطريقة لا معنى لها أو خادعة؛

علاوةً على ذلك، الترميز المزدوج، والذي يمكن أن يكون عرض الكود في شكل نص شِعري أو أشكال مثيرة للاهتمام.

من جانب آخر، الارتباك بين البيانات/الرمز/التعليق، والذي يتضمن جعل بعض التعليمات البرمجية الفعلية تبدو وكأنها تعليقات أو خلط بناء الجملة مع البيانات؛

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

التعتيمالنموذجي

  • انظر كذلك
  • AARD code
  • رماز متشابك
  • برنامج فك التشفير

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

لغات البرمجة غير الاعتيادية

  • كواين (حوسبة)
  • لغة الآلة
  • Polymorphic code
  • Hardware obfuscation
  • Underhanded C Contest

إخطار المستخدمين بكود التعتيم

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

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

التعمية

من جانب آخر، لقد استكشف خبراء التعمية فكرة تعتيم النص المصدري بحيث تصبح عملية الهندسة العكسية للبرنامج صعبة من الناحية التعموية. وقد ظهر ذلك رسميًا في الكثير من المقترحات الخاصة بتعتيم عدم التمييز (indistinguishability obfuscation)، وهي بدئية تعمية من شأنها، إذا أمكن بناؤها بشكل آمن، أن تسمح بإنشاء الكثير من أنواع التعمية الأخرى، بما في ذلك أنواع جديدة تمامًا لا يعرف أحد كيفية صنعها. (من المعروف أن فكرة التعتيم باستخدام الصندوق الأسود (black-box obfuscation) أقوى من غيرها، ومن المستحيل تطبيقها بشكل عام.)

قراءة متعمقة

روابط خارجية

من جانب آخر، Seyyedhamzeh, Javad, ABCME: A Novel Metamorphic Engine, 17th National Computer Conference, Sharif University of Technology, Tehran, Iran, 2012.

ومن ناحية أخرى، B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. Vadhan and K. Yang. "On the (Im)possibility of Obfuscating Programs". 21st Annual International Cryptology Conference, Santa Barbara, California, USA. Springer Verlag LNCS Volume 2139, 2001.

التعتيمورخص copyleft

إضافةً إلى ذلك، دار نقاش حول ما إذا كان من غير القانوني التحايل على تراخيص برامج copyleft من خلال إصدار الكود المصدر في شكل مشوش، كما في الحالات التي يكون فيها المؤلف أقل استعدادًا لإتاحة كود المصدر. جرى تناول هذه المشكلة في رخصة جنو العمومية من خلال اشتراط توفير "النموذج المفضل لإجراء التعديلات". يذكر موقع GNU على الويب أن "كود المصدر المُشوش ليس كود مصدر حقيقي ولا يُحسب ككود مصدر."

مترجم من مصدر إلى مصدر

  • ProGuard (Java Obfuscator)
  • Dotfuscator (.Net Obfuscator)
  • إدارة الحقوق الرقمية
  • برتي برنت
  • مراجع

برامج فك التشفير

ومن جهة أخرى، يمكن لبرنامج فك التشفير إجراء هندسة عكسية لكود المصدر من ملف قابل للتنفيذ أو مكتبة. يُطلق على فك التشفير أحيانًا اسم "هجوم الرجل في النهاية" (man-in-the-end, mite)، استنادًا إلى الهجوم التشفيري التقليدي المعروف باسم "هجوم الرجل في المنتصف". إنه يضع كود المصدر في أيدي المستعمل، على الرغم من أن كود المصدر هذا غالبًا ما يكون من الصعب قراءته. من المحتمل أن يحتوي كود المصدر على أسماء دوال ومتغيرات عشوائية، وأنواع متغيرات غير صحيحة، ويستعمل منطقًا مختلفًا عن كود المصدر الأصلي (بسبب تحسينات المترجم).

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

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