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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
KeyPatchX — KeyPatch Enhanced — إضافة IDA Pro لترقيع لغة التجميع x86/x64 الواعي بالرموز، مدعومة بمحرك Keystone. تفرّع من Keypatch مع دقة تلقائية لرموز IDA، وترميز نسبي لـ RIP، وتصحيح الأسماء _↔. | Kitploit
أدوات/GitHubGitHub/gmh5225/keypatchx
التحليل الثابتالاستغلالالهندسة العكسيةمصممي الأخطاءالأدوات والمكوناتتحليل الملفات الثنائيةاستغلال الملفات الثنائية
GitHubgmh5225/keypatchx

KeyPatchX

KeyPatch Enhanced — إضافة IDA Pro لترقيع لغة التجميع x86/x64 الواعي بالرموز، مدعومة بمحرك Keystone. تفرّع من Keypatch مع دقة تلقائية لرموز IDA، وترميز نسبي لـ RIP، وتصحيح الأسماء _↔.

عرض المستودع
92منذ 7 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

KeyPatch Enhanced — إضافة IDA Pro للغة التجميع الواعية بالرموز

فرع محسّن مبني على Keypatch (بواسطة Nguyen Anh Quynh و Thanh Nguyen)، معدّل بواسطة Euarno.

التحسين الجوهري: استخدام أسماء رموز IDA مباشرةً في لغة التجميع x86/x64، حيث تقوم الإضافة تلقائيًا بتحليل العناوين وتوليد ترميز RIP-relative / rel32 الصحيح.


الميزات الجديدة

1. التجميع باستخدام أسماء الرموز مباشرةً

أدخل التعليمات مع أسماء الرموز مباشرةً في مربع حوار Keypatch، دون الحاجة إلى حساب العناوين والإزاحات يدويًا:

call rc4_crypt          ; حساب إزاحة rel32 النسبية تلقائيًا
jmp  main               ; نفس الشيء
lea  rcx, enc_0         ; x64: توليد lea rcx, [rip + disp32] تلقائيًا
lea  rax, Format         ; نفس الشيء

2. التصحيح التلقائي لأسماء IDA (_ ↔ .)

تقوم IDA أحيانًا بعرض . في قاعدة البيانات على شكل _ (مثلًا enc.0 تظهر كـ enc_0). تحاول الإضافة تلقائيًا البحث عن المتغيرات من _ → .، دون الحاجة للقلق بشأن تنسيق التخزين الداخلي لـ IDA.

3. أنواع التعليمات المدعومة

النوعالمثالطريقة المعالجة
CALL / JMP / Jcccall func_nameالرمز → العنوان المطلق، Keystone يحسب rel32
LEA (رمز مجرّد)lea rcx, symbolx64: → lea rcx, [rip + disp32]
x86: → lea ecx, [addr]
LEA (معامل مركّب)lea rcx, [rbp+0x120+Str]استبدال الرمز بقيمة العنوان فقط، مع الحفاظ على بنية التعبير
MOV offsetmov rax, offset symbolx64: التحويل إلى lea rax, [rip + disp32]
إذا تجاوز النطاق يُستخدم mov rax, imm64
الوصول إلى الذاكرة [symbol]mov rax, qword ptr [symbol][symbol] → [0xADDR]، Keystone يرمّز تلقائيًا
رمز القيمة الفوريةpush symbolالرمز → 0xADDR

4. رسائل خطأ محسّنة

عند فشل التجميع، تعرض نافذة الإخراج:

Keypatch: Keystone error: Invalid operand (KS_ERR_ASM_INVALIDOPERAND)
Keypatch:   input asm  : lea rcx, [rip + 0x176E3]
Keypatch:   fixed asm  : LEA RCX, [RIP + 0x176E3]
Keypatch:   address    : 0x140001966

التثبيت

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

  • IDA Pro 7.0+
  • ارتباطات Python الخاصة بـ Keystone Engine
pip install keystone-engine

تثبيت الإضافة

