ntoskrnl.exe - ntoskrnl.exe

Při výpočtu ntoskrnl.exe (zkratka spustitelného jádra operačního systému Windows NT ), také známý jako obraz jádra , poskytuje jádro a výkonné vrstvy prostoru jádra Microsoft Windows NT a je zodpovědný za různé systémové služby, jako je abstrakce hardwaru , proces a správa paměti , čímž se stává základní součástí systému. Obsahuje správce mezipaměti , výkonný, jádro, monitor referenčních hodnot zabezpečení, správce paměti a plánovač (Dispatcher).

Přehled

Tento systémový binární soubor není nativní aplikací (v tom, že není propojen s ntdll.dll), místo toho obsahuje standardní „počáteční“ vstupní bod ve své vlastní funkci, která volá funkci inicializace jádra nezávislou na architektuře . Zatímco ntoskrnl.exe není spojena proti ntdll.dll, to je spojeno proti bootvid.dll, hal.dlla kdcom.dll. Protože vyžaduje statickou kopii objektů C Runtime, na kterých závisí, má spustitelný soubor obvykle velikost přibližně 2 MB.

Celkově existují čtyři soubory obrázků jádra pro každou revizi systému Windows a dva soubory obrázků jádra pro každý systém Windows. Soubory více procesorů nebo uniprocesorů jsou vybrány v době instalace a soubory PAE nebo jiné než PAE jsou vybrány pomocí boot.ini nebo BCD podle funkcí procesoru .

Názvy souborů obrázků jádra
Název souboru Podporuje
SMP
Podporuje
PAE
ntoskrnl.exe Ne Ne
ntkrnlmp.exe Ano Ne
ntkrnlpa.exe Ne Ano
ntkrpamp.exe Ano Ano

Rutiny v ntoskrnl používají předpony svých jmen k označení, ve které složce ntoskrnl jsou definovány. Následující tabulka uvádí některé z nich.

Předpony funkcí NT
Předpona Význam
Kopie Mezipaměť systému souborů
Cm Configuration Manager, strana režimu jádra registru Windows
Csr funkce používané ke komunikaci s procesem subsystému Win32, csrss.exe (csrss znamená runtime subsystém klient/server)
Dbg funkce podpory ladění, například bod přerušení softwaru
Windows executive, „vnější vrstva“ Ntoskrnl.exe
Exp Windows executive private: Rutiny v rámci výkonné vrstvy, které nejsou exportovány pro volání mimo výkonné pracovníky (p = soukromé)
FsRtl runtime knihovna souborového systému
Io I/O manažer
Ke rutiny jádra jádra
Ki rutiny v jádře, které nejsou exportovány pro volání mimo jádro (i = interní)
Ks streamování jádra
Ldr funkce zavaděče pro zpracování souborů PE
LPC Místní volání procedur , interní, nezdokumentovaný, meziprocesový nebo mechanismus předávání zpráv uživatele/jádra
Lsa Místní bezpečnostní úřad
Mi rutiny správy paměti nejsou exportovány pro volání mimo správce paměti (i = interní)
Mm správa paměti
Nls Nls pro podporu nativního jazyka (podobné kódovým stránkám).
Ob Správce objektů
Pfx Pfx pro zpracování předpon.
Po Plug-and-play a správa napájení
Ps Správa procesů a vláken
Rtl Run-Time Library. To zahrnuje mnoho pomocných funkcí, které mohou používat nativní aplikace, ale přímo nezahrnují podporu jádra
Rtlp Interní rutiny knihovny Run-Time Library, které nejsou exportovány, tvoří jádro.
Se bezpečnostní
VF Ověření ovladače
Vi Rutiny ověřovače ovladačů nebyly exportovány pro volání mimo ověřovač ovladačů
Zw Nt nebo Zw jsou systémová volání deklarovaná v ntdll.dll a ntoskrnl.exe. Při volání z ntdll.dll v uživatelském režimu jsou tyto skupiny téměř úplně stejné; zachycují se do režimu jádra a vyvolávají ekvivalentní funkci v ntoskrnl.exe prostřednictvím SSDT. Při volání funkcí přímo v ntoskrnl.exe (možné pouze v režimu jádra) varianty Zw zajišťují režim jádra, zatímco varianty Nt nikoli.

Inicializace

Když jádro získá kontrolu, získá jako parametr ukazatel na strukturu. Tuto strukturu předává zavaděč a obsahuje informace o hardwaru, cestě k souboru registru, parametrech jádra obsahujících předvolby spouštění nebo možnosti, které mění chování jádra, cestu k souborům načteným zavaděčem ( SYSTEM podregistr , nls pro převod kódování znaků a písmo vga). Definici této struktury lze načíst pomocí ladicího programu jádra nebo stažením z databáze symbolů Microsoft.

V architektuře x86 dostává jádro systém již v chráněném režimu s připravenými GDT , IDT a TSS . Ale protože nezná adresu každého z nich, musí je načíst jeden po druhém, aby vyplnil strukturu PCR .

