Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
xnu — Hybridkernel, der Mach, FreeBSD und IOKit für macOS und iOS kombiniert. Bietet Kern-OS-Dienste, Treiberframework und Durchsetzung von Sicherheitsrichtlinien auf x86_64 und ARM64. | Kitploit
Tools/GitHubGitHub/apple-oss-distributions/xnu
Embedded-System-SicherheitSpeicherforensikDebuggerHardware-SicherheitFirmware-Analyse
GitHubapple-oss-distributions/xnu

xnu

Hybridkernel, der Mach, FreeBSD und IOKit für macOS und iOS kombiniert. Bietet Kern-OS-Dienste, Treiberframework und Durchsetzung von Sicherheitsrichtlinien auf x86_64 und ARM64.

Repository anzeigen
3.5k39724vor 0 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Was ist XNU?

Der XNU-Kernel ist Teil des Darwin-Betriebssystems für die Verwendung in macOS- und iOS-Betriebssystemen. XNU ist ein Akronym für X is Not Unix. XNU ist ein Hybridkernel, der den an der Carnegie Mellon University entwickelten Mach-Kernel mit Komponenten von FreeBSD und einer C++-API zum Schreiben von Treibern namens IOKit kombiniert. XNU läuft auf x86_64 und ARM64 sowohl für Einzelprozessor- als auch für Mehrprozessorkonfigurationen.

Der XNU-Quellbaum

  • config - Konfigurationen für exportierte APIs für unterstützte Architekturen und Plattformen
  • SETUP - Grundlegende Werkzeuge zur Konfiguration des Kernels, Versionierung und Kextsymbol-Verwaltung.
  • EXTERNAL_HEADERS - Header aus anderen Projekten, um Abhängigkeitszyklen beim Bauen zu vermeiden. Diese Header sollten regelmäßig synchronisiert werden, wenn die Quelle aktualisiert wird.
  • libkern - C++-IOKit-Bibliothekscode für die Behandlung von Treibern und Kexts.
  • libsa - Kernel-Bootstrap-Code für den Start
  • libsyscall - Systemaufruf-Bibliotheksschnittstelle für Userspace-Programme
  • libkdd - Quelle für die Benutzerbibliothek zum Parsen von Kernel-Daten wie Kernel-Chunked-Daten.
  • makedefs - Top-Level-Regeln und Definitionen für den Kernel-Build.
  • osfmk - Mach-Kernel-basierte Subsysteme
  • pexpert - Plattformspezifischer Code wie Interrupt-Handling, Atomare Operationen usw.
  • security - Mandatory Access Check Policy-Schnittstellen und zugehörige Implementierung.
  • bsd - BSD-Subsysteme-Code
  • tools - Eine Reihe von Dienstprogrammen zum Testen, Debuggen und Profilen des Kernels.

Wie man XNU baut

Bauen eines DEVELOPMENT-Kernels

Das XNU-Make-System kann Kernel basierend auf den Variablen KERNEL_CONFIGS und ARCH_CONFIGS als Argumente bauen. Hier ist die Syntax:```text make SDKROOT= ARCH_CONFIGS= KERNEL_CONFIGS=

Wo:

* `<sdkroot>`: Pfad zum macOS SDK auf der Festplatte. (Standardwert ist `/`)
* `<variant>`: kann `debug`, `development`, `release`, `profile` sein und konfiguriert Compiler-Flags und Asserts im gesamten Kernel-Code.
* `<arch>`: kann eine gültige Architektur sein, für die gebaut wird. (Z.B. `X86_64`)

Um einen Kernel für die gleiche Architektur wie das laufende Betriebssystem zu bauen, tippen Sie einfach:```text
make SDKROOT=macosx.internal

Zusätzlich gibt es Unterstützung für die Konfiguration von Architekturen über ARCH_CONFIGS und Kernel-Konfigurationen mit 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"

> Hinweis: Standardmäßig ist die Architektur auf die Architektur des Build-Rechners eingestellt, und die Standard-Kernel-Konfiguration ist so eingestellt, dass sie für `DEVELOPMENT` erstellt wird.

Dadurch wird auch ein bootfähiges Image, kernel.[config] und ein Kernel-Binärprogramm mit Symbolen, kernel.[config].unstripped, erstellt.

Um den Kernel in ein DSTROOT zu installieren, verwenden Sie das Ziel `install_kernels`:```text
make install_kernels DSTROOT=/tmp/xnu-dst

Für eine zufriedenstellendere Kernel-Debugging-Erfahrung mit Zugriff auf alle lokalen Variablen und Argumente, aber ohne all die zusätzlichen Überprüfungen des DEBUG-Kernels, fügen Sie etwas wie das Folgende zu Ihrem make-Befehl hinzu:```text CFLAGS_DEVELOPMENTARM64="-O0 -g -DKERNEL_STACK_MULTIPLIER=2" CXXFLAGS_DEVELOPMENTARM64="-O0 -g -DKERNEL_STACK_MULTIPLIER=2"

