Skip to content

Latest commit

 

History

History
88 lines (62 loc) · 6.13 KB

dyncode-compiler-roadmap.md

File metadata and controls

88 lines (62 loc) · 6.13 KB

اللغات: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية

← مُجمِّع dyncode

خارطة الطريق

يتتبع هذا المستند الميزات المخططة أو الجارية أو المؤجلة عمداً.

الحالة الحالية

يغطي مسار dyncode في NeverC:

  • مسار LLVM IR كامل مع 11+ مرور مخصص
  • مستخرجات COFF / ELF / Mach-O
  • حل استيراد Win32 PEB-walk (تجزئة ROR-13، 6 دلاء DLL)
  • خفض استدعاءات النظام المباشرة (Darwin svc #0x80، Linux svc #0 / syscall)
  • دعم وضع النواة (Windows، Linux)
  • تدقيق البايتات المحظورة مع ملفات تعريف قابلة للتكوين
  • SDK إضافات لمُعيدي كتابة البايتات المحظورة ومُشفِّرات مجموعات الأحرف
  • قيود الحجم / المحاذاة / الحشو (-fdyncode-max-length=، -fdyncode-align=، -fdyncode-pad=)
  • 11 خطاف تشويش عبر طبقات IR وMIR وتدفق البايتات

مكتمل (2026-04)

  1. قيود الحجم / المحاذاة / الحشو — مدمج. -fdyncode-max-length=، -fdyncode-align=، -fdyncode-pad= تُنفَّذ في نهاية finalizeDynCodeBytes. يرفض المشغّل التكوينات المتناقضة (مثل بايت الحشو في مجموعة البايتات المحظورة، أو الحشو بدون align/max-length).

  2. واجهة الإضافات C خارج الشجرة — واجهة إضافات C ABI خالصة (NevercPluginAPI.h) لمرورات IR وMIR وBinary وLinker المخصصة. تُسجَّل الإضافات في 11 نقطة ربط dyncode (NEVERC_INTERPOSE_SC_*). SDK بملف رأس واحد، صفر تبعيات LLVM/CRT. راجع وثائق واجهة الإضافات.

مخطط — طبقة الإضافات (عبر الخطافات)

هذه القدرات غير مدمجة عمداً. تنتمي إلى طبقة الاستراتيجية/التشويش ومُصمَّمة لتقديمها من قبل إضافات الطرف الثالث عبر واجهات الخطافات والإضافات.

الميزة نقطة الخطاف ملاحظات
مقاومة التفكيك RunBeforePreEmit / RunAfterPreEmit / RunAfterFinalMIR تداخل بادئة التعليمات، إعادة ترتيب القفزات، إدراج بايتات عشوائية
تعدد الأشكال RunAfterFinalMIR / RunPostExtract تباين الإخراج بناءً على بذرة لكل تجميع
مُشفِّر مراحل (XOR / RC4 / فك تشفير ذاتي) RunPostExtract / RunPostFinalize توليد stub وقت التجميع + تشفير الحمولة
استدعاءات نظام غير مباشرة (Halos / Tartarus / Recycled Gate) إضافة مستوى IR أو RunPostExtract مسح أدوات ntdll وقت التشغيل
قناع النوم / تزوير مكدس الاستدعاء إضافة مرور IR أنماط Ekko / FOLIAGE / Cronos
تصحيح ETW / AMSI إضافة مرور IR تسلسلات تصحيح وقت التشغيل
دوس الوحدة / إزالة الخطافات إضافة مرور IR أنماط التلاعب بالذاكرة

ملخص خطافات الإضافات

11 خطاف في ثلاث طبقات:

طبقة IR (6 خطافات، تستقبل ModulePassManager &):

  • RunBeforePrep — قبل أي مرور dyncode
  • RunAfterPrep — بعد توحيد الربط
  • RunBeforeInlining — الفرصة الأخيرة قبل AlwaysInliner
  • RunAfterInlining — IR مُسطَّح بالكامل في دالة واحدة
  • RunAfterStackify — شكل IR النهائي قبل توليد الكود
  • RunAfterFinalIR — بعد AllBlrPass، آخر خطاف IR على الإطلاق

طبقة MIR (3 خطافات، تستقبل TargetPassConfig &):

  • RunBeforePreEmit — السجلات مخصصة، أشباه تعليمات CFI/EH لا تزال موجودة
  • RunAfterPreEmit — بعد تنظيف MIRPrepPass، الأقرب إلى البايتات النهائية
  • RunAfterFinalMIR — بعد LLVM addPreEmitPass2()، مباشرة قبل AsmPrinter

طبقة تدفق البايتات (2 خطاف، تستقبل SmallVectorImpl<uint8_t> &):

  • RunPostExtract — ما قبل الإنهاء، لا يزال يُعالج بواسطة مُعيد الكتابة/المُشفِّر/التدقيق/التحجيم
  • RunPostFinalize — ما بعد الإنهاء، اللحظة الأخيرة قبل الكتابة على القرص؛ NeverC لا يجري مزيداً من التدقيق

مسار الإنهاء

يستدعي كل مستخرج finalizeDynCodeBytes قبل كتابة .bin:

applyPostExtractObfuscationInterpose       (C Plugin API: NEVERC_INTERPOSE_SC_POST_EXTRACT)
        |
auditFinalBadBytes                    (تدقيق صارم مدمج)
        |
applyDynCodeSizing                  (-fdyncode-align/-max-length/-pad)
        |
applyPostFinalizeObfuscationInterpose      (C Plugin API: NEVERC_INTERPOSE_SC_POST_FINALIZE)

الاستخدام وأمثلة الكود في وثائق Plugin API.

غير مخطط

  • واجهة أمامية متعددة اللغات — NeverC يقبل فقط واجهته الأمامية C23 الخاصة. مسار IR منفصل عن الواجهة الأمامية، لكن قبول bitcode خارجي (مثل من rustc أو zig) ليس هدفاً للمشروع.