Hlavní vstupní bod ntoskrnl.exe provede určitou inicializaci závislou na systému, poté zavolá inicializaci nezávislou na systému a poté vstoupí do nečinné smyčky.

Přerušení manipulace

Moderní operační systémy používají k čekání na informace ze zařízení místo pollingu I/O portů přerušení.

V architektuře x86 jsou přerušení řešena pomocí IDT (Interrupt Dispatch Table). Když se zařízení spouští přerušení a na přerušení příznak (IF) v registru vlajek je nastaven procesoru hardware vyhledá obsluhy přerušení v záznamu tabulky odpovídá přerušení číslo, na které je zase byl přeložený z IRQ podle PIC čipy, nebo v modernějších hardwarech, APIC . Obslužné rutiny přerušení obvykle před zpracováním uloží určitou podmnožinu stavu registrů a po dokončení je obnoví zpět na původní hodnoty.

Tabulka přerušení obsahuje obslužné rutiny pro přerušení hardwaru, přerušení softwaru a výjimky. U některých verzí jádra IA-32 je jedním příkladem takového obslužného programu přerušení softwaru (kterých je mnoho) v jeho tabulce IDT 2E 16 ( hexadecimální ; 46 v desítkové soustavě ), používané v jazyce sestavení jako INT 2EHpro systémová volání . Ve skutečné implementaci vstup ukazuje na interní podprogram pojmenovaný (podle informací o symbolu publikovaných společností Microsoft) KiSystemService. U novějších verzí se místo toho používají různé mechanismy využívající SYSENTER instrukce a instrukce x86-64 SYSCALL .

Jednou z pozoruhodných vlastností zpracování přerušení NT je, že přerušení jsou obvykle podmíněně maskována na základě jejich priority (tzv. „IRQL“), místo aby byly všechny IRQ deaktivovány pomocí příznaku přerušení. To umožňuje různým komponentám jádra provádět kritické operace bez nutného blokování služeb periferií a dalších zařízení.

Správce paměti

Microsoft Windows rozděluje virtuální adresní prostor na dvě oblasti. Spodní část, začínající na nule, je pro každý proces vytvořena samostatně a je přístupná z režimu uživatele i jádra. Aplikační programy běží v procesech a dodávají kód, který běží v uživatelském režimu. Horní část je přístupná pouze z režimu jádra a až na některé výjimky je vytvořena pouze jednou, v celém systému. Ntoskrnl.exe je mapován do této oblasti, stejně jako několik dalších součástí režimu jádra. Tato oblast také obsahuje data používaná kódem režimu jádra, například haldy režimu jádra a mezipaměť systému souborů.

Začátek a konec segmentů podle přístupového oprávnění
Oblouk MmHighestUserAddress MmSystemRangeStart
x86 0x7fffffff 0x80000000
PAŽE 0x7fffffff 0x80000000
x86-64 0x000007ff'ffffffff 0xffff8000'00000000

Celý rozsah adres fyzické paměti (RAM) je rozdělen do mnoha malých (obvykle 4 kB) bloků. Několik vlastností každého bloku je uloženo ve strukturách nazývaných položky tabulky stránek , které jsou spravovány operačním systémem a jsou přístupné hardwarem procesoru. Tabulky stránek jsou uspořádány do stromové struktury a fyzické číslo stránky tabulky nejvyšší úrovně je uloženo v řídicím registru 3 (CR3).

Registr

Windows Registry je úložiště informací o konfiguraci a nastavení pro operační systém a další software, například aplikace. Lze jej považovat za souborový systém optimalizovaný pro malé soubory. Není však přístupný prostřednictvím sémantiky podobné souborovým systémům, ale spíše prostřednictvím specializované sady rozhraní API implementované v režimu jádra a vystavené uživatelskému režimu.

Registr je uložen na disku jako několik různých souborů nazývaných „úly“. Jeden, systémový podregistr, je načten na začátku spouštěcí sekvence a poskytuje informace o konfiguraci, které jsou v té době nutné. Další podregistry registru poskytující data specifická pro software a pro uživatele jsou načtena během pozdějších fází inicializace systému a během přihlášení uživatele.

Řidiči

Seznam ovladačů, které mají být načteny z disku, se načítají z Servicesklíče aktuálního ovládacího klíče v SYSTEMpodregistru. Tento klíč ukládá ovladače zařízení, procesy jádra a uživatelské procesy. Všem se souhrnně říká „služby“ a všechny jsou uloženy smíšeně na stejném místě.

Během inicializace nebo na žádost o načtení ovladače jádro prochází stromem a hledá služby označené jako služby jádra.

Viz také

Poznámky

Reference

Další čtení

  • Tanenbaum, Andrew S. (2008). Moderní operační systémy (3. vyd.). Upper Saddle River, New Jersey: Pearson Prentice Hall . p. 829. ISBN 978-0136006633.
  • Bruce Dang; Alexandre Gazet; Elias Bachaalany (2014). Praktické reverzní inženýrství: x86, x64, ARM, jádro Windows, reverzní nástroje a zmatek . Wiley . p. 384. ISBN 978-1118787311.

externí odkazy