Google Pagerank S-Rank JyxoRank |
SSDTInfoaneb co vše se skrývá v tabulkách systémových volání Pod pojmem SSDT (System Service Descriptor/Dispatch Table) si většina z lidí znalých jádra Windows představí datové struktury, které zajišťují správné fungování mechanismu systémových volání. Jejich modifikací lze monitorovat a ovlivňovat nejen chování aplikací. Protože mě obsah těchto tabulek odjakživa zajímal a různé bezpečnostní aplikace jej nezobrazovaly příliš podrobně, rozhodl jsem se napsat utilitu SSDTInfo, která najde a zobrazí všechny dostupné informace. SSDTInfo dokáže zobrazit obecné informace o tabulkách systémových volání, mezi které patří obsah jejich podtabulek a vlastnosti jednotlivých systémových služeb z toho plynoucí. Pomocí menu Tabulka lze určit, jakou z obou struktur má program prozkoumat. Pomocí položky Tabulka | Zkontrolovat se spustí kontrola konzistence. Program zobrazí všechny informace z oblasti tabulek systémových volání, které mu připadají podezřelé. Zde je nutné uvést, že aktuální verze aplikace nedokáže zjistit pravé adresy KeServiceDescriptorTable a KeServiceDescriptorTable, ale zobrazí ty informace, které bude systém s největší pravděpodobností používat, když nějaké obyčejné vlákno provede systémové volání. Doplňkové služby spočívají v možnosti uložit nasbírané informace do textových souborů (položka Soubor | Uložit) a nastavit jazyk. Zatím je podporována čeština a angličtina, ale podporu dalšího jazyka lze snadno doplnit, stačí se držet následujícího návodu:
Podporované systémySSDTInfo podporuje 32bitové verze operačních systémů Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows 7 a Windows Server 2008. Na 64bitových Windows se tabulky systémových volání liší polem adres systémových služeb, které místo adres systémových služeb obsahuje jejich offsety vzhledem k jeho začátku. Dolní čtyři bity offsetu navíc mohou být využity k uchování informace o počtu parametrů, protože začátky rutin jsou zarovnány na 16 bajtů. Díky této optimalizaci není třeba při každém systémovém volání sahat do tabulky argumentů (ArgumentTable), což vede k určitému zrychlení. Větším problémem je nalezení adres tabulek systémových volání, protože na této platformě ani jedna z nich není exportována a struktury ETHREAD postrádají položku ServiceTable. Ačkoliv způsob, jak potřebné informace získat, znám, zatím jsem nenašel čas na jeho implementaci. DownloadBinárky aplikace si můžete stáhnout níže. Součástí je i ovladač ssdtinfo.sys, z čehož vyplývá, že program pro svůj běh vyžaduje administrátorská práva. Na Windows podporujících Kontrolu uživatelských účtů (User Account Control) by si o něm měl sám pomocí známého dialogu požádat. Zatím si můžete stáhnout pouze binárky, ale uvolnění zdrojových kódů je též plánováno. |
2 + 2 = 5, for extremely large values of 2. |