Доброго времени суток, уважаемое сообщество васма!!! Собственно сабж. есть драйвер, который перехватывает в системе некоторые другие драйвера,(включая драйвера сетевых интерфейсов) заменой их MajorFunction. Есть сервис bestClient.exe который управляет драйвером. Все работает вроде хорошо, но при долгой работе без перезагрузки начинается что то непонятное ( Вообщем случилось самое худшее, при перезагрузки сервиса (а следовательно и драйвера) вылетел BSOD Код ошибки 000000be (ATTEMPTED_WRITE_TO_READONLY_MEMORY). Виновником на экране был ndis.sys. Сам ndis.sys я не хучу, но так или иначе видимо повлиял Опыта анализа крэшдампа к сожалению большого нет, поэтому и прошу помочь научится анализировать крэшдамп. В стеке вызовов драйверов процедуры из моего драйвера я не нашел, и не понимаю как смог мой драйвер вызвать BSOD. Повторно вызвать эту ошибку не могу, а вот определить причину глюка очень нужно Код (Text): 0: kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* ATTEMPTED_WRITE_TO_READONLY_MEMORY (be) An attempt was made to write to readonly memory. The guilty driver is on the stack trace (and is typically the current instruction pointer). When possible, the guilty driver's name (Unicode string) is printed on the bugcheck screen and saved in KiBugCheckDriver. Arguments: Arg1: f80e7204, Virtual address for the attempted write. Arg2: 028b3121, PTE contents. Arg3: a944ec44, (reserved) Arg4: 0000000a, (reserved) Debugging Details: ------------------ PEB is paged out (Peb.Ldr = 7ffd700c). Type ".hh dbgerr001" for details PEB is paged out (Peb.Ldr = 7ffd700c). Type ".hh dbgerr001" for details DEFAULT_BUCKET_ID: DRIVER_FAULT BUGCHECK_STR: 0xBE PROCESS_NAME: bestClient.exe TRAP_FRAME: a944ec44 -- (.trap 0xffffffffa944ec44) ErrCode = 00000003 eax=00000400 ebx=00000000 ecx=f80e71f4 edx=00000000 esi=811fdf14 edi=e573b648 eip=80516434 esp=a944ecb8 ebp=a944ecc8 iopl=0 nv up ei pl nz na pe nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010206 nt!MiRestoreTransitionPte+0x64: 80516434 ff4910 dec dword ptr [ecx+10h] ds:0023:f80e7204=8328478b Resetting default scope LAST_CONTROL_TRANSFER: from 8051f478 to 804f9c37 STACK_TEXT: a944ebc4 8051f478 000000be f80e7204 028b3121 nt!KeBugCheckEx+0x1b a944ec2c 80543568 00000001 f80e7204 00000000 nt!MmAccessFault+0x9a8 a944ec2c 80516434 00000001 f80e7204 00000000 nt!KiTrap0E+0xd0 a944ecc8 80521703 81413dc0 0000003f 00000000 nt!MiRestoreTransitionPte+0x64 a944ece0 80521d16 00000000 c0009f08 00000018 nt!MiRemovePageFromList+0xd1 a944ecf8 8051f9a9 013e1000 00e51000 0012f9f4 nt!MiRemoveAnyPage+0xc8 a944ed4c 80543568 00000001 013e1000 00000001 nt!MmAccessFault+0xed9 a944ed4c 7c917c8c 00000001 013e1000 00000001 nt!KiTrap0E+0xd0 WARNING: Frame IP not in any known module. Following frames may be wrong. 0012f9f4 00000000 00000000 00000000 00000000 0x7c917c8c STACK_COMMAND: kb FOLLOWUP_IP: nt!KiTrap0E+d0 80543568 85c0 test eax,eax SYMBOL_STACK_INDEX: 2 SYMBOL_NAME: nt!KiTrap0E+d0 FOLLOWUP_NAME: MachineOwner MODULE_NAME: nt IMAGE_NAME: ntkrpamp.exe DEBUG_FLR_IMAGE_TIMESTAMP: 41107b0d FAILURE_BUCKET_ID: 0xBE_nt!KiTrap0E+d0 BUCKET_ID: 0xBE_nt!KiTrap0E+d0 Followup: MachineOwner ---------
только код ядра. код пользовательского режима может косвенно вызвать бсод в том случае, если это, например, код процесса CSRSS и процесс завершается с исключением. Тогда будет бсод CRITICAL_OBJECT_TERMINATION, но все равно сам бсод сгенерирует код ядра