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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
DeadDialect — معمارية تعليمات RISC-V فريدة لكل جلسة — كل إقلاع يتحدث لهجة مختلفة. الملفات الثنائية القديمة تصبح غير صالحة. لا يمكن للبرامج الضارة البقاء. | Kitploit
أدوات/GitHubGitHub/engrbilal992/deaddialect
أدوات دفاعيةأمان الأنظمة المدمجةالاستغلالالهندسة العكسيةتحليل البرمجيات الخبيثةالتشفيراختبار الاختراقأمن الأجهزةتحليل الملفات الثنائيةالفريق الأحمر
GitHubengrbilal992/deaddialect

DeadDialect

6منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

معمارية تعليمات RISC-V فريدة لكل جلسة — كل إقلاع يتحدث لهجة مختلفة. الملفات الثنائية القديمة تصبح غير صالحة. لا يمكن للبرامج الضارة البقاء.

عرض المستودع

DeadDialect

كل إقلاع يتحدث لغة مختلفة. ثنائي الأمس هو كود اليوم الميت.

نظام إعادة توجيه مجموعة تعليمات RISC-V فريد لكل جلسة. في كل مرة يُقلع فيها النظام، يُنشئ تبديلًا تشفيريًا جديدًا لمجموعة التعليمات. يتم رفض الملفات الثنائية المترجمة لجلسة واحدة تشفيريًا في الجلسة التالية. البرامج الضارة التي تنجو من إعادة التشغيل لا يمكنها التنفيذ — فهي تتحدث لهجة ميتة.


الفكرة

مجموعات التعليمات القياسية هي عقود ثابتة. كل برنامج، كل مكتبة، كل قطعة من البرامج الضارة تتفق على معنى 0x13، ما تفعله استدعاء النظام 64، أي سجل هو مؤشر المكدس. DeadDialect يكسر هذا العقد في كل جلسة.

root@kitploit:~
Boot A:  addi = 0x13,  write = syscall 64,   t0 = x5
Boot B:  addi = 0x33,  write = syscall 178,  t0 = x19
Boot C:  addi = 0x67,  write = syscall 291,  t0 = x23

الملف الثنائي المُترجم لـ Boot A هو هراء على Boot B. إما أنه ينفذ تعليمات خاطئة، أو يستدعي وظائف نواة خاطئة، أو يفشل في التحقق من البصمة التشفيرية — أيهما يأتي أولاً.


البنية

root@kitploit:~
256-bit session seed  (os.urandom)
         │
         ├─── opcode permutation   →  /etc/isa/map              12!  ≈ 2²⁹
         ├─── register permutation →  /etc/isa/register_keyring 21!  ≈ 2⁶⁵
         └─── syscall permutation  →  /etc/isa/syscall_keyring  436! ≈ 2³⁰⁰⁰⁺
                                                                 ─────────────
                                               Combined entropy: 2³⁰⁹⁴⁺

ثلاث طبقات مستقلة. المهاجم الذي يكسر طبقة واحدة لا يزال يواجه الطبقتين الأخريين.

root@kitploit:~
┌──────────────────────────────────────────────────────────────┐
│                     Binary (.text)                           │
│        rewritten at compile time by isa_integrate.py         │
│        fingerprint NOPs embedded at .text+0                  │
└─────────────────────────┬────────────────────────────────────┘
                          │
                          ▼
┌──────────────────────────────────────────────────────────────┐
│                  Patched QEMU 8.2.0                          │
│                                                              │
│  translate.c  ←  register_mapping.h                         │
│  ├── verify 24-bit SHA-256 fingerprint                       │
│  │   mismatch → SIGILL before first instruction              │
│  └── remap 21 shuffleable registers                         │
│                                                              │
│  syscall.c    ←  syscall_mapping.h                          │
│  └── translate permuted syscall number → standard           │
│                                                              │
│  [Phase 1/2]  ←  isa_mapping.h                              │
│  └── remap 12 primary opcodes                               │
└──────────────────────────┬───────────────────────────────────┘
                           │
                           ▼
              Alpine Linux RISC-V (boots normally)
              OS is unaware of the remapping

بروتوكول البصمة

كل ملف ثنائي مُجمّع يحمل بصمة تشفيرية 24 بت مضمنة كتعليمتين من نوع NOP غير ضارتين addi x0,x0,N في بداية .text. هذه هي تعليمات NOP حقيقية لـ RISC-V — فهي تكتب إلى سجل الصفر وليس لها تأثير معماري — لكنها تُشفّر دليل الجلسة.

root@kitploit:~
QEMU sees fingerprint NOPs + matching keyring  →  RUN
QEMU sees fingerprint NOPs + wrong keyring     →  SIGILL
QEMU sees no fingerprint  + active keyring     →  SIGILL  ← standard binary blocked
QEMU sees fingerprint NOPs + empty keyring     →  SIGILL  ← remapped binary blocked

البصمة مشتقة من SHA-256(seed). لم يتم العثور على أي تصادم في أول 100,000 بذرة تم اختبارها.


هيكل المستودع

root@kitploit:~
DeadDialect/
├── opcode-remapping/       Phase 1 — 12 opcode shuffle
├── trigger-remapping/      Phase 2 — live trigger, no reboot needed
│   └── alpine/             Alpine Linux demo
├── syscall-remapping/      Phase 3 M1 — 436 syscall shuffle
├── register-remapping/     Phase 3 M2 — 21 register shuffle + fingerprint
└── integration/            Phase 3 M3 — all layers simultaneously
    ├── isa_integrate.py    unified rewriter
    ├── register_mapping.h
    ├── syscall_mapping.h
    ├── isa_remap_ldso.h    musl ld.so patch (dynamic binaries)
    ├── trigger/
    │   └── trigger_demo.sh one trigger rotates both layers atomically
    ├── alpine/
    │   ├── boot_alpine.sh  boot Alpine under patched QEMU
    │   ├── alpine_demo.sh  full ISA demo inside Alpine
    │   ├── full_alpine_test.sh
    │   └── setup_alpine.sh fresh machine setup
    ├── build.sh            downloads + patches QEMU 8.2.0
    ├── demo.sh
    └── audit.sh            51/51 checks

