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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ida_kcpp — وحدة IDAPython لتعزيز دعم C++ فوق ida_kernelcache | Kitploit
أدوات/GitHubGitHub/cellebrite-labs/ida_kcpp
التحليل الثابتأمان iOSالهندسة العكسيةأمن الجوالتحليل الملفات الثنائية
GitHubcellebrite-labs/ida_kcpp

ida_kcpp

وحدة IDAPython لتعزيز دعم C++ فوق ida_kernelcache

عرض المستودع
1421535منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

ida_kcpp

وحدة IDAPython توفر طريقة أكثر ملاءمة بكثير لهندسة عكسية لـ iOS kernelcaches.

جزء كبير من iOS kernelcache مكتوب بلغة C++، والتي تُترجم إلى شيفرة ثنائية معقدة تستخدم العديد من إلغاءات مراجع الجداول الافتراضية بدلاً من الاستدعاءات المباشرة الصريحة. يستفيد ida_kcpp من إعادة بناء التسلسل الهرمي للفئات في ida_kernelcache. فهو يربط IDB ويزامن الدوال الثنائية والدوال الافتراضية الأصلية. ويتيح التنقل عبر iOS kernelcache بالنقر المزدوج على استدعاء دوال C++ الافتراضية، وإيجاد مراجعها المتقاطعة (xrefs)، والحفاظ على كل ذلك متزامنًا أثناء البحث المباشر.

ida_kcpp مستوحى من ida_medigate لكنه يستفيد من البنية الفريدة لـ iOS kernelcache ويوفر بيئة بحث أكثر قوة وملاءمة.

general_view

التثبيت

  • ثبّت ida_kernelcache (نسخة Cellebrite المتفرعة)
  • اختياري، لكنه موصى به بشدة: ثبّت ida-referee (نسخة Cellebrite المتفرعة) لتتبع المراجع المتقاطعة لحقول البُنى (structs) من الوصول عبر المفكك (decompiler)

لا يوجد أي منهما على PyPI، لذا اتبع تعليمات التثبيت في مستودعاتهما.

مع ida-setup:

ida-setup plugin install -e /path/to/ida-kcpp

أو يدويًا:

  1. ثبّت ida-netnode
  2. تأكد من وجود ida_kernelcache وida_kcpp في مسار IDA python.

يمكن أيضًا إضافتهما عبر الإضافة إلى ~/.idapro/idapythonrc.py:

import sys
sys.path.append(IDA_KCPP_PATH)
sys.path.append(IDA_KERNELCACHE_PATH)
  1. أنشئ رابطًا رمزيًا ~/.idapro/plugins/ida_kcpp_plugin.py إلى ida_kcpp_plugin.py

الاستخدام

التحليل الأولي

  1. افتح kernelcache الذي تم تحليله. إذا لم يكن ida_kernelcache قد تم تشغيله بعد، فيرجى تشغيله عبر edit >> Plugins >> Kernel Cache CPP >> ida_kernelcache process kernel
  2. شغّل Edit >> Plugins >> Kernel Cache CPP >> Perform Initial sync... (قد تظهر بعض مربعات حوار التحذير، يمكنك تجاهلها في الوقت الحالي). تعيد هذه الخطوة تسمية أسماء الدوال الافتراضية (Virtual functions) عبر تعيين بادئتها إلى الفئة التي تنتمي إليها. كما تقوم هذه الخطوة أيضًا بفك تجميع (decompile) جميع الدوال الافتراضية، وتعيين وسيط this الخاص بها، وتغيير العضو ذي الصلة ::vmethods ليكون مؤشر دالة إلى النوع المفكوك. قد تستغرق هذه الخطوة بعض الوقت...
  3. الآن أصبح لديك "Synced IDB"، لكن انتبه - الإضافة ليست مُفعّلة بعد.

تفعيل الإضافة لـ IDB متزامن

