Исходные данные: Драйвер устанавливающий SDT хуки на функции работы с файлами во время инициализации Windows Результат: Постоянное падение системы, переполнение стека некоторого потока процесса csrss.exe. Не могу понять почему так происходит, ведь функции-подмены прекрасно работают при установке хуков после загрузки Windows? Код (Text): UNEXPECTED_KERNEL_MODE_TRAP_M (1000007f) BUGCHECK_STR: 0x7f_8 CUSTOMER_CRASH_COUNT: 1 DEFAULT_BUCKET_ID: DRIVER_FAULT PROCESS_NAME: csrss.exe IRP_ADDRESS: d6f9dfc0 LAST_CONTROL_TRANSFER: from 805065f5 to 80506681 1: kd> !thread GetPointerFromAddress: unable to read from 80568eb4 THREAD 851c2868 Cid 03f8.03fc Teb: 7ffdd000 Win32Thread: e2adb228 RUNNING on processor 1 IRP List: Unable to read nt!_IRP @ 870f2c90 Not impersonating GetUlongFromAddress: unable to read from 8055f544 Owning Process 851c2020 Image: csrss.exe ffdf0000: Unable to get shared data Wait Start TickCount 2528 Context Switch Count 48 LargeStack ReadMemory error: Cannot get nt!KeMaximumIncrement value. UserTime 00:00:00.000 KernelTime 00:00:00.000 Start Address 0x4a6811a3 Stack Init f793c000 Current f7939aa4 Base f793c000 Limit f7939000 Call 0 Priority 13 BasePriority 13 PriorityDecrement 0 DecrementCount 0 ChildEBP RetAddr Args to Child f7939000 805065f5 86fd8000 000017e8 8721836c nt!MmCheckCachedPageState+0x9f (FPO: [Non-Fpo]) f7939034 804ecf9c 872182c0 0241e000 00000000 nt!CcPfTraceTimerRoutine+0x4a (FPO: [Non-Fpo]) f7939074 804f32de d6f9e000 00000000 f79391a0 nt!IopCompleteRequest+0x5c (FPO: [Non-Fpo]) f79390bc 804f3003 87218168 f79390fc 00001000 nt!MmCreateSection+0x22e (FPO: [Non-Fpo]) f7939150 8057395e 872182c0 f7939190 00001000 nt!MiCheckPurgeAndUpMapCount+0xd8 (FPO: [Non-Fpo]) f79391c4 f747baf3 872182c0 f7939204 00001000 nt!MiMapViewOfDataSection+0x2b4 (FPO: [Non-Fpo]) f7939244 f747bc51 e1b45688 e1018868 00000068 Ntfs!LfsGetLbcb+0x5b (FPO: [Non-Fpo]) f7939258 f747b8d2 e1b45688 00000060 e1018868 Ntfs!LfsPrepareLfcbForLogRecord+0x4a (FPO: [Non-Fpo]) f7939288 f747b606 e1b45688 e1018868 00000003 Ntfs!LfsWriteLogRecordIntoLogPage+0x5c (FPO: [Non-Fpo]) f7939364 f747b12f e1018868 00000003 f7939424 Ntfs!LfsWrite+0x2f7 (FPO: [Non-Fpo]) f79394e8 f74850b6 f7939ee4 872b74e8 86daa4f8 Ntfs!NtfsWriteLog+0x6a2 (FPO: [Non-Fpo]) f79395d0 f748a7a7 f7939ee4 e2acdd90 e2acddb0 Ntfs!NtfsWriteFileSizes+0x29f (FPO: [Non-Fpo]) f79397ac f74b64e9 f7939ee4 e2acdd90 f793983c Ntfs!NtfsAddAttributeAllocation+0x2b8 (FPO: [Non-Fpo]) f79398a8 f748b742 f7939ee4 e2acdd90 000000a4 Ntfs!NtfsDeleteAllocationInternal+0x59c (FPO: [Non-Fpo]) f793991c f746a47a f7939ee4 86daa5b0 ffffffff Ntfs!NtfsDeleteAllocation+0x302 (FPO: [Non-Fpo]) f7939af0 f745acf6 f7939ee4 86c2bc90 e2acdd90 Ntfs!NtfsPrepareBuffers+0x1047 (FPO: [Non-Fpo]) f7939cd8 f745bae9 f7939ee4 86c2bc90 e2acdd90 Ntfs!NtfsNonCachedIo+0x20e (FPO: [Non-Fpo]) f7939ed4 f745bc97 f7939ee4 86c2bc90 0110070a Ntfs!NtfsCommonWrite+0x1949 (FPO: [Non-Fpo]) f793a048 804e19ee 872bb770 86c2bc90 8721ee20 Ntfs!NtfsFsdWrite+0xf3 (FPO: [Non-Fpo]) f793a048 0001bd3c 872bb770 86c2bc90 8721ee20 nt!KiTrap0D+0x1c3 (FPO: [0,0] TrapFrame @ f793a068) WARNING: Frame IP not in any known module. Following frames may be wrong. 00010000 00000000 00000000 00000000 00000000 0x1bd3c 1: kd> r eax=f7939024 ebx=8721836c ecx=872182c0 edx=8729e00f esi=8729e008 edi=00000000 eip=80506681 esp=f7939000 ebp=f7939000 iopl=3 nv up ei pl nz na po nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00013202 nt!MmCheckCachedPageState+0x9f: 80506681 51 push ecx
Хукать SSDT функции для работы с файлами - 100 процентный изврат. Проще и быстрее написать фильтр файловой системы, надежность в разы лучше, да и возможностей больше.
Clerk NtOpenFile, NtCreateFile etc Да вроде ничего особенного в коде, система нативная уже к тому времени работает Самое интересное не могу полный дамп сделать и на виртуалке не падает Надо 2-й комп покупать