протокол работы с soft-ice, демонстрирующий получение адреса системного сервиса 97h
Как мы видим, в данном случае, функция NtQuerySystemInformation никем не перехвачена, что очень хорошо!
Чтобы просмотреть содержимое SST в soft-ice достаточно дать команду "NTCALL". На "стерильной" машине _все_ вызовы указывают внутрь NTOSKRNL.EXE, а если это не так, то их кто-то перехватил. Это может быть как зловредная малварь, так и вполне безобидный драйвер какого-нибудь защитного механизма или, например, брандмауэр.
Для восстановления SST можно использовать ее копию, хранящуюся внутри NTOSKRNL.EXE, правда, найти ее на диске значительно сложнее, чем в памяти. Проще всего использовать отладочные символы (которые можно бесплатно сгрузить с сервера http://msdl.microsoft.com/download/symbols с помощью библиотеки dbghelp.dll, входящей в состав бесплатного пакета Debugging Tools). Адресу SST соответствует метка _KiServiceTable
и в моей версии системы она располагается по адресу 4704D8h (в файле):
.data:004704D8 BF B3 4A 00 _KiServiceTable dd offset _NtAcceptConnectPort@24
.data:004704DC 6B E8 4A 00 dd offset _NtAccessCheck@32
.data:004704E0 F3 DE 4B 00 dd offset _NtAccessCheckAndAuditAlarm@44