API native - Native API
L' API native est une interface de programmation d'application (API) légère utilisée par Windows NT et les applications en mode utilisateur. Cette API est utilisée dans les premières étapes du processus de démarrage de Windows NT , lorsque d'autres composants et API ne sont toujours pas disponibles. Par conséquent, quelques composants Windows, tels que le sous-système d'exécution client / serveur (CSRSS), sont implémentés à l'aide de l'API native. L'API native est également utilisée par des sous-programmes tels que ceux de kernel32.dll qui implémentent l' API Windows , l'API sur la base de laquelle la plupart des composants Windows sont créés.
La plupart des appels d'API natifs sont implémentés dans ntoskrnl.exe et sont exposés au mode utilisateur par ntdll.dll . Le point d'entrée de ntdll.dll est LdrInitializeThunk . Les appels d'API natifs sont gérés par le noyau via le System Service Descriptor Table (SSDT).
Groupes de fonctions
L'API native comprend de nombreuses fonctions. Ils incluent les fonctions d'exécution C nécessaires pour une exécution d'exécution C très basique , telles que strlen (), sprintf (), memcpy () et floor (). D'autres procédures courantes comme malloc (), printf (), scanf () sont manquantes (la première parce qu'elle ne spécifie pas de tas de mémoire à partir de laquelle allouer de la mémoire et les deuxième et troisième parce qu'elles utilisent la console, accessible uniquement via KERNEL32.DLL). La grande majorité des autres routines d'API natives, par convention, ont un préfixe de 2 ou 3 lettres, qui est:
- Nt ou Zw sont des appels système déclarés dans ntdll.dll et ntoskrnl.exe. Lorsqu'ils sont appelés à partir de ntdll.dll en mode utilisateur, ces groupes sont presque exactement les mêmes; ils piègent en mode noyau et appellent la fonction équivalente dans ntoskrnl.exe via le SSDT . Lors de l'appel des fonctions directement dans ntoskrnl.exe (uniquement possible en mode noyau), les variantes Zw assurent le mode noyau, contrairement aux variantes Nt. Le préfixe Zw ne représente rien.
- Rtl est le deuxième plus grand groupe d'appels ntdll. Celles-ci comprennent la bibliothèque d'exécution C (étendue), qui comprend de nombreuses fonctions utilitaires pouvant être utilisées par des applications natives, sans toutefois impliquer directement la prise en charge du noyau.
- Csr sont des fonctions client-serveur utilisées pour communiquer avec le processus du sous-système Win32, csrss.exe ( csrss signifie sous-système d'exécution client / serveur).
- Les DBG sont des fonctions de débogage telles qu'un point d'arrêt logiciel .
- Les Ki sont des appels ascendants depuis le mode noyau pour des événements tels que la distribution APC .
- Ldr sont des fonctions de chargement pour la gestion des fichiers PE et le démarrage de nouveaux processus.
- Nls for National Language Support (similaire aux pages de codes).
- Pfx pour la gestion des préfixes.
- Tp pour la gestion de threadpool.
user32.dll et gdi32.dll incluent plusieurs autres appels qui interceptent en mode noyau. Ceux-ci ne faisaient pas partie de la conception d'origine de Windows NT, comme on peut le voir dans Windows NT 3.5 . Cependant, en raison de problèmes de performances du matériel de cet âge, il a été décidé de déplacer le sous-système graphique en mode noyau. En tant que tel, les appels système dans la plage de 0x1000-0x1FFF sont satisfaits par win32k.sys (au lieu de ntoskrnl.exe comme pour 0-0x0FFF) et sont déclarés dans user32.dll et gdi32.dll. Ces fonctions ont le préfixe NtUser et NtGdi (par exemple NtUserLockWorkStation et NtGdiEnableEudc ).
Les usages
Les utilisations des fonctions d'API natives incluent, mais sans s'y limiter:
- Activation et désactivation des privilèges (RtlAdjustPrivilege)
- Création d'un thread distant dans des processus qui s'exécutent dans une session différente (RtlCreateUserThread)
- Exécution d'une application native (RtlCreateUserProcess)
- Exécution d'un arrêt forcé (NtShutdownSystem)
Voir également
Références
Liens externes
- Un site Web qui documente la plupart des fonctions de l'API native
- À l'intérieur des applications natives
- À l'intérieur de l'API native
- Framework de développement d'applications natives open source
- Compilation de programmes Free Pascal pour l'API native
- Windows NT Native Tools - Un utilitaire gratuit de développement d'applications natives
- Shell natif - Invite de commandes Windows qui peut démarrer avant le sous-système Winlogon et Win32