Skip to content

Glossary

libsystem_kernel.dylib

La fine bibliothèque utilisateur qui héberge tous les stubs de syscalls sur macOS — la couche entre votre code C et l'instruction SVC.

libsystem_kernel.dylib est la bibliothèque utilisateur la plus basse sur macOS. Chaque syscall de la plateforme passe par un stub dedans. Quand vous appelez open() en C, vous appelez _open dans cette bibliothèque, pas le noyau directement.

Un stub typique sur arm64 est minuscule :

_open:
    mov     x16, #5          ; SYS_open
    svc     #0x80
    b.cs    __cerror         ; si carry, gère errno
    ret

Il fait trois choses : place le numéro de syscall dans x16, émet l'instruction SVC, et transmet le résultat (en traduisant le carry en retour errno pour les syscalls BSD).

libsystem_kernel.dylib fait partie de libSystem.B.dylib, contre laquelle chaque binaire Mach-O est lié. En production elle vit dans le dyld shared cache à /System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/dyld_shared_cache_*, pas comme fichier séparé. Vous pouvez l'extraire pour analyse avec dyld-shared-cache-extractor ou avec l'outil dsc_extractor open-source du projet dyld d'Apple.

Pour l'instrumentation dynamique, le hooking façon DYLD_INSERT_LIBRARIES contre libsystem_kernel.dylib est la technique classique pour intercepter chaque syscall — mais SIP, le hardened runtime et le drapeau library-validation le bloquent sur la plupart des binaires modernes.