ОС: WinXP SP2, которой нет и недели EnumDeviceDrivers говорит, что у меня есть 3 драйвера, файлы которых мне не удается найти на жестком диске, даже с помощью командной строки загрузочной дискеты Win98. Самый странный из них это драйвер, загруженный (?) по адресу 0xf994c000. Для него функции GetDeviceDriverBaseName и GetDeviceDriverFileName возвращают 9 пробелов. Два других - это: [0xf7f2e000] dump_atapi.sys \SystemRoot\System32\Drivers\dump_atapi.sys [0xf9f49000] dump_WMILIB.SYS \SystemRoot\System32\Drivers\dump_WMILIB.SYS Я встретил упоминания о них в каком-то немецком каталоге вредоносных программ. Как их обнаружить, если они есть на самом деле, и может ли такое быть, что таких драйверов у меня никогда и не было?
http://www.windowsbbs.com/showthread.php?t=38315 http://www.greatis.com/appdata/n/d/dump_atapi.sys.htm http://www.greatis.com/appdata/n/d/dump_wmilib.sys.htm
Мне эти ссылки показались более правдоподобными: http://www.spionfrei.de/items/-/19/D/6/ http://www.spionfrei.de/items/-/18/D/6/ Ведь первое место в гугле еще не значит, что информация точная? И как быть с драйвером " "? Раньше нормально ставившийся софтайс отказался загружаться - уж не его ли это происки?
Ведь первое место в гугле еще не значит, что информация точная? Не значит, но и не значит, что неточная. А тебя не смущает, что в приведенном дампе твой неизвестный имеет имя f994c000 f994ef00 amsint amsint.sys Fri Aug 17 13:52:01 2001 (3B7D83F1) Как говорит Алекс Экслер, Вы уже поимели вирус в лице Windows!
Что касается немецких источников, то когда я вижу сообщение Click on here if you want to use Spyware Browser to look for infections in your PC. То я начинаю думать всякие нехорошие вещи про навязчивую рекламу... А так, конечно, вопрос требует дополнительных усилий.
Не пробовал замапить dll и вызывать GetDeviceDriverBaseName из замапленой dll, а не из подгруженой в процесс (чтобы избавиться от вероятного хука и подмены/затирания данных) Или посмотреть в PsLoadedModulesList?
Если это руткит, то наверно, он все же патчит таблицу системных вызовов, а не просто хукает функции, но я проверил - возвращает то же самое и первые байты функций совпадают (или скрыты от просмотра). Про PsLoadedModulesList можно подробнее? Гугл дает 2 ссылки, одна на испанском, а другая малоинформативна.
PsLoadedModuleList - связанный список модулей ядра (ntoskrnl, ntdll и все драйвера). Из юзера не пробовал, в драйвере список получается так: Код (Text): //==================================================================== NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath ){ .... g_PsLoadedModuleList = GetPsLoadedModuleListAddr (DriverObject); .... } //==================================================================== PMODULE_ENTRY GetPsLoadedModuleListAddr (IN PDRIVER_OBJECT DriverObject){ PMODULE_ENTRY firstEntry, currentEntry; PMODULE_ENTRY result=0; __try{ if (NULL == (currentEntry = *((PMODULE_ENTRY*)((DWORD)DriverObject + 0x14))) )return 0; firstEntry = currentEntry; do { if(!MmIsAddressValid(currentEntry)) break; if (!MmIsAddressValid((PVOID)currentEntry->entryPoint) || !MmIsAddressValid(currentEntry->drvPath.Buffer) || !MmIsAddressValid(currentEntry->drvName.Buffer)) break; currentEntry = (MODULE_ENTRY*)currentEntry->link.Flink; }while (currentEntry != firstEntry); result = currentEntry; } __except (EXCEPTION_EXECUTE_HANDLER) { DbgPrint ("EXCEPTION EXECUTE HANDLER"); } return result; } //==================================================================== NTSTATUS GetPsLoadedModuleList (){ PMODULE_ENTRY firstEntry, currentEntry; NTSTATUS Status = STATUS_UNSUCCESSFUL; __try{ if ( !g_PsLoadedModuleList )return Status; firstEntry = currentEntry = g_PsLoadedModuleList; currentEntry = (MODULE_ENTRY*)currentEntry->link.Flink; while (currentEntry != firstEntry){ if(!MmIsAddressValid(currentEntry)) break; DbgPrint("%.8X %.8X %.8X %S\n", currentEntry, currentEntry->link.Flink, currentEntry->link.Blink, currentEntry->drvPath.Buffer); currentEntry = (MODULE_ENTRY*)currentEntry->link.Flink; } Status = STATUS_SUCCESS; } __except (EXCEPTION_EXECUTE_HANDLER) { DbgPrint ("EXCEPTION"); } return Status; } Проверить патч таблицы системных сервисов можно чем-нибудь типа утилиты rootkit revealer. Или в аттаче моя программка (as is Запустишь, на листе правой мышью зови меню и пункт Check SDT Table Можешь попробовать также пункт Show Services. Остальные пункты пустые. 91051261__pKiller.exe
хм...., cresta, твоя прога упала с такой подписью ошибки: AppName: 91051261__pkiller.exe AppVer: 0.0.0.0 ModName: unknown ModVer: 0.0.0.0 Offset: 0000bf08 трабля в проге, или это мои руткиты не разрешают? %)
Я ж предупредил: as is - как есть (читай экспериментальный вариант), только на ХР. Eё пробовали SaintGerman, Ms-Rem, ещё несколько человек - всё запускалось и работало. Так что смотри свою систему