Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
xnu — Noyau hybride combinant Mach, FreeBSD et IOKit pour macOS et iOS. Fournit les services de base du système d'exploitation, un framework de pilotes et l'application des politiques de sécurité sur x86_64 et ARM64. | Kitploit
Outils/GitHubGitHub/apple-oss-distributions/xnu
Sécurité des Systèmes EmbarquésCriminalistique MémoireDébogueursSécurité MatérielleAnalyse de Micrologiciel
GitHubapple-oss-distributions/xnu

xnu

Noyau hybride combinant Mach, FreeBSD et IOKit pour macOS et iOS. Fournit les services de base du système d'exploitation, un framework de pilotes et l'application des politiques de sécurité sur x86_64 et ARM64.

Voir le dépôt
3.5k39724il y a 0 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Qu'est-ce que XNU?

Le noyau XNU fait partie du système d'exploitation Darwin utilisé dans les systèmes d'exploitation macOS et iOS. XNU est un acronyme pour X is Not Unix. XNU est un noyau hybride combinant le noyau Mach développé à l'Université Carnegie Mellon avec des composants de FreeBSD et une API C++ pour l'écriture de pilotes appelée IOKit. XNU fonctionne sur x86_64 et ARM64 pour les configurations à un seul processeur et multi-processeur.

L'arborescence source de XNU

  • config - configurations pour les API exportées pour l'architecture et la plateforme supportées
  • SETUP - Ensemble de base d'outils utilisés pour configurer le noyau, la gestion des versions et des symboles kext.
  • EXTERNAL_HEADERS - En-têtes provenant d'autres projets pour éviter les cycles de dépendances lors de la construction. Ces en-têtes doivent être régulièrement synchronisés lorsque la source est mise à jour.
  • libkern - Code de la bibliothèque C++ IOKit pour la gestion des pilotes et des kexts.
  • libsa - Code d'amorçage du noyau pour le démarrage
  • libsyscall - Interface de la bibliothèque d'appels système pour les programmes de l'espace utilisateur
  • libkdd - Source de la bibliothèque utilisateur pour l'analyse des données du noyau comme les données fragmentées du noyau.
  • makedefs - Règles et définitions de haut niveau pour la construction du noyau.
  • osfmk - Sous-systèmes basés sur le noyau Mach
  • pexpert - Code spécifique à la plateforme comme la gestion des interruptions, les atomiques, etc.
  • security - Interfaces de politique de contrôle d'accès obligatoire et implémentation associée.
  • bsd - Code des sous-systèmes BSD
  • tools - Un ensemble d'utilitaires pour tester, déboguer et profiler le noyau.

Comment construire XNU

Construction d'un noyau DEVELOPMENT

Le système de construction xnu peut construire un noyau en se basant sur les variables KERNEL_CONFIGS et ARCH_CONFIGS comme arguments. Voici la syntaxe :```text make SDKROOT= ARCH_CONFIGS= KERNEL_CONFIGS=

Où :

* `<sdkroot>` : chemin vers le SDK macOS sur le disque. (par défaut `/`)
* `<variant>` : peut être `debug`, `development`, `release`, `profile` et configure les indicateurs de compilation et les assertions dans tout le code du noyau.
* `<arch>` : peut être une architecture valide pour laquelle construire. (Par ex. `X86_64`)

Pour construire un noyau pour la même architecture que le système d'exploitation en cours, tapez simplement```text
make SDKROOT=macosx.internal

De plus, il est possible de configurer les architectures via ARCH_CONFIGS et les configurations du noyau avec 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"

> Remarque : Par défaut, l'architecture est définie sur celle de la machine de compilation, et la configuration par défaut du noyau est définie pour compiler pour `DEVELOPMENT`.

Cela créera également une image amorçable, kernel.[config], et un binaire du noyau avec les symboles, kernel.[config].unstripped.

Pour installer le noyau dans un DSTROOT, utilisez la cible `install_kernels` :```text
make install_kernels DSTROOT=/tmp/xnu-dst

Pour une expérience de débogage du noyau plus satisfaisante, avec accès à toutes les variables locales et arguments, mais sans toutes les vérifications supplémentaires du noyau DEBUG, ajoutez quelque chose comme ce qui suit à votre commande make :```text CFLAGS_DEVELOPMENTARM64="-O0 -g -DKERNEL_STACK_MULTIPLIER=2" CXXFLAGS_DEVELOPMENTARM64="-O0 -g -DKERNEL_STACK_MULTIPLIER=2"

