
أداة بواجهة رسومية (GUI) وسطر أوامر (CLI) لإزالة الزوائد من الملفات التنفيذية.

Debloat هي أداة بواجهة رسومية وسطر أوامر لإزالة القمامة الزائدة من الملفات التنفيذية المنتفخة.
أعني بالقمامة الزائدة 100 - 800 ميغابايت من البايتات غير المرغوب فيها المضافة إلى ملف ثنائي لمنعه من الدخول إلى صندوق الرمل (sandbox). تُسمى هذه الطريقة في إضافة القمامة "نفخ" (inflating) أو "ضخ" (pumping) الملف الثنائي. تتعامل Debloat حالياً مع أكثر 10 تكتيكات نفخ شيوعاً.
نظراً لأن التطبيق مبني بلغة بايثون، يمكن توظيفه بسهولة في سير عمل أخرى. حالياً، يُستخدم debloat في AssemblyLine الخاص بـ CCCS وMWDB الخاص بـ CERT Polska.
يمكن ترجمة البرنامج ليعمل على Windows وMacOS وLinux. تتميز الواجهة الرسومية وواجهة سطر الأوامر بخيارات محدودة؛ إذ صُمم البرنامج ليكون بسيطاً قدر الإمكان ويتولى المنطق الداخلي معالجة حالات الاستخدام المختلفة تلقائياً.
تم تضمين الملفات التنفيذية المترجمة مسبقاً في Releases.
يمكن تثبيت debloat باستخدام pip install debloat. استخدم debloat لتشغيل واجهة سطر الأوامر وdebloat-gui لتشغيل الواجهة الرسومية.
للمستخدمين المتقدمين، يمكن أيضاً استيراد Debloat إلى نصوص برمجية أخرى واستدعاء دوال المعالجة بشكل فردي.
تهدف الواجهة الرسومية لـ Debloat إلى أن تكون بديهية قدر الإمكان. عند تشغيلها، يمكنك سحب وإفلات الملف المنتفخ على شريط النص والضغط على زر "Process file". ستُطبع بعض المعلومات التقنية في مربع النص المتحرك، وسيُكتب الملف الخالي من الانتفاخ في الدليل الذي جُلب منه الملف. يبدو سهلاً؟ إنه كذلك!
ستستغرق معالجة الملفات بضع ثوانٍ.

بعد التثبيت باستخدام pip install debloat استخدم الأمر debloat.
يمكن أن يستقبل debloat وسيطتين. الوسيطة الأولى إلزامية: الملف المراد إزالة الانتفاخ منه. الوسيطة الثانية اختيارية: موقع الإخراج. عندما لا يتم توفير مسار إخراج، سيُكتب الملف في نفس دليل الملف الأصلي.
يمكن أيضاً تشغيل الواجهة الرسومية من سطر الأوامر باستخدام الأمر debloat-gui.
ليس بعد. استناداً إلى تحليلي الأخير، يستطيع debloat إزالة القمامة من الملفات المنتفخة في 97.8% من الحالات.
في الإصدارات السابقة، كان بإمكان debloat إزالة جزء كبير من الملف الثنائي عن طريق الخطأ. لم يعد هذا هو الحال ما لم تستخدم المفتاح "--last-ditch". إذا احتجت يوماً إلى هذا المفتاح، ففكر في مشاركة العينة لإجراء تحليل إضافي. أُضيف هذا الخيار الآن إلى الواجهة الرسومية. وظيفياً، ما يفعله هو إزالة التراكب (overlay) بالكامل إن وُجد. في بعض الحالات يكون هذا ضرورياً لأنه لم يُعثر على نمط للقمامة---وهذا هو الأكثر شيوعاً في العينات التي لا تضغط جيداً.
انتفاخ ملحق بنهاية ملف PE موقّع.
في الصورة أدناه، أُلحق الانتفاخ بنهاية الملف التنفيذي.

ملف تنفيذي معبأ (Packed) موقّع أو غير موقّع.
في الصورة أدناه، أُلحق الانتفاخ بالملف التنفيذي بعد التعبئة.

ملف تنفيذي موقّع يتضمن انتفاخاً في قسم .rsrc الخاص بـ PE.
في الصورة أدناه، يُحدَّد الانتفاخ على أنه موجود في قسم .rsrc ويُزال من PE.

