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.