N'oubliez pas de remplacer `DEVELOPMENT` et `ARM64` par la version et la plateforme appropriées.

> Drapeaux supplémentaires : Vous pouvez passer des drapeaux supplémentaires au compilateur C en ligne de commande avec le paramètre de construction `EXTRA_CFLAGS`. Ces drapeaux sont ajoutés aux `CFLAGS` de base, et la valeur par défaut du paramètre est une chaîne vide.
>
> Ce paramètre vous permet par exemple d'activer sélectivement du code de débogage protégé par une macro de préprocesseur. Exemple d'utilisation...
>
> ```text
> make SDKROOT=macosx.internal PRODUCT_CONFIGS=j314s 
> EXTRA_CFLAGS='-DKERNEL_STACK_MULTIPLIER=2'
> ```


* Pour construire avec la configuration du noyau RELEASE

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

### Construction du binaire du noyau FAT

Définissez les architectures dans votre environnement ou lors de l'exécution d'une commande make.```text
make ARCH_CONFIGS="X86_64" exporthdrs all

Autres options du Makefile

  • $ make MAKEJOBS=-j8 # ceci utilisera 8 processus pendant la build. La valeur par défaut est 2x le nombre de CPU actifs.
  • $ make -j8 # l'option standard de ligne de commande est également acceptée
  • $ make -w # tracer les invocations make récursives. Utile en combinaison avec VERBOSE=YES
  • $ make BUILD_LTO=0 # build sans optimisation de temps de liaison LLVM (LTO)
  • $ make BOUND_CHECKS=0 # désactiver -fbound-attributes pour cette build
  • $ make REMOTEBUILD=user@remotehost # effectuer la build sur un hôte distant
  • $ make BUILD_CODE_COVERAGE=1 # build avec support pour collecter des informations de couverture de code

Le système de build XNU peut éventuellement afficher une sortie de build formatée en couleur. Pour activer cela, vous pouvez soit définir la variable d'environnement XNU_LOGCOLORS à y, soit passer LOGCOLORS=y à la commande make.

Personnaliser la version XNU

La version xnu est dérivée du SDK ou KDK en lisant le CFBundleVersion de leur fichier System/Library/Extensions/System.kext/Info.plist. Cela peut être personnalisé en définissant la variable RC_DARWIN_KERNEL_VERSION dans l'environnement ou sur la ligne de commande make.

Voir doc/building/xnu_version.md pour plus de détails.

Formats d'information de débogage

Par défaut, un référentiel d'informations de débogage DWARF est créé lors de la phase d'installation ; il s'agit d'un « bundle » nommé kernel.development.<variant>.dSYM Pour sélectionner l'ancien format d'information de débogage STABS (où les informations de débogage sont intégrées dans l'image kernel.development.unstripped), définissez la variable d'environnement BUILD_STABS.```sh export BUILD_STABS=1 make

## Construction des KernelCaches

Pour tester le noyau xnu, vous devez construire un kernelcache qui lie les kexts et le noyau ensemble en une seule image amorçable.
Pour construire un kernelcache, vous pouvez utiliser les mécanismes suivants :

* Utilisation de la génération automatique de kernelcache avec `kextd`.
  Le daemon kextd surveille les changements dans le répertoire `/System/Library/Extensions`.
  Vous pouvez ainsi configurer un nouveau noyau comme suit :

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

* Invocation manuelle de `kextcache` pour construire un nouveau kernelcache.

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

## Amorçage d'un KernelCache sur une machine cible

Le noyau de développement et iBoot prennent en charge la configuration des arguments de démarrage afin de pouvoir démarrer en toute sécurité sur le noyau de test et, en cas de problème, revenir en toute sécurité au kernelcache précédemment utilisé.
Voici les étapes pour obtenir une telle configuration :

1. Créez le cache du noyau à l'aide de la commande kextcache sous `/kernelcache.test`
2. Copiez les configurations de démarrage existantes dans un fichier alternatif

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

3. Mettez à jour le kernelcache et les boot-args pour votre configuration
Télécharger l’outil