Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
VMPacker — نظام حماية الأجهزة الافتراضية لـ ARM64 ELF | Kitploit
أدوات/GitHubGitHub/leochen-coremind/vmpacker
أمان الأنظمة المدمجةأطر الاستغلالأمان إنترنت الأشياءتحليل الثغرات الأمنيةالهندسة العكسيةالاختبار العشوائياختبار الاختراقأمن الجوالأمن الأجهزةتحليل الملفات الثنائيةمكافحة الروبوتات
47717020منذ 6 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
GitHub
leochen-coremind/vmpacker

VMPacker

نظام حماية الأجهزة الافتراضية لـ ARM64 ELF

عرض المستودع

🛡️ VMPacker

نظام حماية الآلة الافتراضية لثنائيات ARM64 ELF

ترجمة تعليمات ARM64 الأصلية إلى كود بايت مخصص للآلة الافتراضية لحماية الكود على مستوى الدوال

🇨🇳 中文文档 • الميزات • الهندسة • البدء السريع • الاستخدام • الترخيص


نظرة عامة

VMPacker هو نظام حماية بالآلة الافتراضية (VMP) لثنائيات ARM64 (AArch64) الخاصة بـ Linux ELF. يقوم بفك تشفير تعليمات ARM64 الأصلية للدالة المستهدفة إلى تمثيل وسيط، وترجمتها إلى كود بايت مخصص للآلة الافتراضية، وحقن مترجم آلة افتراضية مدمج في ملف ELF. في وقت التشغيل، يتم تنفيذ الدوال المحمية بواسطة مترجم الآلة الافتراضية بدلاً من التنفيذ الأصلي.

المفهوم الأساسي

كود ARM64 الأصلي  →  فك تشفير  →  ترجمة  →  كود بايت مخصص للآلة الافتراضية
                                                      ↓
                    ELF الأصلي  ←  حقن  ←  دعامة مترجم الآلة الافتراضية

الميزات

🔄 محرك ترجمة التعليمات

  • 63 تعليمة للآلة الافتراضية — تغطي ALU، الذاكرة، الفروع، استدعاءات النظام، والمزيد
  • مفكك تشفير قائم على الجداول — مطابقة الأنماط بناءً على دليل مرجع ARM المعماري
  • 121 تعليمة ARM64 مدعومة (تغطية كاملة لـ A64 الأساسية)، بما في ذلك:
    • العمليات الحسابية/المنطقية (ADD, SUB, MUL, AND, ORR, EOR, LSL, LSR, ASR, MVN, BIC, ORN, EON...)
    • الضرب مع التمديد (MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL, SMULH, UMULH, UDIV, SDIV)
    • نقل البيانات (MOV, MOVZ, MOVK, MOVN)
    • الوصول إلى الذاكرة (LDR, STR, LDP, STP, LDPSW, LDADD, CAS, LDAR, STLR, LDAXR, STLXR — بعروض وأوضاع عنونة مختلفة)
    • التحكم في الفروع (B, BL, BR, BLR, RET, B.cond, CBZ/CBNZ, TBZ/TBNZ)
    • الاختيار الشرطي (CSEL, CSINC, CSINV, CSNEG, CCMP, CCMN)
    • حقول البت (UBFM, SBFM, BFM, EXTR)
    • معالجة البتات (CLZ, CLS, RBIT, REV, REV16, REV32)
    • العمليات الحسابية مع الحمل (ADC, ADCS, SBC, SBCS)
    • تحميل/تخزين SIMD (LD1, ST1)
    • النظام/الحواجز (SVC, MRS, MSR, ADRP/ADR, DMB, DSB, ISB, HLT, BRK, PRFM)

🔐 حماية متعددة الطبقات

الطبقةالتقنيةالوصف
حماية VMISA مخصصةرموز عمليات معينة عشوائياً — لا يمكن لمهندسي الهندسة العكسية تحديد دلالات التعليمات مباشرة
OpcodesCryptorتشفير رمز العملية لكل تعليمةenc[pc] = op[pc] ^ (key ^ (pc * 0x9E3779B9))
عكس الكود البايتعكس ترتيب التنفيذتخزين التعليمات بترتيب عكسي؛ يجتاز المترجم بالاتجاه العكسي
إدخال الرمز المميز (Token Entry)دعامة من 3 تعليماتاستبدال الدالة الأصلية بدخول مميز، يخفي موقع الكود البايت الفعلي
التوزيع غير المباشرجدول قفز لمؤشرات الدواليتم ملؤه في وقت التشغيل على المكدس، مما يكسر المراجع المتقاطعة في IDA

🖥️ واجهة المستخدم الرسومية

  • تطبيق سطح مكتب عبر المنصات مبني باستخدام Wails v2 (Go + Vue 3)
  • مكونات Element Plus UI
  • اختيار الدوال برموزها + إدخال الدوال يدوياً (حماية حسب نطاق العناوين)
  • حماية بنقرة واحدة مع إخراج السجلات في الوقت الفعلي
