Drv

Cílem projektu Drv je ukázat různé možnosti instalace a zavádění ovladačů jádra do paměti. Jedná se o konzolovou aplikaci, která umožňuje pracovat s ovladači třemi odlišnými způsoby: pomocí správce služeb (Service Control Manager – SCM), pomocí nativních funkcí NtLoadDriver a NtUnloadDriver a prostřednictvím funkce NtSetSystemInformation.

Aplikace provádí určitou operaci na základě obsahu příkazové řádky. Syntaxe je následující:

drv <zpusob provedeni> install <nazev ovladace> <cele jmeno souboru>
drv <zpusob provedeni> uninstall <nazev ovladace>
drv <zpusob provedeni> load <nazev ovladace>
drv <zpusob provedeni> unload <nazev ovladace>

První řádek popisuje syntax pro operaci instalování ovladače. Tato operace je nutná, pokud aplikace má používat správce služeb nebo nativní funkce NtLoadDriver a NtUnloadDriver. Program zapíše zadané informace o ovladači (jméno a plné jméno jeho souboru) do registru na místo, kde se nachází informace o nainstalovaných službách. Operace odinstalace je probíhá obráceně – smaže zapsané informace z registru (ať již přímo, nebo přes rozhraní správce služeb).

Pokud druhý argument nabude hodnoty “load,” program se pokusí načíst ovladač určený jménem do paměti jádra. Operace “unload” slouží k dynamickému uvolnění ovladačů z paměti. Nelze ji provádět však provádět na všechny ovladače, jak se dočtete v knize, ovladač sám může rozhodnout, zda jej lze z paměti uvolnit za běhu systému, nebo pouze při restartu počítače.

První dvě jmenované metody podporují všechny čtyři operace. Pokud aplikaci příkazová řádka instruuje použít nativní funkci NtSetSystemInformation, podporována je pouze operace “load” a místo jména služby ovladače je nutné zadat plné jméno jeho souboru. Touto metodou tedy ovladač ani nelze z paměti jádra uvolnit.

Rutina NtSetSystemInformation se dala tímto způsobem zneužít na Windows 2000 a raných verzích Windows XP. Pak si vývojáři Microsoftu této možnosti zřejmě všimli a upravili sémantiku tak, aby rutina mohla soužit pouze svému původnímu účelu – načtení ovladače win32k.sys do paměti jádra během startu operačního systému.

Pokud tedy chcete tento, z těchto metod asi nejtajemnější, postup vyzkoušet, budete potřebovat přeložit projekt Drv pro běh na Windows 2000. Binárka dostupná v archivu bude pravděpodobně fungovat až od Windows XP SP2. Překlad pro Windows 2000 by měl být bezproblémový, ačkoliv tento systém v tabulce níže chybí.

Systém Verze kernelu
Windows XP 32bit *
Windows XP 64bit *
Windows Server 2003 R2 32bit *
Windows Server 2003 R2 64bit *
Windows Vista 32bit *
Windows Vista 64bit *
Windows 7 32bit *
Windows 7 64bit *

Stáhnout

Leave a Reply

Your email address will not be published. Required fields are marked *