Native API
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 11. november 2016; checks kræver
8 redigeringer .
Native API (med stort N) er en for det meste udokumenteret applikationsprogrammeringsgrænseflade (API) beregnet til intern brug på Windows NT -familien af operativsystemer udgivet af Microsoft [1] . Det bruges hovedsageligt under systemopstart, når andre Windows-komponenter ikke er tilgængelige, og af systembiblioteksfunktioner (som kernel32.dll ), der implementerer Windows API -funktionalitet . Indgangspunktet for programmer, der bruger Native API, er DriverEntry()-funktionen, ligesom Windows- enhedsdrivere . På samme tid, i modsætning til drivere, kører programmer, der bruger Native API, i den tredje beskyttelsesring , ligesom almindelige Windows-applikationer. De fleste af Native API-kaldene er implementeret i ntoskrnl.exe og tilgås af ntdll.dll -brugertilstandsprogrammer . Nogle Native API-kald implementeres direkte i brugertilstand i ntdll.dll.
Mens det meste af Windows NT-operativsystemet bruger den dokumenterede og veldefinerede Windows API , bruger nogle komponenter, såsom Client/Server Runtime Subsystem (CSRSS), Native API, fordi de startes tidligt i Windows NT-startprocessen . Windows API-funktionerne er endnu ikke tilgængelige.
Nogle malware bruger Native API til at skjule sin tilstedeværelse fra antivirussoftware [2] .
Funktionsgrupper
Native API indeholder et ret stort antal funktioner. Det inkluderer C standard biblioteksfunktioner såsom strlen(), sprintf() og floor(). Samtidig mangler sådanne almindelige standard bibliotekskald som malloc(), printf(), scanf(). De fleste af de andre Native API-funktioner har et præfiks på to eller tre bogstaver. Især anvendes følgende præfikser:
- Nt eller Zw er systemkald deklareret i ntdll.dll og ntoskrnl.exe. Når de kaldes fra ntdll.dll i brugertilstand, opfører disse grupper af funktioner sig på nogenlunde samme måde: de forårsager en overgang til kernetilstand, og de kalder den tilsvarende funktion fra ntoskrnl.exe ved hjælp af grentabellen . Når funktioner kaldes direkte fra ntoskrnl.exe, hvilket kun er muligt i kernetilstand, er varianter, der begynder med Zw, garanteret at køre i kernetilstand, mens varianter med præfiks med Nt ikke gør [3] . Zw-præfikset har ingen dekryptering [4]
- Rtl er den næststørste gruppe af ntdll-opkald. Det inkluderer funktioner, der udgør det udvidede C runtime-bibliotek. Disse er mange hjælpefunktioner, der kan bruges af Native API-applikationer, som ikke er direkte relateret til adgang til systemkernen.
- Csr er klient/server-funktioner, der bruger Win32-undersystemet, csrss.exe (CSRSS står for Runtime Client/Server Subsystem ) til at interagere med processen.
- Dbg - debugging hjælpefunktioner såsom software breakpoint.
- Ki - funktioner kaldet fra kernetilstand, bruges for eksempel til at sende et asynkront procedurekald (APC)
- Ldr - Loader-funktioner til at understøtte PE -format eksekverbare filer og starte nye processer.
- Nls - for at understøtte forskellige naturlige sprog (ligner kodesider).
- Pfx - til håndtering af præfikser.
- Tp - at arbejde med trådpuljen.
Gdi32.dll indeholder et par flere funktioner, der gør overgangen til kernetilstand. De var ikke oprindeligt tiltænkt af designerne af Windows NT-operativsystemet og findes ikke i Windows NT 3.5 . Men på grund af utilstrækkelig hardwareydeevne, da NT 4 blev frigivet, blev det besluttet at flytte det grafiske undersystem til kernetilstand. Som et resultat udføres systemkald i området 0x1000-0x1FFF af win32k.sys (i modsætning til opkald i området 0-0x0FFF udført af ntoskrnl.exe) og erklæres i gdi32.dll. Disse funktioner er præfikset med Gdi .
Der er et par flere grupper af funktioner eksporteret af ntoskrnl.exe, som kun kan bruges i kernetilstand. De kan eller kan ikke blive betragtet som en del af Native API, afhængigt af kildens synspunkt (da Native API ikke er fuldt dokumenteret officielt, er der ikke noget endeligt svar). Disse grupper inkluderer Cc (cache controller), Ex ( Windows Executive ), FsRtl (filsystem runtime calls), Io (I/O manager), Ke (kernekernefunktioner), Ks (kernetråde), Lpc ( lokale opkaldsprocedurer ), Lsa ( lokal sikkerhedsgodkendelsesserver ), Mm (hukommelsesstyring), Ob ( objekthåndtering ), Ps (processtyring), Se (sikkerhed), Po (strømstyring) og andre [5] [6] [ 7] [8] [9] [4] .
Se også
Links
Noter
- ↑ Mark Russinovich . Inde i Native API (utilgængeligt link) . Sysinternals (1998–2004). Dato for adgang: 28. februar 2008. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ Jason Coombs. Win32 API-obscurity til I/O-blokering og indtrængningsforebyggelse (dødt link) . Dr. Dobb's Journal (21. juni 2005). Hentet 4. januar 2007. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ The NT Insider, bind 10, udgave 4, juli-august 2003. Udskriv en artikel fra OSR Online (link ikke tilgængeligt) . OSR Online (2009). Hentet 13. juni 2009. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ 12 Raymond Chen . Den gamle nye ting: Hvad betyder "Zw"-præfikset? (utilgængeligt link) . Microsoft Corporation (2009). Hentet 13. juni 2009. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ Microsoft Corporation . I/O Manager-rutiner (downlink) . Microsoft Corporation (2009). Hentet 13. juni 2009. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ Microsoft Corporation . Cache Manager-rutiner (utilgængeligt link) . Microsoft Corporation (2009). Hentet 13. juni 2009. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ Microsoft Corporation . Power Manager-rutiner (utilgængeligt link) . Microsoft Corporation (2009). Hentet 13. juni 2009. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ Microsoft Corporation . Core Kernel Library Support Rutiner (utilgængeligt link) . Microsoft Corporation (2009). Hentet 13. juni 2009. Arkiveret fra originalen 18. december 2012. (ubestemt)
- ↑ Microsoft Corporation . Filsystem Runtime Library Rutiner (utilgængeligt link) . Microsoft Corporation (2009). Hentet 13. juni 2009. Arkiveret fra originalen 18. december 2012. (ubestemt)