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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
xnu — نواة هجينة تجمع بين Mach وFreeBSD وIOKit لنظامي macOS وiOS. تقدم خدمات نظام التشغيل الأساسية، إطار عمل السائق، وتطبيق سياسات الأمان على x86_64 وARM64. | Kitploit
أدوات/GitHubGitHub/apple-oss-distributions/xnu
أمان الأنظمة المدمجةتحليل الذاكرة الجنائيمصممي الأخطاءأمن الأجهزةتحليل البرامج الثابتة
GitHubapple-oss-distributions/xnu

xnu

نواة هجينة تجمع بين Mach وFreeBSD وIOKit لنظامي macOS وiOS. تقدم خدمات نظام التشغيل الأساسية، إطار عمل السائق، وتطبيق سياسات الأمان على x86_64 وARM64.

عرض المستودع
3.5k39724منذ 0 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

ما هو XNU؟

نواة XNU هي جزء من نظام تشغيل Darwin المستخدم في أنظمة تشغيل macOS و iOS. XNU هو اختصار لعبارة X is Not Unix. XNU هي نواة هجينة تجمع بين نواة Mach التي طورتها جامعة Carnegie Mellon مع مكونات من FreeBSD وواجهة برمجة تطبيقات C++ لكتابة برامج التشغيل تسمى IOKit. تعمل XNU على x86_64 و ARM64 لكل من التكوينات أحادية المعالج ومتعددة المعالجات.

شجرة مصدر XNU

  • config - تكوينات لواجهات برمجة التطبيقات المصدرة للبنية الأساسية والمنصة المدعومة.
  • SETUP - مجموعة أساسية من الأدوات المستخدمة لتكوين النواة، وإدارة الإصدارات، وإدارة رموز kext.
  • EXTERNAL_HEADERS - ملفات الرأس المستمدة من مشاريع أخرى لتجنب دورات التبعية أثناء البناء. يجب مزامنة هذه الملفات بانتظام عند تحديث المصدر.
  • libkern - كود مكتبة IOKit بلغة C++ للتعامل مع برامج التشغيل وملحقات النواة (kexts).
  • libsa - كود تمهيد النواة لبدء التشغيل.
  • libsyscall - واجهة مكتبة استدعاءات النظام لبرامج مساحة المستخدم.
  • libkdd - مصدر مكتبة المستخدم لتحليل بيانات النواة مثل البيانات المجزأة للنواة.
  • makedefs - قواعد وتعريفات المستوى الأعلى لبناء النواة.
  • osfmk - الأنظمة الفرعية القائمة على نواة Mach.
  • pexpert - كود خاص بالمنصة مثل معالجة المقاطعات، الذريات، إلخ.
  • security - واجهات سياسة فحص الوصول الإلزامي والتنفيذ المرتبط بها.
  • bsd - كود الأنظمة الفرعية لـ BSD.
  • tools - مجموعة من الأدوات لاختبار وتصحيح وتحليل أداء النواة.

كيفية بناء XNU

بناء نواة DEVELOPMENT

يمكن لنظام make الخاص بـ xnu بناء نواة بناءً على متغيرات KERNEL_CONFIGS و ARCH_CONFIGS كوسائط. إليك الصيغة:```text make SDKROOT= ARCH_CONFIGS= KERNEL_CONFIGS=

Where:

* `<sdkroot>`: المسار إلى macOS SDK على القرص. (الافتراضي `/`)
* `<variant>`: يمكن أن يكون `debug`، `development`، `release`، `profile` ويقوم بتكوين أعلام الترجمة والتأكيدات عبر كود النواة.
* `<arch>`: يمكن أن يكون بنية صالحة للبناء من أجلها. (مثال: `X86_64`)

لبناء نواة لنفس بنية نظام التشغيل الجاري، اكتب فقط```text
make SDKROOT=macosx.internal

