Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

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

الأكثر شعبية

عرض الكل →

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

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

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

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

VMPacker

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

عرض المستودع

🛡️ VMPacker

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

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

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


نظرة عامة

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

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

root@kitploit:~
كود 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)

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

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

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

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

root@kitploit:~
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 جديدة وتنسيقات ثنائية جديدة:

root@kitploit:~
// واجهة مفكك التعليمات — قابلة للتوسيع لـ 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
}

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

root@kitploit:~
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 أو بيئة ترجمة متقاطعة

التثبيت

root@kitploit:~
git clone https://github.com/LeoChen-CoreMind/VMPacker.git
cd VMPacker
make all

الاستخدام

الحماية باسم الدالة

root@kitploit:~
# حماية دالة واحدة
./vmpacker -func check_license -v -o protected.elf original.elf

# حماية دوال متعددة
./vmpacker -func "check_license,verify_token" -v -o protected.elf original.elf

الحماية بنطاق العناوين

root@kitploit:~
# تحديد نطاق العناوين
./vmpacker -addr "0x4006AC-0x400790:main" -v -o protected.elf original.elf

# وضع مختلط
./vmpacker -addr "0x4006AC-0x400790:main" -func verify -o protected.elf original.elf

فحص معلومات الـ ELF

root@kitploit:~
./vmpacker -info input.elf

خيارات سطر الأوامر

البناء

تجميع دعامة مترجم VM

root@kitploit:~
# بناء قياسي (GCC)
aarch64-linux-gnu-gcc -Os -nostdlib -fPIC -ffreestanding \
  -o stub.elf stub/vm_interp_clean.c \
  -T stub/vm_interp.lds
aarch64-linux-gnu-objcopy -O binary stub.elf vm_interp.bin

تجميع أداة سطر الأوامر

root@kitploit:~
go build -o vmpacker ./cmd/vmpacker/

بناء الواجهة الرسومية

root@kitploit:~
cd vmpacker
make gui

مرجع ISA للآلة الافتراضية

يُعرّف VMPacker بنية مجموعة تعليمات (ISA) مخصصة ذات قيم رموز عمليات معينة عشوائياً لزيادة صعوبة الهندسة العكسية.

📖 للحصول على جدول الرموز الكامل مع تفاصيل الترميز، راجع الوثائق الصينية.

فئات التعليمات

خريطة الطريق

  • دمج واجهة الرسوميات بالكامل — تكامل كامل بين الواجهة الرسومية ومحرك الحماية الخلفي
  • الوضع المختلط — تنفيذ أصلي جزئي + حماية VM جزئية
  • رسم ديناميكي لرموز العمليات — توليد خريطة ISA فريدة لكل جولة حماية

المساهمة

نرحب بالمساهمات! يرجى اتباع الإرشادات التالية:

  1. قم بعمل Fork للمستودع
  2. أنشئ فرع ميزة: git checkout -b feature/new-arch
  3. أضف تغييراتك: git commit -m 'feat: إضافة مفكك لـ x86_64'
  4. ادفع الفرع: git push origin feature/new-arch
  5. أنشئ طلب سحب (Pull Request)

اصطلاح الالتزامات

نتبع الالتزامات التقليدية:

  • feat: ميزة جديدة
  • fix: إصلاح خطأ
  • refactor: إعادة هيكلة الكود
  • docs: وثائق
  • test: اختبارات

الترخيص

هذا المشروع مرخص بموجب رخصة AGPL-3.0.

لماذا AGPL-3.0:

  • ✅ Copyleft قوي — أي تعديلات أو أعمال مشتقة يجب أن تكون مفتوحة المصدر تحت نفس الرخصة
  • ✅ بند الاستخدام الشبكي — تقديم وظائف هذا البرنامج كخدمة شبكية يتطلب أيضاً الكشف عن المصدر
  • ✅ حماية التكنولوجيا الأساسية — يمنع الاستخدام التجاري المغلق المصدر لمحرك الحماية
  • ✅ صديق للمجتمع — مجاني للدراسة والبحث والتحسين — يجب مشاركة التحسينات
  • ✅ الترخيص التجاري — للاستخدام التجاري المغلق المصدر، اتصل بالمؤلف للحصول على ترخيص تجاري

