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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ida_kernelcache — عدة أدوات IDA لتحليل kernelcaches الخاصة بنظام iOS. | Kitploit
أدوات/GitHubGitHub/bazad/ida_kernelcache
أمان الأنظمة المدمجةالتحليل الثابتأمان iOSتحليل الثغرات الأمنيةالهندسة العكسيةمصممي الأخطاءأمن الجوالتحليل الملفات الثنائيةتحليل البرامج الثابتة
GitHubbazad/ida_kernelcache

ida_kernelcache

عدة أدوات IDA لتحليل kernelcaches الخاصة بنظام iOS.

3058520منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

ida_kernelcache: مجموعة أدوات IDA لتحليل نوى iOS (kernelcaches)

ida_kernelcache هي وحدة IDAPython لـ IDA Pro بهدف تسهيل العمل مع نوى iOS (kernelcaches). توفر الوحدة دوال من أجل:

  • تحويل المؤشرات الثابتة الموسومة (static tagged pointers) الجديدة في iOS 12 إلى مؤشرات نواة عادية.
  • تحليل مقطع __PRELINK_INFO الخاص بالنواة إلى قاموس Python.
  • إعادة تسمية المقاطع في IDA وفقًا لاسم امتداد النواة، ومقطع Mach-O، وقسم Mach-O.
  • تحويل المؤشرات القابلة للتحديد في بعض المقاطع إلى إزاحات (offsets) في IDA.
  • إعادة بناء التسلسل الهرمي لفئات C++ بناءً على معلومات OSMetaClass.
  • ترميز جداول الدوال الافتراضية C++ (كل من الجدول نفسه ودواله).
  • ترميز الإزاحات في أقسام __got ودوال الوصلات (stubs) في أقسام __stubs.
  • توليد هياكل IDA تلقائيًا تمثل جداول الدوال الافتراضية C++.
  • توليد هياكل IDA تلقائيًا تمثل فئات C++ في النواة استنادًا إلى أنماط الوصول المرصودة.

دالة المعالجة الرئيسية مصممة للتنفيذ قبل أي تحليل يدوي أو هندسة عكسية. مع الإعدادات الافتراضية، يميل IDA إلى تفويت الكثير من المعلومات المفيدة في النواة. تساعد هذه البرامج النصية IDA عبر استغلال البنية المعروفة للنواة لنشر المعلومات المفيدة تلقائيًا.

بالإضافة إلى الوظائف الأساسية في الوحدة، يحتوي ida_kernelcache على عدة برامج نصية لتسهيل تحليل نوى iOS. على سبيل المثال، يمكنك استخدام البرامج النصية لتوليد هياكل C المستخدمة بواسطة دالة ما تلقائيًا.

العديد من التقنيات المستخدمة في ida_kernelcache طُوّرت من أجل memctl واقتُبست منه مباشرة.

الإصدارات

تم اختبار ida_kernelcache مع IDA Pro 6.95 على نوى (kernelcaches) لإصدارات iOS 10.1.1 و11.0 و11.2 و11.3.1 و12.0 beta. حاليًا، يتم دعم نوى Arm64 فقط من iOS 10 وما بعده.

البدء

يجب أن يكون لديك بالفعل ملف نواة (kernelcache) مفكوك الضغط محمّلًا في IDA. يمكنك العثور على رابط تنزيل ملف IPSW معيّن من Apple عبر الإنترنت، وهناك عدد من الأدوات العامة (بما في ذلك memctl) القادرة على فك ضغط النواة.

في IDA، اختر "File" -> "Script file..." من شريط القوائم، ثم اختر البرنامج النصي ida_kernelcache.py في الدليل الرئيسي. سيؤدي هذا إلى تحميل وحدة ida_kernelcache في مترجم IDAPython تحت الاسمين ida_kernelcache وkc. في موجه IDAPython، اكتب kc.kernelcache_process() واضغط Enter لبدء تحليل النواة. تنفذ هذه الدالة جميع التحليلات الرئيسية التي يدعمها ida_kernelcache. ستستغرق الدالة عدة دقائق أثناء قيام IDA بتحديد وتحليل الدوال الجديدة.

سيحاول ida_kernelcache عدم الكتابة فوق أسماء المستخدمين للعناوين. هذا يعني أنه إذا كانت النواة قد حُللت يدويًا قبل التهيئة باستخدام kernelcache_process، فقد لا تكون النتائج شاملة لأن الأسماء المحددة من قبل المستخدم قد تمنع نشر الأسماء التلقائي. ومع ذلك، لا يوجد أيضًا ضمان بأن ida_kernelcache لن يفسد التحليل السابق، لذا إذا قررت تشغيل kernelcache_process على ملف نواة قمت بتحليله بالفعل، فقم بعمل نسخة احتياطية أولًا.

وحدة ida_kernelcache

