
أداة حزم ثنائيات ELF تقوم بتشفير أقسام الكود وحقن وسادة فك تشفير وقت التشغيل للملفات التنفيذية لنظام Linux 64 بت، مما يُظهر تقنيات حقن الكود ومعالجة الثنائيات.
مشروع مدرسة 42 يقوم بتنفيذ أداة تغليف ثنائية لملفات ELF ذات 64 بت. تقوم الأداة بتشفير أقسام الكود الخاصة بالملف القابل للتنفيذ وتحقق روتين فك تشفير يتم تنفيذه أثناء وقت التشغيل.
Woody-Woodpacker هو برنامج يأخذ ملف ELF ثنائي ذو 64 بت كمدخل وينشئ نسخة مشفرة جديدة تسمى woody. عند تنفيذه، الملف woody:
يستكشف هذا المشروع:
الملف الأصلي → [Woody-Woodpacker] → الملف المشفر (woody)
woody./woody → فك تشفير الكود → طباعة "....WOODY...." → تنفيذ البرنامج الأصلي
# Clone the repository
git clone https://gitlab.com/Aurh1l/woody-woodpacker.git
cd woody-woodpacker
# Compile the project
make
# The woody_woodpacker executable is now ready
./woody_woodpacker
./woody_woodpacker <binary_file>
ينشئ هذا ملفًا جديدًا يسمى woody في الدليل الحالي.
# Pack a binary
./woody_woodpacker /bin/ls
# Execute the packed binary
./woody
# Output: ....WOODY....
# [then normal ls output]
# Compare original and packed binary behavior
/bin/ls -la
./woody -la
# Both should produce the same output (after "....WOODY....")
تتعامل الأداة مع المكونات التالية لـ ELF:
.text الذي يحتوي على الكود القابل للتنفيذيستخدم المشروع عادةً طريقة تشفير بسيطة مثل:
حقن حشو القطاعات (طريقة Silvio Cesare):
┌─────────────────────────┐
│ رأس ELF │
├─────────────────────────┤
│ رؤوس البرامج │
├─────────────────────────┤
│ دالة فك التشفير │ ← الكود المحقون
├─────────────────────────┤
│ النص المشفر │ ← الكود الأصلي (مشفر)
├─────────────────────────┤
│ أقسام أخرى │
├─────────────────────────┤
│ رؤوس الأقسام │
└─────────────────────────┘
هذا المشروع جزء من منهج مدرسة 42 وهو مخصص للأغراض التعليمية فقط.
تم إنشاء هذه الأداة للأغراض التعليمية كجزء من منهج مدرسة 42. استخدمها بمسؤولية وفقط على الملفات الثنائية التي تملكها أو لديك إذن بتعديلها. المؤلفون غير مسؤولين عن أي إساءة استخدام لهذا البرنامج.