يقوم ida_kcpp تلقائيًا بنشر الأسماء والنماذج الأولية (prototypes)، ويغيّر أيضًا بعض جوانب التنقل في IDA، ولذلك لا يتم تفعيله تلقائيًا بل يمكن تفعيله أو تعطيله في أي لحظة.

فعّل ida_kcpp بالنقر على edit >> Plugins >> Kernel Cache CPP >> Activate Plugin (سيؤدي هذا إلى تثبيت خطافات Hexrays وتشغيل ida_kernelcache.collect_class_info() أيضًا)

تعطيل الإضافة

بالنقر على Edit >> Plugins >> Kernel Cache CPP >> Deactivate Plugin

نظرة عامة على الميزات

مُزامِن الدوال الافتراضية

إعادة تسمية الدوال الافتراضية

عند إعادة تسمية دالة افتراضية يمكن للمرء تعديل الاسم المُشوَّه (mangled name) (على سبيل المثال __ZNK10AppleA7IOP9method_86Ev_99)، أو تغييره إلى أسماء مفهومة للبشر (AppleA7IOP::method_86) والتي ستُشوَّه تلقائيًا. سيتم إعادة تسمية العضو ذي الصلة ANCESTOR::vmethods أيضًا، وكذلك سيتم إعادة تسمية جميع الدوال الافتراضية التي تنفّذ نفس الدالة الافتراضية.

تحديث النموذج الأولي للدوال الافتراضية

ينطبق الأمر نفسه على تغيير النموذج الأولي للدالة الافتراضية. في هذه الحالة، سيتم تغيير النموذج الأولي للعضو ذي الصلة ANCESTOR::vmethods إلى مؤشر دالة للنوع الذي تم تعيينه للتو، مع تعيين this كـ ANCESTOR *. كما سيتم تغيير النماذج الأولية لجميع تنفيذات الدوال الافتراضية ذات الصلة الخاصة بـ DESCENDANTS التابعة لـ ANCESTOR، مع تعيين this الخاصة بها إلى DESCENTANT *.

مراجع XREFS المحسّنة

  • نضيف مرجعًا (xref) من كل دالة افتراضية إلى عضوها المجرّد ::vmethods.
  • باستخدام ida_referee يمكننا تتبع استخدامات كل حقل، وخاصة عضو ::vmethods (الاستدعاءات الافتراضية) في المفكك (decompiler).
    • أضفنا أيضًا اختصار لوحة المفاتيح CTRL+SHIFT+Y من الدالة الافتراضية، لفتح نافذة المراجع (xrefs) مباشرةً إلى عضو ::vmethod ذي الصلة. لدى IDA خطأ وهذا يعمل فقط من نافذة فك التجميع وليس من المفكك.

تنقل محسّن

  • المفكك (Decompiler): النقر المزدوج على استدعاء دالة افتراضية يُظهر نافذة تتيح للمستخدم اختيار تنفيذ الدالة الافتراضية.

    image-20220707161129479

  • عرض الأنواع المحلية (Local Types view) (Shift+F1):

    • النقر المزدوج على دالة افتراضية ينتقل إلى التنفيذ (ملاحظة: يعرض IDA 9 أيضًا مربع حوار إعادة تسمية يمكن إغلاقه)
    • Cmd+Enter على دالة افتراضية ينتقل أيضًا إلى التنفيذ (بديل أنظف من النقر المزدوج)
    • تم إصلاح خطأ في IDA حيث كان النقر المزدوج على اسم بنية (struct) يحتوي على :: لا ينتقل.

تحسينات مستقبلية

  1. إضافة دعم لتوافق فئات C++ في IDA7.2. يتطلب تغيير تخطيط بنى ida_kernelcache وهو ما لم نقم به بعد لأسباب تتعلق بالإرث (legacy)
  2. إضافة واجهة لحل تعارضات الأسماء/النماذج الأولية.

معلومات

من تأليف Uriel Malin وIevgen Solodovnykov وOmer Porzecanski من Cellebrite Labs. تم تطويره واختباره لـ IDA 9.2 على macOS مع Python 3.13

تنزيل الأداة