⚠️ إخلاء المسؤولية

هذا البرنامج متاح "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق، الملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لن يكون المؤلفون أو مالكو حقوق الطبع والنشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء تعاقدي أو تقصيري أو غير ذلك، تنشأ عن أو بسبب أو فيما يتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في البرنامج.

صُمم هذا المشروع لتوفير حماية مشروعة للملكية الفكرية لمطوري البرمجيات، للمساعدة في حماية الخوارزميات الأساسية والكود الحرج في البرامج التجارية من الهندسة العكسية غير المصرح بها أو السرقة.

تنبيه المستخدم:

  1. يجب عليك الامتثال لجميع القوانين واللوائح المعمول بها في منطقتك عند استخدام هذا البرنامج
  2. يُحظر تماماً استخدام هذا البرنامج لأي غرض غير قانوني، بما في ذلك على سبيل المثال لا الحصر: تطوير البرامج الضارة، تجاوز تدقيقات الأمان، انتهاك حقوق الملكية الفكرية للآخرين، أو المساس بأمن أنظمة الكمبيوتر
  3. لا يتحمل المؤلف(ون) أي مسؤولية عن أي عواقب مباشرة أو غير مباشرة ناتجة عن استخدام أي شخص لهذا البرنامج
  4. بتنزيلك أو استخدامك أو توزيعك لهذا البرنامج، تقر بأنك قد قرأت ووافقت على الشروط المذكورة أعلاه

المؤلف

LeoChen — @LeoChen-CoreMind

حقوق النشر © 2026 LeoChen. جميع الحقوق محفوظة.

تنزيل الأداة
الطبقةالتقنيةالوصف
حماية VMISA مخصصةرموز عمليات معينة عشوائياً — لا يمكن لمهندسي الهندسة العكسية تحديد دلالات التعليمات مباشرة
OpcodesCryptorتشفير رمز العملية لكل تعليمةenc[pc] = op[pc] ^ (key ^ (pc * 0x9E3779B9))
عكس الكود البايتعكس ترتيب التنفيذتخزين التعليمات بترتيب عكسي؛ يجتاز المترجم بالاتجاه العكسي
إدخال الرمز المميز (Token Entry)دعامة من 3 تعليماتاستبدال الدالة الأصلية بدخول مميز، يخفي موقع الكود البايت الفعلي
التوزيع غير المباشرجدول قفز لمؤشرات الدواليتم ملؤه في وقت التشغيل على المكدس، مما يكسر المراجع المتقاطعة في IDA
الواجهة الرئيسيةتحليل الدوالخيارات الحماية
قائمة الدوالالتحليل والاختيارخيارات الحماية
تنفيذ الحمايةاكتمال الحماية
السجلات في الوقت الفعلياكتمال الحماية
الخيارالافتراضيالوصف
-func—اسم/أسماء الدوال المراد حمايتها (مفصولة بفواصل)
-addr—الحماية حسب العنوان (0xSTART-0xEND[:name])
-oinput.vmpمسار ملف الإخراج
-vfalseإخراج مفصل (عرض التفكيك)
-striptrueإزالة جدول الرموز
-debugfalseتوليد ملف تعيين debug لـ ARM64 → كود بايت VM
-tokentrueوضع الدخول القائم على الرمز المميز
-infofalseطباعة معلومات الـ ELF فقط
الفئةالعددالوصف
نقل البيانات3MOV_IMM64, MOV_IMM32, MOV_REG
العمليات الحسابية/المنطقية21ADD, SUB, MUL, XOR, AND, OR, SHL, SHR, ASR, NOT, ROR, UMULH + متغيرات _IMM
الوصول إلى الذاكرة8LOAD/STORE 8/16/32/64
الفروع/القفزات13JMP, JE, JNE, JL, JGE, JGT, JLE, JB, JAE, JBE, JA, TBZ, TBNZ
المقارنة6CMP, CMP_IMM, CCMP_REG, CCMP_IMM, CCMN_REG, CCMN_IMM
المكدس2PUSH, POP
النظام/الخاص8NOP, HALT, RET, CALL_NATIVE, CALL_REG, BR_REG, SVC, MRS
SIMD2VLD16, VST16
الإجمالي63