четверг, 29 октября 2009 г.

просматриваем таблицу KiServiceTable

Итак, все объяснения добавлю позже. О том что такое SSDT и т.п. можете почитать на WASMе , а также почитать Статью

Команды LiveKD:

//display table:
dd KeServiceDescriptorTable

Индекс KiServiceTable=KeServiceTable[0], т.е. первый адрес в KeServiceTable.
И еще, в системе есть также и KeServiceDescriptorTableShadow - та самая копия, так вот, по идее, если все гуд .  то индекс KiSErviceTable=KeServiceDescriptorTableShadow[0] и он равен индексу который в KeServiceDescriptorTable, тобиж, из примера ниже, если все делать, оба индекса должны быть равны 80504460.

0: kd> dd KeServiceDescriptorTable
8055c700  80504460 00000000 0000011c 805048d4  - красным цветом - индекс KiServiceTable
8055c710  00000000 00000000 00000000 00000000
8055c720  00000000 00000000 00000000 00000000
8055c730  00000000 00000000 00000000 00000000
8055c740  00000002 00002710 bf80c339 00000000
8055c750  ba5a7a80 8ad5fcf0 8a391a90 806f60c0
8055c760  00000000 00000000 ffeced30 ffffffff
8055c770  7f4c8370 01ca5871 00000000 00000000

Далее,


0: kd> dd 80504460
80504460  805a4614 805f0aea 805f4320 805f0b1c
80504470  805f435a 805f0b52 805f439e 805f43e2
80504480  806153ce 80616110 805ebee8 b5e58d46
80504490  805d4b48 805d4af8 806159f4 805b5f80
805044a0  80615010 805a8a9e 805b0594 805d660c
805044b0  8050189c 80616102 80576ae6 80538be2
805044c0  8060e5de 805bc4fa 805f485a 80623382
805044d0  805f8d6a 805a4d02 806235d6 b5e58250

Этот вывод содержит указатели на системные сервисы, такие как NtCreateFile etc.

Чтобы просмотреть системный сервис с определенным индексом делаем так:
dd 80504460+(индекс)*4





0: kd> dd 80504460+1c*4     // - индекс ф-и
805044d0  805f8d6a 805a4d02 806235d6 b5e58250  // - указатель на ф-ю





чтобы просмотреть имя и название ф-и, достаточно сделать так:






0: kd> dt 805f8d6a 


NtCompareTokens      // конечное имя ф-и, которая имеет индекс 0х1С в таблице сервисов



Да, мои читатели, спросите вы меня.. неужели теперь надо делать так много шагов и действий ? Нет, чтобы просмотреть все таблицу KiServiceTable, достаточно просто указать команду:


dds KiServiceTable L117 


и эта команда вам выведет все 279 индексов (дада, 0x117h = 279 ), если хотите вывести больше - измените 117 на любое число )



Комментариев нет:

Отправить комментарий