Skip to content
Syscall BSD#5Introduit dans macOS 10.0 Cheetah

svc · unix #5

open

Ouvre ou crée un fichier au chemin donné et retourne un descripteur de fichier le référençant.

Prototype

int open(const char *path, int oflag, ...);

Retour: int — file descriptor on success, -1 with errno set on failure

Arguments

NameTypeDirDescription
pathconst char *inChemin du système de fichiers relatif au répertoire courant (ou absolu).
oflagintinMasque de bits O_RDONLY/O_WRONLY/O_RDWR plus drapeaux optionnels (O_CREAT, O_EXCL, O_TRUNC, O_NONBLOCK, O_CLOEXEC, …).
modemode_tinBits de mode du fichier (consultés uniquement si O_CREAT est positionné).

Historique des versions

Absent de toute version XNU publiée.

Stub utilisateur

arm64

; libsystem_kernel.dylib: _open
mov     x16, #5         ; SYS_open
svc     #0x80
b.cs    __cerror
ret

x86_64

; libsystem_kernel.dylib: _open
mov     eax, 0x2000005  ; SYSCALL_CLASS_UNIX | 5
syscall
jb      __cerror
ret

Exemples

C — read-only open

int fd = open("/etc/hosts", O_RDONLY | O_CLOEXEC);
if (fd < 0) { perror("open"); return 1; }

Swift — create with mode

let fd = Darwin.open("/tmp/out.bin", O_WRONLY | O_CREAT | O_TRUNC, 0o644)
guard fd >= 0 else { perror("open"); exit(1) }

arm64 direct syscall

adrp    x0, Lpath@PAGE
add     x0, x0, Lpath@PAGEOFF
mov     w1, #0          ; O_RDONLY
mov     x16, #5         ; SYS_open
svc     #0x80

Notes

open(2) entre dans le noyau via le chemin des syscalls BSD. Le noyau résout le chemin via le VFS, alloue une paire fileproc + fileglob, et retourne le plus petit fd inutilisé du processus appelant. macOS ajoute O_CLOEXEC, O_SYMLINK, O_EVTONLY et O_NOFOLLOW_ANY au jeu POSIX standard.

Détection

Les clients Endpoint Security peuvent s'abonner à ES_EVENT_TYPE_NOTIFY_OPEN ou AUTH_OPEN. L'API kauth expose le même événement au scope KAUTH_SCOPE_FILEOP / KAUTH_FILEOP_OPEN. Les deux donnent le chemin du vnode résolu et les drapeaux demandés.

Utilisation par les malwares

Les chargeurs appellent souvent open() directement pour contourner les API Foundation qui peuvent être instrumentées. XCSSET et Silver Sparrow ouvrent puis mappent leur charge utile manuellement pour éviter le cache dyld.

API associées

openatopen_nocancelclosereadfcntlguarded_open_np

MITRE ATT&CK

Dernière vérification: 2026-05-25