api Native

API-ul nativ (cu un capital N) - cea mai mare parte nedocumentat Application Programming Interface (API), este destinat uzului intern în familia Windows NT de sisteme de operare. emis de Microsoft [1]. Acesta este folosit în principal la boot, atunci când alte componente Windows sunt disponibile, precum și funcțiile de bibliotecă de sistem (de exemplu, kernel32.dll), care implementează funcționalitatea Windows API. Punctul de intrare al programelor care utilizează API-ul nativ, este DriverEntry funcția (), precum și în drivere de dispozitiv Windows. În același timp, spre deosebire de programele de driver-ul folosind API-ul nativ, sunt efectuate în inelul de protecție a treia. precum și aplicarea regulată pentru Windows. Cele mai multe apeluri API native puse în aplicare în Ntoskrnl.exe. și accesul la acestea este furnizat un Ntdll.dll programe user-mode. Unele apeluri API nativ sunt puse în aplicare în mod direct în modul de utilizare în Ntdll.dll.

În ciuda faptului că cea mai mare parte a sistemului de operare Windows NT utilizează un API pentru Windows bine definit și documentat. Unele componente, cum ar fi un subsistem al timpului de execuție client / server (csrss), folosind API-ul nativ, așa cum se execută în primele etape ale procesului de boot Windows NT. atunci când funcțiile Windows API nu este încă disponibil.

Unele software-ul rău intenționat folosește API-ul nativ, pentru a ascunde prezența lor la software-ul antivirus [2].

API-ul nativ include un număr destul de mare de funcții. Acesta include funcțiile biblioteca standard C. cum ar fi strlen (), sprintf () și podea (). În același timp, aceste apeluri frecvente biblioteca standard malloc (), printf (), scanf () lipsesc. Cele mai multe dintre alte caracteristici API nativ are un prefix de două sau trei litere. Este folosit, în special, următoarele prefixele:

  • Nt sau Zw - apelurile de sistem sunt declarate în Ntdll.dll și Ntoskrnl.exe. Când acestea sunt numite de Ntdll.dll mod utilizator, aceste grupuri de funcții se comportă în mod substanțial în același mod: ele provoacă o tranziție la nucleu modul și poate determina funcția echivalentă ntoskrnl.exe folosind tabelul de ramificare. Când funcțiile sunt numite în mod direct de la ntoskrnl.exe, care este posibilă doar în modul kernel, variantele de pornire la Zw, executarea de garanție în modul nucleu și exemple de realizare, cu nici o garanție prefikom Nt [3]. Prefixul Zw nu decripta [4]
  • Rtl - al doilea în numărul de apeluri de grup Ntdll. În ea a inclus caracteristici care fac performanță avansată a bibliotecii C runtime. Acest multe funcții de utilitate, care pot fi utilizate de aplicații API nativ, care nu sunt legate în mod direct pentru a avea acces la sistemul de bază.
  • Csr - functii client-server, este utilizat pentru a interacționa cu procesul subsistemului Win32, csrss.exe (csrss este un subsistem de execuție client / server).
  • DBG - Debugging funcții de sprijin, cum ar fi software-ul breakpoint.
  • Ki - funcții apelabile din modul nucleu utilizate, de exemplu, pentru programarea procedurii de apel asincron (APC)
  • LDR - funcții încărcător pentru a sprijini PE format de fișier executabil și începe noi procese.
  • Nls - pentru a sprijini o varietate de limbi naturale (similar cu paginile de cod).
  • Pfx - pentru tratamentul prefixe.

Gdi32.dll include mai multe caracteristici care fac trecerea la modul nucleu. Ei nu au fost furnizate inițial designeri sistemul de operare Windows NT și nu sunt disponibile în Windows NT 3.5. Cu toate acestea, din cauza lipsei de performanță de hardware NT 4 de presă a fost decis să se mute subsistemul grafic în modul de kernel. Ca urmare, apelurile de sistem sunt executate în Win32k.sys 0x1000-0x1FFF gama (spre deosebire de 0-0x0FFF apeluri din gama făcut Ntoskrnl.exe), și a declarat în gdi32.dll. Aceste caracteristici prezintă IDRG prefix.

Există mai multe grupuri de funcții exportate de Ntoskrnl.exe, care pot fi utilizate numai în modul kernel. Ele pot fi considerate ca făcând parte din API nativ, sau care nu sunt incluse în ea, în funcție de punctul de vedere al sursei (ca API nativ este complet documentat în mod oficial, nu există nici un răspuns definitiv). Astfel de grupări includ Cc (controler de cache), Ex (Windows Executive), FsRtl (apeluri sisteme de fișiere de execuție), Io (IO Manager), Ke (funcția nucleu de bază), Ks (fire de kernel), Lpc (apel local proceduri), Lsa (serverul verifică autentificarea de securitate locală), Mm (managementul memoriei), Ob (manager de obiect), Ps (managementul proceselor), Se (siguranță), Po (gestionarea energiei) și altele [5] [6] [ 7] [8] [9] [4].