API nativ - Native API

API - ul nativ este un ușor de interfață de programare a aplicațiilor (API) utilizat de Windows NT și modul de utilizator aplicații. Acest API este utilizat în primele etape ale procesului de pornire Windows NT , când alte componente și API-uri sunt încă indisponibile. Prin urmare, câteva componente Windows, cum ar fi Client / Server Runtime Subsystem (CSRSS), sunt implementate folosind API-ul nativ. API-ul nativ este, de asemenea, utilizat de subrutine, cum ar fi cele din kernel32.dll, care implementează API-ul Windows , API pe baza căruia sunt create majoritatea componentelor Windows.

Majoritatea apelurilor API native sunt implementate în ntoskrnl.exe și sunt expuse modului utilizator de ntdll.dll . Punctul de intrare al ntdll.dll este LdrInitializeThunk . Apelurile API native sunt tratate de kernel prin Tabelul descriptor de servicii de sistem (SSDT).

Grupuri de funcții

API-ul nativ cuprinde multe funcții. Acestea includ funcții de runtime C care sunt necesare pentru o execuție de bază a runtimei C , cum ar fi strlen (), sprintf (), memcpy () și floor (). Alte proceduri obișnuite, cum ar fi malloc (), printf (), scanf () lipsesc (prima pentru că nu specifică o grămadă pentru a aloca memorie și a doua și a treia deoarece utilizează consola, accesată doar prin KERNEL32.DLL). Marea majoritate a altor rutine API native, prin convenție, au un prefix de 2 sau 3 litere, care este:

  • Nt sau Zw sunt apeluri de sistem declarate în ntdll.dll și ntoskrnl.exe. Când sunt apelate de la ntdll.dll în modul utilizator, aceste grupuri sunt aproape la fel; intră în modul kernel și apelează funcția echivalentă în ntoskrnl.exe prin SSDT . Când apelați funcțiile direct în ntoskrnl.exe (posibil doar în modul kernel), variantele Zw asigură modul kernel, în timp ce variantele Nt nu. Prefixul Zw nu reprezintă nimic.
  • Rtl este al doilea cel mai mare grup de apeluri ntdll. Acestea cuprind (extins) C Run-Time Library, care include multe funcții de utilitate care pot fi utilizate de aplicațiile native, dar nu implică direct suportul kernel-ului.
  • Csr sunt funcții client-server care sunt utilizate pentru a comunica cu procesul subsistemului Win32, csrss.exe ( csrss înseamnă subsistemul de runtime client / server).
  • Dbg sunt funcții de depanare , cum ar fi un punct de întrerupere software .
  • Ki sunt accesări din modul kernel pentru evenimente precum dispecerizarea APC .
  • Ldr sunt funcții de încărcare pentru manipularea fișierelor PE și pornirea de noi procese.
  • Nls pentru Suport pentru Limba Națională (similar cu paginile de cod).
  • Pfx pentru manipularea prefixului.
  • Tp pentru manipularea filetului.

user32.dll și gdi32.dll includ alte câteva apeluri care intră în modul kernel. Acestea nu făceau parte din designul original Windows NT, așa cum se poate vedea în Windows NT 3.5 . Cu toate acestea, din cauza problemelor de performanță ale hardware-ului din acea epocă, s-a decis mutarea subsistemului grafic în modul kernel. Ca atare, apelurile de sistem în intervalul 0x1000-0x1FFF sunt satisfăcute de win32k.sys (în loc de ntoskrnl.exe așa cum se face pentru 0-0x0FFF) și sunt declarate în user32.dll și gdi32.dll. Aceste funcții au NtUser și NtGdi prefix ( de exemplu , NtUserLockWorkStation și NtGdiEnableEudc ).

Utilizări

Utilizarea funcțiilor API native include, dar nu se limitează la:

  • Activarea și dezactivarea privilegiilor (RtlAdjustPrivilege)
  • Crearea firului de la distanță în cadrul proceselor care rulează într-o sesiune diferită (RtlCreateUserThread)
  • Rularea aplicației native (RtlCreateUserProcess)
  • Efectuarea opririi forței (NtShutdownSystem)

Vezi si

Referințe

linkuri externe