Dump文件解释下(自己看的云里雾里)

fangchao918628 2009-12-22 01:52:51

ADDITIONAL_DEBUG_TEXT:
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.

FAULTING_MODULE: 804d8000 nt

DEBUG_FLR_IMAGE_TIMESTAMP: 4b305894

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"

FAULTING_IP:
HideDirFile!FilterDispatch+ca [c:\123\hidedirfile.c @ 687]
b86a37da 8b3e mov edi,dword ptr [esi]

TRAP_FRAME: b2e9fbc8 -- (.trap 0xffffffffb2e9fbc8)
ErrCode = 00000000
eax=00000008 ebx=88e54008 ecx=00000048 edx=b2e9fc58 esi=6e6549ca edi=6c6c642e
eip=b86a37da esp=b2e9fc3c ebp=b2e9fc7c iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010206
HideDirFile!FilterDispatch+0xca:
b86a37da 8b3e mov edi,dword ptr [esi] ds:0023:6e6549ca=????????
Resetting default scope

CUSTOMER_CRASH_COUNT: 2

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0x8E

LAST_CONTROL_TRANSFER: from 804f00b5 to b86a37da

STACK_TEXT:
b2e9fc7c 804f00b5 00000000 00000400 806e5410 HideDirFile!FilterDispatch+0xca [c:\123\hidedirfile.c @ 687]
WARNING: Stack unwind information not available. Following frames may be wrong.
b2e9fca0 8057c7eb 8926b4f8 88e54008 88f1a878 nt+0x180b5
b2e9fd38 8054188c 00000b88 00000000 00000000 nt+0xa47eb
b2e9fd64 7c92e514 badb0d00 01f8e204 00000000 nt+0x6988c
b2e9fd68 badb0d00 01f8e204 00000000 00000000 0x7c92e514
b2e9fd6c 01f8e204 00000000 00000000 00000000 0xbadb0d00
b2e9fd70 00000000 00000000 00000000 00000000 0x1f8e204


STACK_COMMAND: kb

FOLLOWUP_IP:
HideDirFile!FilterDispatch+ca [c:\123\hidedirfile.c @ 687]
b86a37da 8b3e mov edi,dword ptr [esi]

FAULTING_SOURCE_CODE:
683: }
684:
685: do {
686:
> 687: offset = dirInfo->NextEntryOffset;
688:
689: RtlInitUnicodeString( &ustr1, dirInfo->FileName );
690: ustr1.Length = (USHORT) dirInfo->FileNameLength;
691: RtlInitUnicodeString( &ustr2, L"HYET_0000" );
692: if ((dirInfo->FileNameLength > 0)&&


SYMBOL_STACK_INDEX: 0

SYMBOL_NAME: HideDirFile!FilterDispatch+ca

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: HideDirFile

IMAGE_NAME: HideDirFile.sys

BUCKET_ID: WRONG_SYMBOLS


是不是说687行那里错误,但是不知道为什么错误???
...全文
283 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangchao918628 2009-12-23
  • 打赏
  • 举报
回复

好像是不蓝了,怀疑是是另一个驱动冲突的!!
danxuezx 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cnzdgs 的回复:]
引用 9 楼 fangchao918628 的回复:
dirInfo = Irp->UserBuffer,指向的是用户空间的地址

UserBuffer不能直接访问,用MmGetSystemAddressForMdlSafe将其映射到内核地址空间,用返回的指针访问数据。
[/Quote]
up,WINIO的做法可以参考一下
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
恩,好像是符号表没有下载完!
MoXiaoRab 2009-12-22
  • 打赏
  • 举报
回复
反正是你调试操作有误,才会出现#12的情况
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
在这个目录里面C:\123\objfre_wxp_x86\i386,我用分号分开了
MoXiaoRab 2009-12-22
  • 打赏
  • 举报
回复
不是那个符号。难怪你有问题了
是你的源代码编译出来的pdb文件。那个
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
填加了啊
srv*e:\symbs*http://msdl.microsoft.com/download/symbols;C:\123\objfre_wxp_x86\i386
MoXiaoRab 2009-12-22
  • 打赏
  • 举报
回复
符号添加了没
MoXiaoRab 2009-12-22
  • 打赏
  • 举报
回复
你调试操作有误。
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cnzdgs 的回复:]
引用 9 楼 fangchao918628 的回复:
dirInfo = Irp->UserBuffer,指向的是用户空间的地址