Denken Sie daran, `DEVELOPMENT` und `ARM64` durch den entsprechenden Build und die entsprechende Plattform zu ersetzen.

> Zusätzliche Flags: Sie können dem C-Compiler über die Befehlszeile zusätzliche Flags mit der Build-Einstellung `EXTRA_CFLAGS` übergeben. Diese Flags werden an die Basis-`CFLAGS` angehängt, und der Standardwert für die Einstellung ist eine leere Zeichenfolge.
>
> Diese Einstellung ermöglicht es Ihnen, z.B. selektiv Debug-Code zu aktivieren, der durch ein Preprocessor-Makro geschützt ist. Beispielverwendung...
>
> ```text
> make SDKROOT=macosx.internal PRODUCT_CONFIGS=j314s 
> EXTRA_CFLAGS='-DKERNEL_STACK_MULTIPLIER=2'
> ```


* So bauen Sie mit RELEASE-Kernelkonfiguration

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

### FAT-Kernel-Binärdatei erstellen

Definieren Sie Architekturen in Ihrer Umgebung oder beim Ausführen eines make-Befehls.```text
make ARCH_CONFIGS="X86_64" exporthdrs all

Andere Makefile-Optionen

  • $ make MAKEJOBS=-j8 # dies verwendet 8 Prozesse während des Builds. Die Voreinstellung ist 2x die Anzahl der aktiven CPUs.
  • $ make -j8 # die Standard-Kommandozeilenoption wird ebenfalls akzeptiert
  • $ make -w # rekursive make-Aufrufe verfolgen. Nützlich in Kombination mit VERBOSE=YES
  • $ make BUILD_LTO=0 # ohne LLVM Link Time Optimization erstellen
  • $ make BOUND_CHECKS=0 # -fbound-attributes für diesen Build deaktivieren
  • $ make REMOTEBUILD=user@remotehost # Build auf entferntem Host durchführen
  • $ make BUILD_CODE_COVERAGE=1 # Build mit Unterstützung zum Sammeln von Codeabdeckungsinformationen erstellen

Das XNU-Buildsystem kann optional farblich formatierte Build-Ausgaben ausgeben. Um dies zu aktivieren, können Sie entweder die Umgebungsvariable XNU_LOGCOLORS auf y setzen oder LOGCOLORS=y an den make-Befehl übergeben.

Die XNU-Version anpassen

Die xnu-Version wird vom SDK oder KDK abgeleitet, indem die CFBundleVersion aus deren System/Library/Extensions/System.kext/Info.plist-Datei gelesen wird. Dies kann durch Setzen der Variable RC_DARWIN_KERNEL_VERSION in der Umgebung oder in der make-Befehlszeile angepasst werden.

Weitere Einzelheiten finden Sie in doc/building/xnu_version.md.

Debug-Informationsformate

Standardmäßig wird während der Installationsphase ein DWARF-Debug-Informations-Repository erstellt; dies ist ein "Bundle" namens kernel.development.<variant>.dSYM Um das ältere STABS-Debug-Informationsformat auszuwählen (bei dem Debug-Informationen in das Abbild kernel.development.unstripped eingebettet sind), setzen Sie die Umgebungsvariable BUILD_STABS.```sh export BUILD_STABS=1 make

## Erstellen von KernelCaches

Um den xnu-Kernel zu testen, müssen Sie einen Kernelcache erstellen, der die Kexts und den Kernel zu einem einzigen bootfähigen Image zusammenbindet.
Um einen Kernelcache zu erstellen, können Sie die folgenden Mechanismen nutzen:

* Verwendung der automatischen Kernelcache-Generierung mit `kextd`.
  Der Daemon kextd überwacht ständig Änderungen im Verzeichnis `/System/Library/Extensions`.
  So können Sie einen neuen Kernel einrichten:

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

* Manuelles Aufrufen von `kextcache` zum Erstellen eines neuen Kernelcaches.

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


## Booten eines KernelCaches auf einem Zielrechner

Der Entwicklungskernel und iBoot unterstützen die Konfiguration von Boot-Argumenten, sodass wir sicher in einen Testkernel booten können und bei Problemen sicher auf den zuvor verwendeten Kernelcache zurückfallen können.
Die folgenden Schritte führen zu einer solchen Einrichtung:

1. Erstellen Sie den Kernelcache mit dem Befehl kextcache als `/kernelcache.test`
2. Kopieren Sie vorhandene Boot-Konfigurationen in eine alternative Datei

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

3. Aktualisieren Sie den Kernelcache und die Boot-Argumente für Ihre Einrichtung

    ```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. Kopieren Sie die neue Konfiguration nach `/Library/Preferences/SystemConfiguration/`
Tool herunterladen