Native API - Native API
Die native API ist eine kompakte Anwendungsprogrammierschnittstelle (API), die von Windows NT- und Benutzermodusanwendungen verwendet wird. Diese API wird in den frühen Phasen des Windows NT-Startprozesses verwendet , wenn andere Komponenten und APIs noch nicht verfügbar sind. Daher werden einige Windows-Komponenten wie das Client / Server-Laufzeitsubsystem (CSRSS) mithilfe der nativen API implementiert. Die native API wird auch von Unterroutinen wie denen in kernel32.dll verwendet , die die Windows-API implementieren , die API, auf deren Grundlage die meisten Windows-Komponenten erstellt werden.
Die meisten nativen API-Aufrufe sind in ntoskrnl.exe implementiert und werden von ntdll.dll dem Benutzermodus ausgesetzt . Der Einstiegspunkt von ntdll.dll ist LdrInitializeThunk . Native API-Aufrufe werden vom Kernel über die System Service Descriptor Table (SSDT) verarbeitet.
Funktionsgruppen
Die native API umfasst viele Funktionen. Dazu gehören C-Laufzeitfunktionen , die für eine sehr grundlegende C- Laufzeitausführung benötigt werden, z. B. strlen (), sprintf (), memcpy () und floor (). Andere gängige Prozeduren wie malloc (), printf (), scanf () fehlen (die erste, weil kein Heap zum Zuweisen von Speicher angegeben wird, und die zweite und dritte, weil sie die Konsole verwenden, auf die nur über KERNEL32.DLL zugegriffen wird). Die überwiegende Mehrheit der anderen nativen API-Routinen hat gemäß Konvention ein 2- oder 3-Buchstaben-Präfix:
- Nt oder Zw sind Systemaufrufe , die in ntdll.dll und ntoskrnl.exe deklariert sind. Wenn diese Gruppen im Benutzermodus von ntdll.dll aufgerufen werden, sind sie fast genau gleich. Sie werden in den Kernelmodus versetzt und rufen die entsprechende Funktion in ntoskrnl.exe über die SSDT auf . Beim direkten Aufruf der Funktionen in ntoskrnl.exe (nur im Kernel-Modus möglich) stellen die Zw-Varianten den Kernel-Modus sicher, die Nt-Varianten dagegen nicht. Das Zw-Präfix steht für nichts.
- RTL ist die zweitgrößte Gruppe von Ntdll-Aufrufen. Diese umfassen die (erweiterte) C-Laufzeitbibliothek, die viele Dienstprogrammfunktionen enthält, die von nativen Anwendungen verwendet werden können, jedoch keine direkte Kernelunterstützung beinhalten.
- Csr sind Client-Server-Funktionen, die zur Kommunikation mit dem Win32-Subsystemprozess csrss.exe verwendet werden ( csrss steht für Client / Server-Laufzeitsubsystem).
- Dbg sind Debugging- Funktionen wie ein Software- Haltepunkt .
- Ki sind Upcalls aus dem Kernel-Modus für Ereignisse wie APC- Dispatching.
- Ldr sind Ladefunktionen für die Behandlung von PE- Dateien und das Starten neuer Prozesse.
- Nls for National Language Support (ähnlich wie Codepages).
- Pfx für die Präfixbehandlung.
- Tp für die Threadpool-Behandlung.
user32.dll und gdi32.dll enthalten mehrere andere Aufrufe, die in den Kernelmodus übergehen. Diese waren nicht Teil des ursprünglichen Windows NT-Designs, wie in Windows NT 3.5 zu sehen ist . Aufgrund von Leistungsproblemen der Hardware dieses Alters wurde jedoch beschlossen, das Grafiksubsystem in den Kernelmodus zu versetzen. Daher werden Systemaufrufe im Bereich von 0x1000-0x1FFF von win32k.sys (anstelle von ntoskrnl.exe wie bei 0-0x0FFF) erfüllt und in user32.dll und gdi32.dll deklariert. Diese Funktionen haben das Präfix NtUser und NtGdi (z. B. NtUserLockWorkStation und NtGdiEnableEudc ).
Verwendet
Die Verwendung nativer API-Funktionen umfasst unter anderem:
- Aktivieren und Deaktivieren von Berechtigungen (RtlAdjustPrivilege)
- Erstellen eines Remote-Threads in Prozessen, die in einer anderen Sitzung ausgeführt werden (RtlCreateUserThread)
- Ausführen einer nativen Anwendung (RtlCreateUserProcess)
- Force Shutdown durchführen (NtShutdownSystem)
Siehe auch
Verweise
Externe Links
- Eine Website, die die meisten Native API-Funktionen dokumentiert
- In nativen Anwendungen
- Innerhalb der nativen API
- Open Source-Framework für die Entwicklung nativer Anwendungen
- Kompilieren von Free Pascal-Programmen für die native API
- Windows NT Native Tools - Ein kostenloses Dienstprogramm zur Entwicklung nativer Anwendungen
- Native Shell - Windows-Eingabeaufforderung, die vor dem Winlogon- und Win32-Subsystem gestartet werden kann