UserBuffer不能直接访问,用MmGetSystemAddressForMdlSafe将其映射到内核地址空间,用返回的指针访问数据。
[/Quote]
我访问这个是因为我需要修改,系统枚举文件目录的时候的返回结果,是否有我需要修改的数据,有就处理!
设置了事件保证他们在同一个线程上下文,这样访问应该没什么问题吧????
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntkrnlpa.exe - 
nt!DbgBreakPointWithStatus+0x4:
80528bdc cc int 3
kd> g
ERROR: DavReadRegistryValues/RegQueryValueExW(4). WStatus = 5
ERROR: DavReadRegistryValues/RegQueryValueExW(5). WStatus = 5
ERROR: DavReadRegistryValues/RegQueryValueExW(6). WStatus = 5
Access violation - code c0000005 (!!! second chance !!!)
HideDirFile!FilterDispatch+0xea:
fa07377a 8b3e mov edi,dword ptr [esi]
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
kd> p
Access violation - code c0000005 (!!! second chance !!!)
HideDirFile!FilterDispatch+0xea:
fa07377a 8b3e mov edi,dword ptr [esi]

这是调试信息!!看不明白,还是说 c0000005
MoXiaoRab 2009-12-22
  • 打赏
  • 举报
回复
指向用户的地址需要通过MDL映射到内核中进行访问。
如果需要分派新的内核地址空间进行映射,可以使用MmMapLockedPagesSpecifyCache
cnzdgs 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fangchao918628 的回复:]
dirInfo = Irp->UserBuffer,指向的是用户空间的地址
[/Quote]
UserBuffer不能直接访问,用MmGetSystemAddressForMdlSafe将其映射到内核地址空间,用返回的指针访问数据。
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
dirInfo = Irp->UserBuffer,指向的是用户空间的地址
djjs280 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fangchao918628 的回复:]
引用 5 楼 tr0j4n 的回复:
怀疑dirInfo为空指针。

在这句执行前先DbgPrint %x出来看看

在执行之前有判断
C/C++ codeif ((!dirInfo)||(dirInfo->NextEntryOffset> bufferLength)) {

IoCompleteRequest(Irp, IO_NO_INCREMENT);return status;
}
[/Quote]

改为


if ((!MmIsAddressValid(dirInfo))||(dirInfo->NextEntryOffset> bufferLength)) {

IoCompleteRequest(Irp, IO_NO_INCREMENT);return status;
}
cnzdgs 2009-12-22
  • 打赏
  • 举报
回复
0xc0000005表示内存访问违例。

FOLLOWUP_IP:
HideDirFile!FilterDispatch+ca [c:\123\hidedirfile.c @ 687]
b86a37da 8b3e mov edi,dword ptr [esi]
这里指出了出错的代码。结合错误码,可以知道判断出esi是无效地址。

根据上面列出的寄存器的值,esi=6e6549ca,这个值属于用户地址空间,驱动程序使用的地址空间通常是大于0x80000000的。

定位到源代码是offset = dirInfo->NextEntryOffset,可以判断出是指针变量dirInfo的值有问题。

看一下源代码中dirInfo的值是怎么来的。

顺便提一下,驱动可以用WinDbg结合虚拟机双机调试,Dump文件中的信息很有限。
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tr0j4n 的回复:]
怀疑dirInfo为空指针。

在这句执行前先DbgPrint %x出来看看
[/Quote]
在执行之前有判断

if ((!dirInfo) ||(dirInfo->NextEntryOffset > bufferLength)) {

IoCompleteRequest(Irp, IO_NO_INCREMENT);
return status;
}
MoXiaoRab 2009-12-22
  • 打赏
  • 举报
回复
怀疑dirInfo为空指针。

在这句执行前先DbgPrint %x出来看看
oyljerry 2009-12-22
  • 打赏
  • 举报
回复
EXCEPTION_CODE: (NTSTATUS) 0xc0000005
--- 可能访问指针等无效,检查一下对应行数附近代码指针等是否正确
fangchao918628 2009-12-22
  • 打赏
  • 举报
回复
指向非法地址??能说说在什么情况下会产生指向非法地址么,线程切换?内核地址是公有的,应该不会吧!
加载更多回复(2)

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