Native API

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 11 november 2016; kontroller kräver 8 redigeringar .

Native API (med stort N) är ett mestadels odokumenterat applikationsprogrammeringsgränssnitt (API) avsett för internt bruk i Windows NT- familjen av operativsystem som släppts av Microsoft [1] . Det används huvudsakligen under systemstart när andra Windows-komponenter inte är tillgängliga, och av systembiblioteksfunktioner (som kernel32.dll ) som implementerar Windows API -funktionalitet . Ingångspunkten för program som använder Native API är DriverEntry()-funktionen, precis som Windows-enhetsdrivrutiner . Samtidigt, till skillnad från drivrutiner, körs program som använder Native API intredje skyddsringen , precis som vanliga Windows-program. De flesta av Native API-anropen är implementerade i ntoskrnl.exe och nås av ntdll.dll användarlägesprogram . Vissa Native API-anrop implementeras direkt i användarläge i ntdll.dll.

Medan de flesta av operativsystemet Windows NT använder det dokumenterade och väldefinierade Windows API , använder vissa komponenter, såsom Client/Server Runtime Subsystem (CSRSS), Native API eftersom de startas tidigt i Windows NTs startprocess . när Windows API-funktioner är inte tillgängliga ännu.

Vissa skadliga program använder Native API för att dölja sin närvaro från antivirusprogramvara [2] .

Funktionsgrupper

Native API innehåller ett ganska stort antal funktioner. Det inkluderar C-standardbiblioteksfunktionerna som strlen(), sprintf() och floor(). Samtidigt saknas sådana vanliga standardbiblioteksanrop som malloc(), printf(), scanf(). De flesta av de andra Native API-funktionerna har ett prefix på två eller tre bokstäver. I synnerhet används följande prefix:

Gdi32.dll innehåller några fler funktioner som gör övergången till kärnläge. De var ursprungligen inte avsedda av konstruktörerna av operativsystemet Windows NT och finns inte i Windows NT 3.5 . Men på grund av otillräcklig hårdvaruprestanda, när NT 4 släpptes, beslutades det att flytta grafikundersystemet till kärnläge. Som ett resultat av detta exekveras systemanrop i intervallet 0x1000-0x1FFF av win32k.sys (i motsats till anrop i intervallet 0-0x0FFF som utförs av ntoskrnl.exe) och deklareras i gdi32.dll. Dessa funktioner har prefixet Gdi .

Det finns några fler grupper av funktioner som exporteras av ntoskrnl.exe som endast kan användas i kärnläge. De kan eller kanske inte anses vara en del av Native API, beroende på källans synvinkel (eftersom Native API inte är fullständigt dokumenterad officiellt finns det inget definitivt svar). Dessa grupper inkluderar Cc (cache-kontroller), Ex ( Windows Executive ), FsRtl (runtime-anrop för filsystem), Io (I/O-hanterare), Ke (kärnfunktioner), Ks (kärntrådar), Lpc ( lokala anropsprocedurer ), Lsa ( lokal säkerhetsautentiseringsserver ), Mm (minneshantering), Ob ( objekthanterare ), Ps (processhantering), Se (säkerhet), Po (strömhantering) och andra [5] [6] [ 7] [8] [9] [4] .

Se även

Länkar

Anteckningar

  1. Mark Russinovich . Inuti Native API (inte tillgänglig länk) . Sysinternals (1998–2004). Datum för åtkomst: 28 februari 2008. Arkiverad från originalet den 18 december 2012. 
  2. Jason Coombs. Win32 API Obscurity för I/O-blockering och intrångsskydd (död länk) . Dr. Dobb's Journal (21 juni 2005). Hämtad 4 januari 2007. Arkiverad från originalet 18 december 2012. 
  3. The NT Insider, Vol 10, Issue 4, Juli-Augusti 2003. Skriv ut en artikel från OSR Online (länk ej tillgänglig) . OSR Online (2009). Hämtad 13 juni 2009. Arkiverad från originalet 18 december 2012. 
  4. 12 Raymond Chen . The Old New Thing: Vad betyder prefixet "Zw"? (inte tillgänglig länk) . Microsoft Corporation (2009). Hämtad 13 juni 2009. Arkiverad från originalet 18 december 2012.  
  5. Microsoft Corporation . I/O Manager-rutiner (nedlänk) . Microsoft Corporation (2009). Hämtad 13 juni 2009. Arkiverad från originalet 18 december 2012. 
  6. Microsoft Corporation . Rutiner för cachehanterare (inte tillgänglig länk) . Microsoft Corporation (2009). Hämtad 13 juni 2009. Arkiverad från originalet 18 december 2012. 
  7. Microsoft Corporation . Power Manager-rutiner (inte tillgänglig länk) . Microsoft Corporation (2009). Hämtad 13 juni 2009. Arkiverad från originalet 18 december 2012. 
  8. Microsoft Corporation . Core Kernel Library Support-rutiner (inte tillgänglig länk) . Microsoft Corporation (2009). Hämtad 13 juni 2009. Arkiverad från originalet 18 december 2012. 
  9. Microsoft Corporation . Filsystem Runtime Library Rutiner (inte tillgänglig länk) . Microsoft Corporation (2009). Hämtad 13 juni 2009. Arkiverad från originalet 18 december 2012.