总算回学校,看了下DUMP文件
TRAP_FRAME: f8662b04 -- (.trap 0xfffffffff8662b04)
ErrCode = 00000000
eax=00000000 ebx=00000000 ecx=8160ce18 edx=e1002530 esi=f85b0880 edi=f8662bd8
eip=f85b0939 esp=f8662b78 ebp=f8662bdc iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246
YasBoxFilter+0x1939:
f85b0939 8b700c mov esi,dword ptr [eax+0Ch] ds:0023:0000000c=????????
很显然 eax为0, EAX应该是存放一个指针的,可能由于没判断或者其他原因,导致EAX为了一空指针,eax+0Ch的值为用户
地址空间的值,访问这个地址明显会引起异常,由于没有__TYY,所以出现了
KERNEL_MODE_EXCEPTION_NOT_HANDLED_M (1000008e) 的BSOD
看一下具体代码
f85b0924 6a01 push 1
f85b0926 ff75d4 push dword ptr [ebp-2Ch]
f85b0929 ff1550a05bf8 call dword ptr [YasBoxFilter+0xb050 (f85ba050)]
f85b092f 85c0 test eax,eax
f85b0931 7c39 jl YasBoxFilter+0x196c (f85b096c)
f85b0933 8b4dd0 mov ecx,dword ptr [ebp-30h]
f85b0936 8b4108 mov eax,dword ptr [ecx+8]
f85b0939 8b700c mov esi,dword ptr [eax+0Ch] ds:0023:0000000c=????????
f85b093c ff1528a05bf8 call dword ptr [YasBoxFilter+0xb028 (f85ba028)]
f85b0942 a1f0c25bf8 mov eax,dword ptr [YasBoxFilter+0xd2f0 (f85bc2f0)]
f85b0947 8a4dd8 mov cl,byte ptr [ebp-28h]
f85b094a c1e003 shl eax,3
mov ecx,dword ptr [ebp-30h] ecx是一个FILE_OBJECT指针
lkd> dt _file_object
nt!_FILE_OBJECT
+0x000 Type : Int2B
+0x002 Size : Int2B
+0x004 DeviceObject : Ptr32 _DEVICE_OBJECT
+0x008 Vpb : Ptr32 _VPB
mov eax,dword ptr [ecx+8] EAX就是一个存放 _VPB的指针了..
问题就出现在这里...我以为 file_object的_VPB不可能为空.结果
mov esi,dword ptr [eax+0Ch] BSOD了...解决办法..判断下_VPB是否为NULL就可以了..有时间修改下..并且跟其
他软件的冲突修改下...谢谢你的反馈.. |