حالات يُضاف فيها الانتفاخ داخل قسم من أقسام PE.
في الصورة أدناه، أُدرج الانتفاخ في قسم من PE باسم [0].

حالات يكون فيها الملف التنفيذي من نوع Nullsoft Scriptable Installer System (NSIS والمعروف أيضاً باسم Nullsoft)
هذه الملفات التنفيذية هي برامج تثبيت قد تحتوي على ملف واحد أو أكثر. قد تكون الملفات التي تحتويها خبيثة أو لا. (في بعض الأحيان يضيف المهاجمون ملفات لمجرد زيادة حجم الملف.) تُستخرج جميع الملفات داخل برنامج التثبيت إلى دليل جديد. يحتوي الدليل أيضاً على سكربت برنامج التثبيت الذي يمكن الرجوع إليه لتحديد الملفات التي قد تكون خبيثة.
في الصورة أدناه، حدد Malcat الملف التنفيذي باعتباره برنامج تثبيت NSIS.

هناك حالات استخدام لا يعمل فيها البرنامج. ومع ذلك، أخطط لحل هذه الحالات قبل نشر الكثير عنها.
يبدو أن عدد الأدوات المتاحة لمعالجة الملفات التنفيذية المنتفخة بسهولة محدود. أكثر الأداتين اللتين رأيتهما هما “foremost” المصممة لاستعادة الملفات الثنائية من صورة قرص و“pecheck”.
يعمل Foremost بشكل أفضل في الحالات التي تكون فيها بايتات القمامة فارغة (0x00)، ويعاني عندما يكون للملف الثنائي توقيع حقيقي أو مزيف. استخدامه لإزالة الانتفاخ من الملفات ليس غرضه الأصلي.
طُوّر Pecheck على مدى أكثر من 14 عاماً ويملك بعض خيارات سطر الأوامر المربكة. خيار إزالة المحتوى المنتفخ ليس الوظيفة الأساسية للسكربت. يجب دمج Pecheck مع أداة أخرى (disitool) للتعامل مع الملفات التنفيذية الموقّعة. في تجربتي، هناك أوقات أخرى قد يرتبك فيها pecheck ويعيد ملفاً تنفيذياً ضعف حجم الملف الأصلي المنتفخ. كل هذه العوامل تبدو مقبولة إذا كنت تتعامل مع عدد صغير من الملفات الثنائية، لكن مع زيادة عدد الملفات الثنائية والأساليب، تصبح الحاجة ملحة إلى أداة مخصصة لإزالة الانتفاخ.
Binary Refinery أداة مذهلة. كُتبت بهدف أن تكون CyberChef لسطر الأوامر. ومع أن كلتا الأداتين مذهلتان، فإن كليهما يعاني من قصور يتطلب من المستخدم معرفة الصيغ التي ينبغي تطبيقها.
توجد طرق يدوية جيدة ومتينة لإزالة الانتفاخ من الملفات الثنائية، لكنها قد تكون مملة ولا يمتلك جميع المحللين المهارات اللازمة للقيام بذلك. تزيل هذه الأداة عبء الحاجة إلى معرفة كيفية إزالة الانتفاخ يدوياً. إضافة إلى ذلك، فهي تتيح نطاقاً أوسع. المبادئ المستخدمة في السكربت تسمح بنطاق أفضل إذا كانت الأتمتة مرغوبة.
اتبع أوامر البناء المناسبة لمنصتك. الفرق الرئيسي بين أوامر البناء هو تنسيق الأيقونة.
MacOS
pyinstaller --onefile --noconsole --additional-hooks-dir=./hook --icon=debloat.icns gui.py
Windows
pyinstaller --onefile --noconsole --additional-hooks-dir=./hook --icon=debloat.ico gui.py
Linux
pyinstaller --onefile --noconsole --icon=debloat.ico --collect-all tkinterdnd2 gui.py
فكر في الانضمام إلى خادم Discord الخاص بـ debloat.
تحية كبيرة إلى Jesko Hüttenhain مبتكر Binary Refinery. يعتمد استخراج NSIS على هندسته العكسية لتنسيق ملف NSIS. ألقِ نظرة على Binary Refinery إذا لم تكن قد فعلت ذلك.
المعالجة الدفعية: معالجة جميع الملفات في دليل وإنتاج تقرير.
دعم أفضل لاستخدام طرق المعالجة خارج debloat.
دعم إزالة الانتفاخ دون فك ضغط.