اللغات: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
يتتبع هذا المستند الميزات المخططة أو الجارية أو المؤجلة عمداً.
يغطي مسار dyncode في NeverC:
- مسار LLVM IR كامل مع 11+ مرور مخصص
- مستخرجات COFF / ELF / Mach-O
- حل استيراد Win32 PEB-walk (تجزئة ROR-13، 6 دلاء DLL)
- خفض استدعاءات النظام المباشرة (Darwin
svc #0x80، Linuxsvc #0/syscall) - دعم وضع النواة (Windows، Linux)
- تدقيق البايتات المحظورة مع ملفات تعريف قابلة للتكوين
- SDK إضافات لمُعيدي كتابة البايتات المحظورة ومُشفِّرات مجموعات الأحرف
- قيود الحجم / المحاذاة / الحشو (
-fdyncode-max-length=،-fdyncode-align=،-fdyncode-pad=) - 11 خطاف تشويش عبر طبقات IR وMIR وتدفق البايتات
-
قيود الحجم / المحاذاة / الحشو — مدمج.
-fdyncode-max-length=،-fdyncode-align=،-fdyncode-pad=تُنفَّذ في نهايةfinalizeDynCodeBytes. يرفض المشغّل التكوينات المتناقضة (مثل بايت الحشو في مجموعة البايتات المحظورة، أو الحشو بدون align/max-length). -
واجهة الإضافات 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— قبل أي مرور dyncodeRunAfterPrep— بعد توحيد الربطRunBeforeInlining— الفرصة الأخيرة قبل AlwaysInlinerRunAfterInlining— IR مُسطَّح بالكامل في دالة واحدةRunAfterStackify— شكل IR النهائي قبل توليد الكودRunAfterFinalIR— بعدAllBlrPass، آخر خطاف IR على الإطلاق
طبقة MIR (3 خطافات، تستقبل TargetPassConfig &):
RunBeforePreEmit— السجلات مخصصة، أشباه تعليمات CFI/EH لا تزال موجودةRunAfterPreEmit— بعد تنظيفMIRPrepPass، الأقرب إلى البايتات النهائيةRunAfterFinalMIR— بعد LLVMaddPreEmitPass2()، مباشرة قبل 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) ليس هدفاً للمشروع.