بالإضافة إلى ذلك، هناك دعم لتكوين البنى من خلال ARCH_CONFIGS وتكوينات النواة باستخدام KERNEL_CONFIGS.```text make SDKROOT=macosx.internal ARCH_CONFIGS=X86_64 KERNEL_CONFIGS=DEVELOPMENT make SDKROOT=macosx.internal ARCH_CONFIGS=X86_64 KERNEL_CONFIGS="RELEASE DEVELOPMENT DEBUG"

> ملاحظة: يتم تعيين البنية افتراضيًا على بنية جهاز البناء، ويتم تعيين تكوين kernel الافتراضي للبناء من أجل `DEVELOPMENT`.

سيؤدي هذا أيضًا إلى إنشاء صورة قابلة للإقلاع، و kernel.[config]، وملف ثنائي للنواة مع الرموز، kernel.[config].unstripped.

لتثبيت kernel في DSTROOT، استخدم الهدف `install_kernels`:```text
make install_kernels DSTROOT=/tmp/xnu-dst

للحصول على تجربة تصحيح أخطاء النواة أكثر إرضاءً، مع الوصول إلى جميع المتغيرات والوسائط المحلية، ولكن دون جميع الفحوصات الإضافية لنواة DEBUG، أضف شيئًا مثل ما يلي إلى أمر make الخاص بك:```text CFLAGS_DEVELOPMENTARM64="-O0 -g -DKERNEL_STACK_MULTIPLIER=2" CXXFLAGS_DEVELOPMENTARM64="-O0 -g -DKERNEL_STACK_MULTIPLIER=2"

تذكر استبدال `DEVELOPMENT` و `ARM64` بالبناء والمنصة المناسبين.

> الخيارات الإضافية: يمكنك تمرير خيارات إضافية لمجمع C من سطر الأوامر باستخدام إعداد البناء `EXTRA_CFLAGS`. يتم إلحاق هذه الخيارات بقاعدة `CFLAGS`، والقيمة الافتراضية للإعداد هي سلسلة فارغة.
>
> يتيح لك هذا الإعداد، على سبيل المثال، تشغيل كود التصحيح بشكل انتقائي المحمي بواسطة ماكرو المعالج المسبق. مثال الاستخدام...
>
> ```text
> make SDKROOT=macosx.internal PRODUCT_CONFIGS=j314s 
> EXTRA_CFLAGS='-DKERNEL_STACK_MULTIPLIER=2'
> ```

* لبناء مع تكوين نواة RELEASE

    ```text
    make KERNEL_CONFIGS=RELEASE SDKROOT=/path/to/SDK
    ```

### بناء ثنائي نواة FAT

حدد البنى في بيئتك أو عند تشغيل أمر make.```text
make ARCH_CONFIGS="X86_64" exporthdrs all

خيارات Makefile الأخرى

  • $ make MAKEJOBS=-j8 # سيستخدم هذا 8 عمليات أثناء البناء. الافتراضي هو ضعف عدد وحدات المعالجة النشطة.
  • $ make -j8 # يتم أيضًا قبول خيار سطر الأوامر القياسي
  • $ make -w # تتبع استدعاءات make المتكررة. مفيد مع VERBOSE=YES
  • $ make BUILD_LTO=0 # بناء بدون تحسين ربط وقت LLVM
  • $ make BOUND_CHECKS=0 # تعطيل -fbound-attributes لهذا البناء
  • $ make REMOTEBUILD=user@remotehost # تنفيذ البناء على مضيف بعيد
  • $ make BUILD_CODE_COVERAGE=1 # بناء مع دعم جمع معلومات تغطية الكود

يمكن لنظام بناء XNU اختياريا إخراج مخرجات بناء ملونة. لتمكين ذلك، يمكنك إما تعيين متغير البيئة XNU_LOGCOLORS إلى y، أو يمكنك تمرير LOGCOLORS=y لأمر make.

تخصيص إصدار XNU

يتم اشتقاق إصدار xnu من SDK أو KDK عن طريق قراءة CFBundleVersion من ملف System/Library/Extensions/System.kext/Info.plist الخاص بهما. يمكن تخصيص ذلك عن طريق تعيين المتغير RC_DARWIN_KERNEL_VERSION في البيئة أو في سطر أمر make.

انظر doc/building/xnu_version.md لمزيد من التفاصيل.

تنسيقات معلومات التصحيح

