Native API - Native API

Native API on kevyt Application Programming Interface (API) käyttämä Windows NT ja käyttäjän tila sovelluksia. Tätä sovellusliittymää käytetään Windows NT -käynnistysprosessin alkuvaiheessa , kun muut komponentit ja sovellusliittymät eivät ole vielä käytettävissä. Siksi muutama Windows-komponentti, kuten Client / Server Runtime Subsystem (CSRSS), toteutetaan Native API: lla. Native API: ta käyttävät myös alirutiinit , kuten kernel32.dll-tiedostossa olevat, jotka toteuttavat Windows-sovellusliittymän , joka on sovellusliittymä, johon suurin osa Windows-komponenteista luodaan.

Suurin osa alkuperäisistä API-kutsuista toteutetaan ntoskrnl.exe-tiedostossa, ja ntdll.dll altistaa ne käyttäjän tilalle . Tulokohdan on Ntdll.dll on LdrInitializeThunk . Natiivi API-kutsuja hoitaa ydin System Service Descriptor Table (SSDT) -palvelun kautta .

Toimintoryhmät

Native API sisältää monia toimintoja. Ne sisältävät C-ajonaikaisia ​​toimintoja , joita tarvitaan hyvin yksinkertaiseen C- ajonaikaisen suorituksen suorittamiseen, kuten strlen (), sprintf (), memcpy () ja floor (). Muut yleiset menettelytavat, kuten malloc (), printf (), scanf (), puuttuvat (ensimmäinen, koska se ei määritä kasaa muistin jakamiseksi ja toinen ja kolmas, koska ne käyttävät konsolia, johon pääsee vain KERNEL32.DLL: n kautta). Suurimmalla osalla muista Native API -rutiineista on sopimuksen mukaan 2- tai 3-kirjaiminen etuliite, joka on:

  • Nt tai Zw ovat järjestelmäkutsuja, jotka on ilmoitettu tiedostoissa ntdll.dll ja ntoskrnl.exe. Nämä ryhmät ovat melkein samat, kun niitä kutsutaan ntdll.dll-tiedostosta käyttäjätilassa. ne tarttuvat ydintilaan ja kutsuvat vastaavan ntoskrnl.exe-toiminnon SSDT: n kautta . Kun funktioita kutsutaan suoraan ntoskrnl.exe-tiedostossa (mahdollista vain ydintilassa), Zw-muunnokset varmistavat ydintilan, kun taas Nt-muunnokset eivät. Zw-etuliite ei tarkoita mitään.
  • Rtl on toiseksi suurin ryhmä ntdll-puheluita. Nämä käsittävät (laajennetun) C Run-Time Library -kirjaston, joka sisältää monia apuohjelmatoimintoja, joita natiivisovellukset voivat käyttää, mutta eivät kuitenkaan suoraan sisällä ytimen tukea.
  • Csr ovat asiakas-palvelin-toimintoja, joita käytetään kommunikointiin Win32 osajärjestelmän prosessi, Csrss.exe ( CSRSS tarkoittaa client / server-suorituksen osajärjestelmän).
  • Dbg ovat virheenkorjaustoimintoja , kuten ohjelmiston katkaisupiste .
  • Ki ovat ydintilan kutsuja tapahtumille, kuten APC- lähetys.
  • Ldr ovat lataustoimintoja PE- tiedostojen käsittelyyn ja uusien prosessien aloittamiseen.
  • Maanmittauslaitoksen varten kieltä tukeva (samanlainen koodisivuilla).
  • Pfx etuliitteiden käsittelyä varten.
  • TP langankäsittelyyn.

user32.dll ja gdi32.dll sisältävät useita muita puheluja, jotka jäävät ydintilaan. Nämä eivät olleet osa alkuperäistä Windows NT -mallia, kuten voidaan nähdä Windows NT 3.5: sta . Tuon ikäisten laitteistojen suorituskykyongelmien vuoksi päätettiin siirtää grafiikan alijärjestelmä ydintilaan. Sinänsä Win32k.sys tyydyttää järjestelmäkutsun alueella 0x1000-0x1FFF ( ntoskrnl.exe: n sijasta, kuten tehdään 0-0x0FFF: lle), ja ilmoitetaan tiedostoissa user32.dll ja gdi32.dll. Näillä toiminnoilla on NtUser- ja NtGdi- etuliite (esim. NtUserLockWorkStation ja NtGdiEnableEudc ).

Käyttää

Natiivien API-toimintojen käyttö sisältää muun muassa seuraavat:

  • Oikeuksien ottaminen käyttöön ja poistaminen käytöstä (RtlAdjustPrivilege)
  • Etälangan luominen eri istunnossa käynnissä olevissa prosesseissa (RtlCreateUserThread)
  • Natiivisovelluksen suorittaminen (RtlCreateUserProcess)
  • Suorituskykysammutus (NtShutdownSystem)

Katso myös

Viitteet

Ulkoiset linkit