الواجهة الرئيسية تحليل الدوال خيارات الحماية
قائمة الدوال التحليل والاختيار خيارات الحماية
تنفيذ الحماية اكتمال الحماية
السجلات في الوقت الفعلي اكتمال الحماية

الهندسة المعمارية

vmp/
├── cmd/vmpacker/          # نقطة الدخول لواجهة سطر الأوامر
│   ├── main.go            # تحليل وسيطات سطر الأوامر + التنسيق
│   └── vm_interp.bin      # مترجم VM المجمع (GCC, go:embed)
│
├── pkg/                   # مكتبة Go الأساسية
│   ├── arch/arm64/        # دعم معمارية ARM64
│   │   ├── decoder.go     # مفكك تعليمات قائم على الجدول (يطبق vm.Decoder)
│   │   ├── decode_*.go    # جداول أنماط الفك (DP-IMM/DP-REG/Branch/LdSt)
│   │   ├── translator.go  # مترجم ARM64 → كود بايت VM
│   │   ├── tr_alu.go      # ترجمة تعليمات ALU
│   │   ├── tr_branch.go   # ترجمة تعليمات الفرع
│   │   ├── tr_loadstore.go # ترجمة تعليمات الذاكرة
│   │   ├── tr_bitfield.go # ترجمة تعليمات حقل البت
│   │   └── tr_special.go  # تعليمات خاصة (ADRP/ADR)
│   ├── vm/                # تعريفات ISA للآلة الافتراضية
│   │   ├── types.go       # أنواع مشتركة + واجهات (Decoder/Translator/Packer)
│   │   ├── opcodes.go     # تعريفات 58+ كود عملية VM (قيم معينة عشوائياً)
│   │   └── disasm.go      # مفكك كود بايت VM
│   └── binary/elf/        # التعامل مع ثنائيات ELF
│       ├── packer.go      # حقن VMP لـ ELF (اختراق PT_NOTE، توليد الدعامات)
│       └── trampoline.go  # توليد كود الدعامة
│
├── stub/                  # مترجم VM بلغة C (مجمّع إلى ثنائي مسطح PIC)
│   ├── vm_interp_clean.c  # الحلقة الرئيسية للمترجم + نقاط الدخول
│   ├── vm_types.h         # سياق CPU للـ VM (vm_ctx_t)
│   ├── vm_opcodes.h       # تعريفات كودات العمليات في الجانب C (متزامنة مع opcodes.go)
│   ├── vm_decode.h        # أدوات قراءة الكود البايت
│   ├── vm_token.h         # ترميز/فك ترميز الرمز المميز + جدول الواصف
│   ├── vm_dispatch.h      # جدول قفز التوزيع غير المباشر
│   ├── vm_crc.h           # فحص سلامة CRC32
│   ├── vm_sections.h      # وحدات ماكرو لتوزيع أقسام المعالجات
│   ├── vm_interp.lds      # سكربت الرابط
│   └── vm_handlers/       # معالجات تعليمات معيارية
│       ├── h_alu.h        # العمليات الحسابية/المنطقية
│       ├── h_mem.h        # الوصول إلى الذاكرة
│       ├── h_branch.h     # الفروع/القفزات
│       ├── h_cmp.h        # المقارنة/الشرطية
│       ├── h_mov.h        # نقل البيانات
│       ├── h_stack.h      # المكدس (PUSH/POP)
│       └── h_system.h     # النظام (SVC/MRS/BLR/BR/RET)
│
├── vmp-gui/               # واجهة Wails الرسومية الأمامية
│   ├── frontend/          # Vue 3 + Element Plus
│   └── backend/           # روابط Go الخلفية
│
└── build/                 # أدوات مجمّعة مسبقاً + مخرجات اختبارية

التصميم المعياري

يستخدم المشروع بنية معيارية قائمة على الواجهات، مما يسهل التوسع لمعماريات ISA جديدة وتنسيقات ثنائية جديدة:

// واجهة مفكك التعليمات — قابلة للتوسيع لـ x86، RISC-V
type Decoder interface {
    Decode(raw uint32, offset int) Instruction
    InstName(op int) string
}

// واجهة مترجم الكود البايت
type Translator interface {
    Translate(instructions []Instruction) (*TranslateResult, error)
}

// واجهة حاقن التنسيق الثنائي — قابلة للتوسيع لـ PE، Mach-O
type Packer interface {
    Process() error
}

خط أنابيب الحماية

graph LR
    A[ELF المدخل] --> B[تحديد موقع الدالة المستهدفة]
    B --> C[استخراج تعليمات ARM64]
    C --> D[فك تشفير ARM64]
    D --> E[ترجمة إلى كود بايت VM]
    E --> F[تشفير الكود البايت بـ XOR]
    F --> G[حقن مترجم VM]
    G --> H[توليد الدعامة]
    H --> I[استبدال مدخل الدالة]
    I --> J[ELF محمي مخرج]

البدء السريع

المتطلبات الأساسية

  • Go 1.21+
  • GCC (aarch64-linux-gnu-gcc) — لتجميع الـ stub
  • بيئة Linux ARM64 أو بيئة ترجمة متقاطعة

التثبيت

تنزيل الأداة