من المفترض أن يتم تحميل ida_kernelcache عبر ida_kernelcache.py؛ الوحدات الفرعية في دليل ida_kernelcache ليست مخصصة للتحميل المباشر. ومع ذلك، يكشف ida_kernelcache عن وظائف العديد من هذه الوحدات الفرعية. إليك ما تفعله كل منها:

  • ida_utilities: تقوم هذه الوحدة بلف بعض دوال IDA لتوفير واجهة برمجية أسهل في الاستخدام. من المفيدة بشكل خاص is_mapped وread_word وread_struct وforce_function وReadWords. تتحقق is_mapped مما إذا كان العنوان مُخططًا (mapped)، وبشكل اختياري مما إذا كان يحتوي على قيمة معروفة. تقرأ read_word كلمة متغيرة الحجم من عنوان. تقرأ read_struct نوع بنية (struct) إلى قاموس Python أو كائن وصول Python، مما يجعل تحليل هياكل البيانات أسهل بكثير. تحاول force_function عدة حيل لتحويل عنوان إلى بداية دالة في IDA. ReadWords هو مولد (generator) للتكرار على كلمات البيانات وعناوينها في نطاق معين.

  • build_struct: تحتوي هذه الوحدة الداخلية على أدوات لملء بنية IDA تلقائيًا استنادًا إلى تسلسل من عمليات الوصول إلى البنية.

  • class_struct: توفر هذه الوحدة دوالًا لتوليد هياكل IDA تمثل جداول الدوال الافتراضية C++ والطبقات. تقوم initialize_vtable_structs بفحص جداول الدوال الافتراضية (المرمزة) وإنشاء هياكل IDA لحفظ مؤشرات الدوال الافتراضية. تقوم initialize_class_structs بإجراء تحليل تدفق بيانات (data flow analysis) على الدوال الافتراضية لتحديد عمليات الوصول إلى حقول كل فئة، ثم تنشئ هياكل IDA لتمثيل الفئات. يتم أيضًا تحويل التعليمات التي يبدو أنها تشير إلى حقل إلى مراجع إزاحة بنية (structure offset references). راجع docstring الخاص بالوحدة لمزيد من التفاصيل.

  • classes: تعرف هذه الوحدة نوع ClassInfo الذي يحتفظ بمعلومات حول فئات C++ في النواة وتوفر الدالة collect_class_info لفحص النواة بحثًا عن الفئات وملء قاموس class_info العام بخريطة من أسماء الفئات إلى كائنات ClassInfo. يسجل نوع ClassInfo اسم الفئة، ومثيل OSMetaClass، وجدول الدوال الافتراضية، واسم الفئة الأب لكل فئة C++. بالإضافة إلى ذلك، يخزن كل كائن ClassInfo مراجع إلى ClassInfo الخاص بالفئة الأب وClassInfo لجميع الفئات الفرعية المباشرة، مما يسهل فحص التسلسل الهرمي للفئات واجتيازه. تخزن collect_class_info أيضًا مجموعة جميع جداول الدوال الافتراضية في المجموعة العامة vtables.

  • data_flow: تحتوي هذه الوحدة الداخلية على عمليات تدفق البيانات المستخدمة من قبل بقية أجزاء ida_kernelcache.

  • kernel: توفر هذه الوحدة المتغيرين العامين base وprelink_info. base هو العنوان الأساسي لصورة النواة (بداية رأس Mach-O الخاص بالنواة). prelink_info هو قاموس __PRELINK_INFO المُحلَّل.

  • kplist: توفر هذه الوحدة الدالة kplist_parse لتحليل قوائم plists بنمط النواة.

  • metaclass: توفر هذه الوحدة الدالة initialize_metaclass_symbols التي تضيف رمزًا (symbol) لكل مثيل OSMetaClass معروف.

  • offset: توفر هذه الوحدة الدالتين initialize_data_offsets وinitialize_offset_symbols. تقوم الأولى بفحص المقاطع بحثًا عن مؤشرات يمكن تحويلها إلى إزاحات. تقوم الأخيرة بترميز الإزاحات في قسم __got لكل kext إذا كان هدف الإزاحة يحتوي على رمز.

  • segment: توفر هذه الوحدة الدالة initialize_segments لإعادة تسمية مقاطع IDA بحيث تكون أكثر فائدة. افتراضيًا، يبدو أن IDA ينشئ أسماء المقاطع من خلال الجمع بين تخمين لمعرف الحزمة (bundle identifier) وقسم Mach-O الذي يصف المنطقة. تستخرج initialize_segments معرّف الحزمة الحقيقي من قاموس __PRELINK_INFO وتعيد تسمية كل مقطع ليشمل معرّف الحزمة ومقطع Mach-O وقسم Mach-O. هذا يجعل من الممكن، على سبيل المثال، التمييز بين __TEXT.__const و__DATA_CONST.__const. توفر هذه الوحدة أيضًا الدالة kernelcache_kext (المعاد تصديرها على المستوى الأعلى) لتحديد kext الذي يحتوي على العنوان المحدد (فقط على تنسيق نوى iOS 11 المقسمة القديمة).

  • stub: تحتوي العديد من kexts في النواة على دوال وصلات (stub functions) في قسم __stubs تقفز إلى دوال في النواة نفسها. لسوء الحظ، تشكل هذه الوصلات حاجزًا أمام نشر المراجع المتبادلة ومعلومات الأنواع. لا تحل هذه الوحدة هذه المشكلات، لكنها تجعل النظر إلى الوصلات أسهل قليلًا عن طريق إعادة تسمية دوال الوصلات تلقائيًا بحيث يكون اسم الدالة الهدف مرئيًا. يتم تحويل الوصلات وأهدافها قسريًا إلى دوال في IDA، مما يساعد على محاذاة الدوال في IDA مع الدوال في الكود المصدري الأصلي.

  • tagged_pointers: يحتوي تنسيق نوى iOS 12 المدمج الجديد على البايتين العلويين من كل مؤشر موسومين بإزاحة من أجل ربط المؤشرات معًا في قائمة. تحتوي هذه الوحدة على دوال لمعالجة واستعادة تلك المؤشرات الموسومة.

تنزيل الأداة