Skip to content

Latest commit

 

History

History
80 lines (63 loc) · 6.57 KB

File metadata and controls

80 lines (63 loc) · 6.57 KB

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

← مُجمِّع dyncode

مُجمِّع dyncode — تتبع التقدم

المرحلة 0 — macOS arm64 MVP (تم التسليم)

  • هيكل الأدلة و CMake (مكتبة nevercDynCode)
  • ZeroRelocPass: مرحلتان (Prep + Stackify)، نقل المتغيرات العامة القابلة للتعديل إلى المكدس تلقائيًا
  • Data2TextPass: مرحلتان (مصفوفات ثابتة → تخزين مقطعي على المكدس؛ تقسيم ثوابت المتجهات بعد SROA؛ ConstantFP → أنماط بتات محمّلة بـ volatile)
  • SyscallStubPass: قائمة بيضاء مدفوعة بجدول تغطي Darwin BSD / Linux arm64 / Linux x86_64 / Android syscalls
  • AllBlrPass: إعادة كتابة عدوانية اختيارية للاستدعاءات غير المباشرة
  • DynCodeExtractor: Mach-O .o.bin مسطح مع ترقيع عمليات النقل داخل القسم
  • خيارات CLI عبر neverc/include/neverc/Invoke/Options.td.h المُولَّد: -fdyncode، -fdyncode-all-blr، -mdyncode-syscall، -fdyncode-keep-obj=، -fdyncode-entry=
  • PIC افتراضي على جميع المنصات (isPICDefault() تعيد true عالميًا)
  • نقل تكراري عام إلى المكدس (جداول مؤشرات الدوال، جداول مؤشرات السلاسل، جداول الهياكل المتداخلة، مُهيئات ConstantExpr GEP/BitCast)
  • IndirectBrPass: GCC computed-goto (&&label) → switch، مع مشاركة جداول مواقع إرسال متعددة
  • تضمين ثوابت المتجهات SIMD (inlineVectorConstants)
  • تخفيض تلقائي لـ _Thread_local إلى static
  • محمّل macOS arm64 أصلي (MAP_JIT + تنظيف i-cache)

الاختبارات: 108/108 تأكيدات dyncode ناجحة. أحجام الثنائيات: add 8B، fib 64B، hello 64B، big_const 632B.

المرحلة 1 — Linux / Android / Windows عبر المنصات (تم التسليم)

  • تجريد TargetDesc: اختلافات المنصات مدفوعة بجدول
  • دلالات -mdyncode-syscall عبر المنصات (تحل محل -mdyncode-libsystem الخاص بـ Darwin)
  • جداول أرقام syscall لـ Linux / Android (Darwin BSD 100+، Linux arm64 130+، Linux x86_64 150+)
  • إعادة هيكلة DynCodeExtractor إلى MachOExtractor / ELFExtractor / COFFExtractor
  • مستخرج ELF (arm64: R_AARCH64_CALL26/JUMP26/ADR_PREL_PG_HI21/إلخ؛ x86_64: R_X86_64_PC32/PLT32)
  • مستخرج COFF (arm64: IMAGE_REL_ARM64_BRANCH26/إلخ؛ x86_64: IMAGE_REL_AMD64_REL32/إلخ)
  • مرور استيراد PEB لـ Windows (WinPEBImportPass) مع محلل PEB walk حقيقي
  • قائمة بيضاء Win32 API متعددة DLL (~210 API عبر kernel32/ntdll/user32/ws2_32/advapi32/shell32)
  • MemIntrinPass: memcpy/memset/memmove/memcmp/bcmp/bzero/memchr + strlen/strcpy/strcmp/إلخ → مساعدات حلقة بايت مضمّنة
  • CompilerRtPass: قسمة/باقي __int128 → مساعدات قسمة طويلة مضمّنة
  • دعم واجهة Windows aarch64-pc-windows-msvc
  • MIRPrepPass: إزالة تعليمات زائفة عبر المنصات (CFI/EH/XRay/StackMap/SEH/FENTRY/إلخ)
  • خطافات تشويش MIR + مستوى البايت (11 خطافًا عبر طبقات IR/MIR/تدفق البايت)
  • تخفيض تلقائي لـ AArch64 غير Darwin long double إلى binary64
  • ملفات رأس وسيطة dyncode: <windows.h>، <unistd.h>، <fcntl.h>، <sys/stat.h>، <sys/mman.h>، <string.h>، <stdlib.h>
  • طبقة توافق POSIX لـ Windows (13 جسرًا POSIX→Win32: write→WriteFile، mmap→VirtualAlloc، إلخ)
  • إصلاح تلقائي للإعلانات الضمنية K&R (50+ توقيع POSIX قياسي)
  • تنقية مدفوعة بجدول (ترميز ثابت لفروع العمارة → صفر)
  • KernelImportPass: إعادة كتابة تلقائية لمواقع الاستدعاء ring-0 مدعومة بمحلل
  • تشخيصات مدفوعة بجدول أسماء مساعدات النواة (KernelHelperNames.def)
  • <neverc/dyncode/kernel.h> لاتفاقيات نقطة الدخول ring-0
  • فرض إزاحة صفر لنقطة الدخول (placeEntryFirst)
  • خط أنابيب الإنهاء: SDK مُعيد كتابة البايتات المحظورة + SDK مشفّر مجموعة الأحرف + قيود الحجم
  • واجهة الإضافات C خارج الشجرة (NevercPluginAPI.h): 11 نقطة ربط dyncode (NEVERC_INTERPOSE_SC_*)
  • حقن -mno-implicit-float لـ x86_64 (يمنع تسرب مجمع ثوابت SSE للخلفية)
  • محمّلات عبر المنصات (macOS/Linux/Windows)

الاختبارات: 743+ تأكيدات dyncode، جميعها ناجحة عبر 8 أهداف ثلاثية. مجموعة اختبارات NeverC الكاملة: 1000+ اختبار ناجح.

المرحلة 2 — مشفّر قابل للطباعة / أبجدي رقمي (مخطط)

  • مشفّر dyncode قابل للطباعة ARM64 (مجموعة تعليمات فرعية 0x20–0x7e)
  • مشفّر أبجدي رقمي x86_64
  • توليد بذرة فك التشفير الذاتي (decoder stub)
  • إحصائيات الحجم / الإنتروبيا بعد التشفير

المرحلة 3 — تعدد الأشكال / التعديل الذاتي (مخطط)

  • محرك متعدد الأشكال: نفس المصدر → تسلسلات بايت مكافئة مختلفة لكل عملية تجميع
  • كود ذاتي التعديل: فك تشفير / فك ضغط جسم الحمولة في وقت التشغيل
  • مكافحة الاكتشاف: تجنب أنماط توقيع dyncode المعروفة

توسعات مستقبلية

  • iOS arm64 (توقيع الكود + سيناريوهات كسر حماية JIT)
  • Cortex-M / Thumb
  • RISC-V 64