
TinyLoad v7.3
أداة مفتوحة المصدر لتغليف وتشفير ملفات PE القابلة للتنفيذ بنظام ويندوز x64. تقوم بضغط وتشفير الملفات التنفيذية باستخدام آلة افتراضية مخصصة ضمن كعب برمجي ذاتي الاستخراج.
TinyLoad v7.3 - حزّام PE لويندوز
TinyLoad هو مشفّر/حزّام PE لملفات x64 التنفيذية، يحزم ملف exe مُدخلًا بطبقات حماية متعددة لمنع هندسته عكسيًا. هو ملف .cpp واحد فقط ولا يعتمد على أي تبعيات خارجية.
كيف يعمل
يُلحق TinyLoad حمولتك بنسخة من نفسه. عند تشغيل exe المُحزم، يستخرج الحمولة، يفك تشفيرها، وينفذها مباشرة في الذاكرة دون كتابة الأصل على القرص أبدًا. في كل مرة تحزم شيئًا، تتغير أكواد VM العملياتية عشوائيًا وتوضع في 4 جداول فرعية مستقلة المفاتيح، لذا لا يتطابق إصداران.
التحميل
احصل على ملف ثنائي مُجمّع مسبقًا من الإصدارات أو ابنِه بنفسك.
البناء من المصدر
تحتاج إلى MinGW (g++). فقط شغّل:
g++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s
أو استخدم build.bat.
الاستخدام
TinyLoad.exe --i <input> [--o <output>] [--vm] [--c] [--veh]
| الخيار | الوظيفة |
|---|---|
--i <file> | ملف exe المُدخل للحزم |
--o <file> | مسار الإخراج (الافتراضي: input_packed.exe) |
--vm | تشفير VM |
--c | ضغط LZ77 |
--veh | فك تشفير خطأ الصفحة عبر VEH |
--noconsole | نظام GUI الفرعي |
تحتاج إلى واحد على الأقل من --vm أو --c أو --veh.
أمثلة
صور DIE
الضغط
ضغط LZ77 مخصص مع مطابقة سلسلة التجزئة (hash chain) ونافذة منزلقة بحجم 64KB. يعمل الضغط أولاً، ثم يأتي تشفير VM فوقه بحيث تُخفى أيضًا أي أنماط في البيانات المضغوطة.
تشفير VM
آلة افتراضية مخصصة بـ 28 كودًا عملياتيًا (opcode) تعمل داخل الـ stub. توضع الأكواد العملياتية عشوائيًا في 4 جداول فرعية، 8 لكل جدول، ويُشفَّر كل جدول فرعي بـ XOR بمفتاح مختلف مشتق من بيانات الحمولة. كسر جدول فرعي واحد يكشف 8 أكواد كحد أقصى من أصل 28. الشيفرة نفسها هي شيفرة تدفق 128 بت تستخدم خلط مفاتيح rotl و rotr وتعمل بالكامل داخل مفسّر VM. الحمولة مشفّرة باستخدام XXTEA.
فك تشفير خطأ الصفحة عبر VEH
عند تفعيل --veh، تُعيّن جميع صفحات أقسام PE كـ PAGE_NOACCESS. عندما يحاول البرنامج الوصول إلى صفحة، يطلق استثناءً، فيقوم معالج الاستثناءات المتجه (vectored exception handler) بفك تشفير تلك الصفحة فقط وضبط الحماية الصحيحة. يعمل خيط مراقبة (watchdog) في الخلفية ويعيد تشفير أي صفحة لم تُلمس منذ 200ms. في أي لحظة، معظم برنامجك يبقى مشفّرًا في الذاكرة، لذا تلتقط تفريغات الذاكرة فقط ما تم الوصول إليه مؤخرًا.
مكافحة التفريغ
يتم تحويل أهم 4 واجهات برمجية (GetModuleHandleA, GetProcAddress, ExitProcess, VirtualAlloc) عبر دوال غلاف (wrapper) داخل الـ stub. بعد تحميل الحمولة، يُصفَّر دليل الاستيراد بالكامل بحيث لا يمكن لتفريغات الذاكرة إعادة بناء جدول الاستيراد.
المخطط:
الترخيص
MIT
ملاحظات جانبية
- هناك الكثير من الميزات التي لم أضعها في readme، يمكنك قراءة الكود بنفسك أو الاطلاع على changelog.md
- يعمل هذا على معظم الملفات التي جرّبتها، إذا تعطل على ملفك افتح issue وسأنظر فيه
- الاقتراحات وأفكار الميزات توضع في issues أيضًا
- إذا استخدمته، النجمة تساعد كثيرًا <3
- تابع المدونة على https://iamsopotatoe-coder.github.io/TinyLoad/#blog للتحديثات المستقبلية
- نعم، برامج مكافحة الفيروسات تكتشف الحزّامات، وهذا متوقع. (حاليًا لديه 9 اكتشافات على virustotal، أي ملف تحزمه به يحصل على 9 اكتشافات، المحتوى لا يهم)
- من فضلك لا تحزم برمجيات خبيثة بهذا، فهو مخصص للأغراض المشروعة