Programátorské a výzkumné nástroje

Do této sekce budu umisťovat různé zajímavé prográmky, které vám mohou pomoci převážně při programování nebo výzkumu vnitřností operačního systému a jiných aplikací.

DeviceTree
DeviceTree je zajímavá utilitka, která zobrazuje ovladače načtené v jádře operačního systému a jejich zařízení. Zařízení je ve Windows chápáno jako speciální objekt, který slouží pro komunikaci mezi jednotlivými ovladači či mezi ovladačem a normálním programem. Zařízení může reprezentovat skutečný hardware.
Komunikace přes objekt zařízení funguje tak, že jedna strana na něj pošle svůj požadavek a ovladač, kterému zařízení patří, jej obslouží a pošle zpět výsledek. Zařízení přitom mohou být sdružena do řetězů, po kterých se zprávy mohou přenášet. Například pokud aplikace pošle požadavek na přečtení sektoru z diskového oddílu, ovladač vlastnící zařízení reprezetující diskový oddíl tento požadavek mírně upraví a pošle jej na zařízení, které reprezentuje celý pevný disk, na kterém se daný oddíl nachází. Ovladač pevného disku může požadavek opět lehce poupravit a poslat jej ještě níže. Výsledek požadavku jde pak po řetězu opačnou cestou - vzhůru, až dojde k programu, který požadavek vysílal.
DeviceTree nejen sbírá informaceo jednotlivých ovladačích a zařízeních, ale zobrazuje i jednotlivé řetězy. Tak se například můžete dozvědět, přes jaké ovladače se přenáší informace o stisknutých klávesách či pohybech myši (přitom každý ovladač, který má v daném řetězu své zařízení, může tyto informace měnit či někam zaznamenávat). DeviceTree tedy může přispět nejen k hlubšímu poznání fungování jádra Windows, ale i k odhalení rootkitů či keyloggerů.

SymbolTypeViewer
Jak každý ví, Windows nejsou opensource operační systém, tudíž při zjišťování, jak to funguje uvnitř, skoro jistě potřebujeme disassembler. Disassembler nám krásně zobrazí kód ovladačů a knihoven, najde všechny podprogramy i lokální a globální proměnné. Bohužel nám však neřekne jejich jména, což značně ztěžuje pochopení sémantiky. Microsoft však poskytuje tzv. Symboly - to jsou informace o jménech některých podrpogramů a proměnncýh. Dnešní disassmeblery umožňují k binárnímu souboru načíst i informace o symbolech a tím zjistit jména některých funkcí a proměnných.
SymbolTypeViewer je malý prográmek, který umožňuje prohlížet soubory obsahující informace o symbolech. Díky němu můžete najít deklarace různých nedokumetnovaných funkcí či přesně zjistit adresu globálních proměnncýh pro určitou verzi jádra. Tyto znalosti jsou užitečné buď při psaní olvadačů (ať již těch zlých či těch dobrých) či při zjišťování příčin selhání systému (modrých obrazovek).

A closed mouth says nothing wrong; a closed mind does nothing right.