انسخ keypatch.py إلى دليل الإضافات في IDA:

النظامالمسار
Windows%APPDATA%\Hex-Rays\IDA Pro\plugins\ أو <IDA安装目录>\plugins\
macOS~/.idapro/plugins/ أو <IDA安装目录>/plugins/
Linux~/.idapro/plugins/ أو <IDA安装目录>/plugins/

أعد تشغيل IDA فحسب.


طريقة الاستخدام

فتح Patcher

  • القائمة: Edit → Keypatch → Patcher
  • اختصار لوحة المفاتيح: Ctrl + Alt + K
  • قائمة النقر بزر الفأرة الأيمن: Keypatch → Patcher

سير العمل الأساسي

  1. في نافذة تفكيك IDA، ضع المؤشر على العنوان الهدف
  2. اضغط Ctrl + Alt + K لفتح Patcher
  3. أدخل التعليمات في حقل Assembly (يمكن استخدام أسماء رموز IDA)
  4. راجع حقل Encoding للتأكد من صحة الترميز
  5. انقر على Patch لتطبيق التعديل

مثال: Hook لاستدعاء دالة

لنفترض أنك تريد patch قفزة إلى rc4_crypt عند العنوان 0x140001966:

Assembly: call rc4_crypt

تحلّل الإضافة تلقائيًا عنوان rc4_crypt، وتحسب إزاحة rel32، وتولّد ترميز E8 xx xx xx xx الصحيح.

مثال: تحميل عنوان بيانات

Assembly: lea rcx, enc_0

تقوم الإضافة تلقائيًا بـ:

  1. تحليل enc_0 (قد يكون الاسم الداخلي enc.0) → العنوان 0x140013050
  2. حساب إزاحة RIP-relative disp32 = 0x140013050 - (0x140001966 + 7)
  3. توليد lea rcx, [rip + 0x176E3]
  4. تمريره إلى Keystone لترميزه إلى لغة الآلة

تعبئة النطاق (Fill Range)

  1. حدّد نطاق عناوين في نافذة التفكيك
  2. اضغط Ctrl + Alt + K لفتح Fill Range
  3. أدخل التعليمات (مثل nop)، وسيتم تعبئة النطاق بالكامل تلقائيًا

التراجع

  • القائمة: Edit → Keypatch → Undo last patching

ملاحظات

  • حدود النطاق RIP-relative: نطاق العنونة RIP-relative لـ lea و [symbol] هو ±2GB. إذا تجاوز الرمز النطاق، ستعرض الإضافة رسالة خطأ.
  • حدود القيم الفورية في x64: في push symbol ضمن x64، يجب أن يكون عنوان الرمز ≤ 0x7FFFFFFF (توسيع إشارة imm32)، وإلا سيظهر تحذير. يُنصح باستخدام lea reg, symbol + push reg بدلًا من ذلك.
  • تعدد العبارات بفاصلة منقوطة: لا يتم حاليًا دعم تحليل الرموز في صيغة العبارات المتعددة مثل lea rcx, sym; call func. يرجى عمل patch لكل تعليمة على حدة.

المشروع الأصلي

  • المؤلف الأصلي: Nguyen Anh Quynh (@aquynh) و Thanh Nguyen
  • المشروع الأصلي: keystone-engine/keypatch
  • الرخصة الأصلية: GPL v2
  • الصفحة الرئيسية للمشروع: http://keystone-engine.org/keypatch
  • Keystone Engine: http://www.keystone-engine.org

المعدّل

  • Euarno — ميزة التحليل التلقائي لرموز IDA، تصحيح الأسماء _ ↔ .، دعم ترميز x64 RIP-relative، إخراج أخطاء محسّن

الرخصة

تُنشر هذه النسخة المعدّلة تحت رخصة MIT. راجع ملف LICENSE للتفاصيل.

حقوق النشر الخاصة بكود Keypatch الأصلي تعود للمؤلف الأصلي، ويُنشر تحت رخصة GPL v2.

تنزيل الأداة