Skip to content
Syscall BSD#59

svc · unix #59

execve

Remplace l'image du processus courant par un nouveau programme chargé depuis un fichier.

Prototype

int execve(char *fname, char **argp, char **envp);

Retour: int

Arguments

NameTypeDirDescription
fnamechar-
argpchar-
envpchar-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard59
xnu-1699.24.8macOS 10.7 Lion59
xnu-2050.18.24macOS 10.8 Mountain Lion59
xnu-2422.115.4macOS 10.9 Mavericks59
xnu-2782.40.9macOS 10.10 Yosemite59
xnu-3247.1.106macOS 10.11 El Capitan59
xnu-3789.1.32macOS 10.12 Sierra59
xnu-4570.1.46macOS 10.13 High Sierra59
xnu-4903.221.2macOS 10.14 Mojave59
xnu-6153.11.26macOS 10.15 Catalina59
xnu-7195.50.7.100.1macOS 11.0 Big Sur59
xnu-1486.2.1159
xnu-1504.15.359
xnu-1504.3.1259
xnu-1504.7.459
xnu-1504.9.1759
xnu-1504.9.2659
xnu-1504.9.3759
xnu-1699.22.7359
xnu-1699.22.8159
xnu-1699.24.2359
xnu-1699.26.859
xnu-1699.32.759
xnu-2050.22.1359
xnu-2050.24.1559
xnu-2050.48.1159
xnu-2050.7.959
xnu-2050.9.259
xnu-2422.1.7259
xnu-2422.100.1359
xnu-2422.110.1759
xnu-2422.90.2059
xnu-2782.1.9759
xnu-2782.10.7259
xnu-2782.20.4859
xnu-2782.30.559
xnu-3247.10.1159
xnu-3248.20.5559
xnu-3248.30.459
xnu-3248.40.18459
xnu-3248.50.2159
xnu-3248.60.1059
xnu-3789.21.459
xnu-3789.31.259
xnu-3789.41.359
xnu-3789.51.259
xnu-3789.60.2459
xnu-3789.70.1659
xnu-4570.20.6259
xnu-4570.31.359
xnu-4570.41.259
xnu-4570.51.159
xnu-4570.61.159
xnu-4570.71.259
xnu-4903.231.459
xnu-4903.241.159
xnu-4903.270.4759
xnu-6153.101.659
xnu-6153.121.159
xnu-6153.141.159
xnu-6153.41.359
xnu-6153.61.159
xnu-6153.81.559
xnu-7195.101.159
xnu-7195.121.359
xnu-7195.141.259
xnu-7195.60.7559
xnu-7195.81.359

Exemples

exec with argv/envp

char *argv[] = {"/usr/bin/sw_vers", "-productVersion", NULL};
char *envp[] = {"PATH=/usr/bin", NULL};
execve(argv[0], argv, envp);
perror("execve");
_exit(127);

Notes

XNU résout l'exécutable via la chaîne d'image activators (Mach-O, fat, scripts #!), applique les vérifications de signature AMFI, attache les entitlements et reconstruit la VM map de la task Mach. Les descripteurs sans FD_CLOEXEC survivent ; les handlers de signaux reviennent par défaut mais le masque est préservé. En cas d'échec le processus reste tel quel, mais un succès ne revient jamais.

Détection

Endpoint Security délivre ES_EVENT_TYPE_NOTIFY_EXEC (et sa variante AUTH) avec argv, envp et infos de signature complets. La probe DTrace proc:::exec-success se déclenche après acceptation par AMFI.

API associées

forkposix_spawnexitwait4issetugid