بداية سريعة

المتطلبات: Ubuntu 22.04، clang، lld، python3، wget، ninja-build، libglib2.0-dev، libpixman-1-dev، libslirp-dev

root@kitploit:~
git clone https://github.com/engrbilal992/DeadDialect.git
cd DeadDialect/integration

# Build patched QEMU 8.2.0 (~10 min first run)
bash build.sh

# Security demo
bash demo.sh

# One trigger rotates both layers simultaneously
bash trigger/trigger_demo.sh

# Boot Alpine Linux under patched QEMU
cd alpine
bash setup_alpine.sh   # first time only — downloads kernel + rootfs
bash boot_alpine.sh    # boots to ~ # prompt in ~30 seconds

# Alpine ISA demos
bash alpine_demo.sh
bash full_alpine_test.sh

نتائج العرض

إثبات أمان 6 سيناريوهات

root@kitploit:~
T1: Standard binary,   empty keyrings    →  runs   ✓
T2: Integrated binary, correct keyrings  →  runs   ✓
T3: Standard binary,   active keyrings   →  SIGILL ✗
T4: Integrated binary, empty keyrings    →  SIGILL ✗
T5: Wrong-seed binary                    →  SIGILL ✗
T6: Correct seed binary                  →  runs   ✓

عرض المشغل

root@kitploit:~
Session A  binary runs                        SUCCESS ✓
Session A  malware runs                       EXECUTED (expected — same session)
           ── trigger fires ──
Session B  old binary                         BLOCKED ✓
Session B  malware                            BLOCKED ✓
Session B  new binary compiled for B          SUCCESS ✓

اختبارات التحمل

root@kitploit:~
100,000 seeds — zero collisions
Seed 999999999                →  BLOCKED under different session ✓
Seed 2²⁵⁶-1 (max 256-bit)    →  BLOCKED under different session ✓
Keyring corrupted mid-run     →  BLOCKED on corrupted keyring   ✓

نتائج التدقيق

Milestone

خصائص الأمان

ما يمنعه

  • استمرار البرامج الضارة — أي ملف ثنائي من جلسة سابقة يموت عند الإقلاع التالي
  • استغلالات ما قبل التجميع — كود شيل لمجموعة تعليمات ثابتة يفشل فورًا
  • هجمات إعادة التشغيل — الملفات الثنائية من جلسة لا يمكنها التنفيذ في أخرى
  • تنفيذ QEMU القياسي — الملفات الثنائية المُعاد توجيهها تتطلب المُنفذ المُصحّح

لماذا الإنتروبيا مهمة

root@kitploit:~
Guessing register permutation:  1 in 21!  ≈ 1 in 51 quintillion
Guessing syscall permutation:   1 in 436! ≈ 1 in 10^(1000+)
Guessing both simultaneously:   not a viable attack

نطاق الإثبات

  • -march=rv64g مطلوب (تعليمات RVC المضغوطة لم تُعالج بعد)
  • ملفات ثنائية ثابتة فقط لبرامج الاختبار (الدعم الديناميكي عبر isa_remap_ldso.h)
  • الهجمات التي تُكتمل خلال جلسة واحدة لم يتم معالجتها

كيف تعمل كل طبقة

السجلات (register_mapping.h)

يتم خلط 21 من أصل 32 سجلًا لـ RISC-V. السجلات الخاصة بواجهة ABI مجمدة. خطاف QEMU يستخدم جدول OPCODE_FIELDS — فقط حقول السجلات الفعلية يُعاد توجيهها، ولا يتم لمس القيم الفورية مطلقًا (إصلاح كورتيس).

مجمدقابل للخلط
x0 x1 x2 x10-x17x3-x9, x18-x31 (21 سجلًا)

استدعاءات النظام (syscall_mapping.h)

تم تبديل 436 استدعاء نظام لـ Linux RISC-V. سطر واحد في do_syscall(). إعادة تحميل mtime — تحديث keyring دون إعادة تشغيل QEMU.

الأوبكود (isa_mapping.h)

تم خلط 12 أوبكود أساسي. خطاف فك التشفير في translate.c يستعيد الأوبكود القياسي قبل وحدة فك التشفير.

ld.so (isa_remap_ldso.h)

تصحيح الرابط الديناميكي musl — يعيد توجيه .text لكل ELF محمّل عند التحميل. لا يمكن تجاوزه عبر LD_PRELOAD. يتطلب إعادة بناء Alpine musl.


اتجاهات مستقبلية

  • دعم ARM (نفس المفهوم، عقد ISA ثابت مختلف)
  • إعادة توجيه .text النواة قبل الإقلاع
  • تنفيذ FPGA عتادي
  • منشور أكاديمي / Hacker News

المؤلفون والمتعاونون

Curtis Cole

Muhammad Bilal

"كنت أعلم أن فكرتي حقيقية، لكني متأكد أن الجميع ظنوني مجنونًا." — Curtis Cole

تنزيل الأداة
Checks
Status
Trigger remapping37/37✓
Syscall remapping40/40✓
Register remapping43/43✓
Integration51/51✓