بشكل افتراضي، يتم إنشاء مستودع معلومات تصحيح DWARF أثناء مرحلة التثبيت؛ وهو "حزمة" تحمل اسم kernel.development.<variant>.dSYM لتحديد تنسيق معلومات تصحيح STABS الأقدم (حيث تكون معلومات التصحيح مضمنة في صورة kernel.development.unstripped)، قم بتعيين متغير البيئة BUILD_STABS.```sh export BUILD_STABS=1 make

## بناء ذواكر النواة (KernelCaches)

لاختبار نواة xnu، تحتاج إلى بناء ذاكرة نواة (kernelcache) تربط الإضافات (kexts) والنواة معًا في صورة واحدة قابلة للإقلاع.
لبناء ذاكرة نواة، يمكنك استخدام الآليات التالية:

* استخدام التوليد التلقائي لذاكرة النواة مع `kextd`.
  يقوم البرنامج الخفي `kextd` بمراقبة التغييرات في دليل `/System/Library/Extensions`.
  لذا يمكنك إعداد نواة جديدة كالتالي:

    ```text
    cp BUILD/obj/DEVELOPMENT/X86_64/kernel.development /System/Library/Kernels/
    touch /System/Library/Extensions
    ps -e | grep kextd
    ```

* استدعاء `kextcache` يدويًا لبناء ذاكرة نواة جديدة.

    ```text
    kextcache -q -z -a x86_64 -l -n -c /var/tmp/kernelcache.test -K /var/tmp/kernel.test /System/Library/Extensions
    ```


## إقلاع ذاكرة نواة على جهاز مستهدف

يدعم كل من النواة التطويرية و iBoot تكوين وسائط الإقلاع (boot arguments) بحيث يمكننا الإقلاع بأمان إلى نواة اختبارية، وإذا حدث خطأ، نعود بأمان إلى ذاكرة النواة المستخدمة سابقًا.
فيما يلي خطوات تحقيق هذا الإعداد:

1. إنشاء ذاكرة نواة باستخدام أمر kextcache باسم `/kernelcache.test`
2. نسخ تكوينات الإقلاع الحالية إلى ملف بديل

    ```sh
    cp /Library/Preferences/SystemConfiguration/com.apple.Boot.plist /next_boot.plist
    ```

3. تحديث ذاكرة النواة ووسائط الإقلاع لإعدادك

    ```sh
    plutil -insert "Kernel Cache" -string "kernelcache.test" /next_boot.plist
    plutil -replace "Kernel Flags" -string "debug=0x144 -v kernelsuffix=test " /next_boot.plist
    ```

4. نسخ التكوين الجديد إلى `/Library/Preferences/SystemConfiguration/`

    ```sh
    cp /next_boot.plist /Library/Preferences/SystemConfiguration/boot.plist
    ```

5. بارك (bless) الحجم بالتكوينات الجديدة.

    ```text
    sudo -n bless  --mount / --setBoot --nextonly --options "config=boot"
    ```

   العلامة `--nextonly` تحدد استخدام تكوينات `boot.plist` فقط لمرة إقلاع واحدة.
   لذا إذا حدث ذعر في النواة، يمكنك بسهولة إعادة التشغيل والتعافي إلى النواة الأصلية.


## إنشاء علامات (tags) وقاعدة cscope

أعد بيئة البناء ومن الدليل العلوي، قم بتشغيل:

    make tags     # سيبني هذا ctags و etags على وحدة تخزين حساسة لحالة الأحرف، و ctags فقط على غير حساسة
    make TAGS     # سيبني هذا etags
    make cscope   # سيبني هذا قاعدة بيانات cscope

## تثبيت ملفات الرؤوس الجديدة من XNU

تقوم XNU بتثبيت ملفات الرؤوس في المواقع التالية -

    a. $(DSTROOT)/System/Library/Frameworks/Kernel.framework/Headers
    b. $(DSTROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders
    c. $(DSTROOT)/usr/include/
    d. $(DSTROOT)/usr/local/include/
    e. $(DSTROOT)/System/DriverKit/usr/include/
    f. $(DSTROOT)/System/Library/Frameworks/IOKit.framework/Headers
    g. $(DSTROOT)/System/Library/Frameworks/IOKit.framework/PrivateHeaders
    h. $(DSTROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
تنزيل الأداة