Skip to content
Syscall BSD#202

svc · unix #202

__sysctl

Point d'entrée brut de l'arbre sysctl BSD : lit ou écrit une variable d'état du noyau identifiée par un chemin d'OID entiers.

Prototype

int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen);

Retour: int

Arguments

NameTypeDirDescription
nameint-
namelenu_int-
oldvoid-
oldlenpsize_t-
newvoid-
newlensize_t-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard202
xnu-1699.24.8macOS 10.7 Lion202
xnu-2050.18.24macOS 10.8 Mountain Lion202
xnu-2422.115.4macOS 10.9 Mavericks202
xnu-1486.2.11202
xnu-1504.15.3202
xnu-1504.3.12202
xnu-1504.7.4202
xnu-1504.9.17202
xnu-1504.9.26202
xnu-1504.9.37202
xnu-1699.22.73202
xnu-1699.22.81202
xnu-1699.24.23202
xnu-1699.26.8202
xnu-1699.32.7202
xnu-2050.22.13202
xnu-2050.24.15202
xnu-2050.48.11202
xnu-2050.7.9202
xnu-2050.9.2202
xnu-2422.1.72202
xnu-2422.100.13202
xnu-2422.110.17202
xnu-2422.90.20202

Exemples

C — read kern.osrelease

int mib[2] = { CTL_KERN, KERN_OSRELEASE };
char buf[64];
size_t len = sizeof(buf);
sysctl(mib, 2, buf, &len, NULL, 0);

Notes

Sert de support aux wrappers libc sysctl(3), sysctlbyname(3) et sysctlnametomib(3). La commande sysctl(8), les requêtes hw.* / kern.* et la plupart des collectes d'informations système faites par ps, top, vm_stat ou ioreg convergent vers ce seul appel. Certaines MIB (notamment kern.proc) appliquent un filtrage par entitlement sur les binaires hardened.

Détection

Endpoint Security ne remonte pas __sysctl directement, mais l'événement NOTIFY_PROC_CHECK couvre les sysctls d'énumération de processus. La sonde DTrace syscall::__sysctl:entry décode le tableau d'OID et constitue la voie standard pour auditer les lectures de kern.proc.

API associées

sysctlsysctlbynamesysctlnametomibproc_infokdebug_trace