Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  易内核
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
沪ICP备11027180号

Windows内核调试

帖子发起人: apple   发起时间: 2008-10-12 09:32 上午   回复: 15

Print Search
帖子排序:    
   2008-10-12, 09:32 上午
applepwc 离线,最后访问时间: 2009-6-23 15:45:14 apple

发帖数前150位
注册: 2008-07-13
发 贴: 6
Embarrassed [:$] 360IceBreaker BSOD
Reply Quote
用360文件粉碎工具BETA版删除东西时,机器蓝屏
http://www.360.cn/down/soft_down12.html

STACK_TEXT:
WARNING: Frame IP not in any known module. Following frames may be wrong.
ba3ea99c 804f018f 86744020 85ad8c88 85ad8c88 0x867731f8
ba3ea9dc 805bda0a 867b57f8 86744020 00000080 nt+0x1818f
ba3eaa10 805bd333 867b57f8 00000001 867e7ca0 nt+0xe5a0a
ba3eaa38 805bd3d1 e1001e08 86542f90 00000cbc nt+0xe5333
ba3eaa80 805bd509 00000cbc 00000000 00000000 nt+0xe53d1
ba3eaa94 8054261c 80000cbc ba3eabc4 80500f31 nt+0xe5509
ba3eaaa0 80500f31 badb0d00 ba3eab18 00000000 nt+0x6a61c
ba3eabc4 ba294eea ba294d94 ba294d88 ba294d3c nt+0x28f31
ba3eac04 ba29523c 85d702a0 00000001 00000000 360IceBreaker+0x1eea
ba3eac40 804f018f 859ceba0 00000000 806e7410 360IceBreaker+0x223c
ba3eac64 805817f7 859ceba0 85af5790 85d702a0 nt+0x1818f
ba3ead00 8057a274 000002cc 00000000 00000000 nt+0xa97f7
ba3ead34 8054261c 000002cc 00000000 00000000 nt+0xa2274
ba3ead64 7c92e4f4 badb0d00 0012f56c baaccd98 nt+0x6a61c
ba3ead68 badb0d00 0012f56c baaccd98 baaccdcc 0x7c92e4f4
ba3ead6c 0012f56c baaccd98 baaccdcc 00000000 0xbadb0d00
ba3ead70 baaccd98 baaccdcc 00000000 00000000 0x12f56c
ba3ead74 baaccdcc 00000000 00000000 00000000 0xbaaccd98
ba3ead78 00000000 00000000 00000000 00000000 0xbaaccdcc


STACK_COMMAND: kb

FOLLOWUP_IP:
360IceBreaker+1eea
ba294eea ?? ???

SYMBOL_STACK_INDEX: 8

SYMBOL_NAME: 360IceBreaker+1eea

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: 360IceBreaker

IMAGE_NAME: 360IceBreaker.sys

BUCKET_ID: WRONG_SYMBOLS

Followup: MachineOwner

====================

删除的那个东西,原来在“~1”文件夹内,我可以重命名那个文件夹,但是删除那个文件夹里面的东西,就报

---------------------------
删除文件或文件夹时出错
---------------------------
无法删除 c_pan: 访问被拒绝。

请确定磁盘未满或未被写保护
而且文件未被使用。
---------------------------
确定
---------------------------

====================
1: kd> r
eax=00000012 ebx=85ad8c98 ecx=86744020 edx=85ad8c88 esi=866892e8 edi=86542f90
eip=867731f8 esp=ba3ea9a0 ebp=ba3ea9dc iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010282
867731f8 0000 add byte ptr [eax],al ds:0023:00000012=??
1: kd> dd eax L1
00000012 ????????

只能从上看到eax指向的地址不能取值?

但是为什么会执行到这里呢?这个BSOD咋产生的?



====================
麻烦有高手帮忙演示一下怎么应用软件调试的方式告诉我为什么会出错。谢谢。

ps:俺也买了《软件调试》一书,还没看完,另外功力尚浅,所以不能从dmp中分析更多原因。

dump地址在此:
http://www.live-share.com/files/356515/Mini101208-01.dmp.html
IP 地址: 已记录   报告
   2008-10-12, 09:37 上午
applepwc 离线,最后访问时间: 2009-6-23 15:45:14 apple

发帖数前150位
注册: 2008-07-13
发 贴: 6
Re: 360IceBreaker BSOD
Reply Quote
PS:我删除的文件并没有其它程序占用它,即用“wholockme”之类的东西查不到有任何程序调用它。

那个文件可以复制到其它地方,但是就是不能删除和剪切。

是用“一键恢复GHOST”产生的gho文件的备份文件夹。现在那个破软件已经删除,我想把它的备份文件夹和备份文件一起删了,就不行了。


---------------------------
删除文件或文件夹时出错
---------------------------
无法删除 C_PAN: 访问被拒绝。

请确定磁盘未满或未被写保护
而且文件未被使用。
---------------------------
确定
---------------------------

IP 地址: 已记录   报告
   2008-10-12, 10:31 上午
MJ0011 离线,最后访问时间: 2009-12-24 22:33:41 MJ0011

发帖数前10位
注册: 2008-04-24
发 贴: 112
Re: 360IceBreaker BSOD
Reply Quote
楼主提供的DUMP下载不了,请将DUMP和SYS一起发送到我的邮箱:th_deocder@126.com
感谢支持!

这个SYS已经很老了,呵呵
IP 地址: 已记录   报告
   2008-10-12, 10:44 上午
sudami 离线,最后访问时间: 2009-8-28 11:12:14 sudami

发帖数前75位
注册: 2008-09-24
发 贴: 17
Re: 360IceBreaker BSOD
Reply Quote
ghost备份后那个文件夹俺这里也死活删不掉.是啥原因啊?
IP 地址: 已记录   报告
   2008-10-12, 16:14 下午
WANGyu 离线,最后访问时间: 2012-9-10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 360IceBreaker BSOD
Reply Quote
马甲同学的老驱动访问非法地址了

呵呵
现在这个论坛竟也可以把马甲同学引出来了..
^_^
IP 地址: 已记录   报告
   2008-10-12, 23:55 下午
applepwc 离线,最后访问时间: 2009-6-23 15:45:14 apple

发帖数前150位
注册: 2008-07-13
发 贴: 6
Embarrassed [:$] Re: 360IceBreaker BSOD
Reply Quote
已发~~

麻烦作者了

ps:我试了,我这里可以下载那个live-share的dmp的。
IP 地址: 已记录   报告
   2008-10-13, 13:27 下午
Raymond 离线,最后访问时间: 2017-6-8 11:26:39 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,298
Re: 360IceBreaker BSOD
Reply Quote

下载时将链接中的.html去掉,可以下载。

To Apple:

关于如何分析DUMP文件,《软件调试》13.4节结合一个真实的DUMP文件,给出了详细的分析。你可以参考着做一下。

对于这个文件,文件打开后,应该在把符号路径设置正确后(例如.symfix c:\symbols),执行一下.reload,然后再执行kv或者!analyze -v

以下是发生非法访问时的上下文:

FAULTING_IP:
+ffffffff867731f8
867731f8 0000            add     byte ptr [eax],al

TRAP_FRAME:  ba3ea92c -- (.trap 0xffffffffba3ea92c)
ErrCode = 00000002
eax=00000012 ebx=85ad8c98 ecx=86744020 edx=85ad8c88 esi=866892e8 edi=86542f90
eip=867731f8 esp=ba3ea9a0 ebp=ba3ea9dc iopl=0         nv up ei ng nz na po nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010282
867731f8 0000            add     byte ptr [eax],al          ds:0023:00000012=??

从这个上下文可以知道当时程序指针已经指向了内容为0000的区域,虽然0000仍对应着有效的IA-32 指令,但是这个指令其实很值得怀疑了。

另外,WinDBG没有解析到这个IP地址所对应的模块,那么很可能这个地址不属于有效的代码区,也就是说程序指针意外的飞到了这里。

看一下栈回溯:

1: kd> kvn
 # ChildEBP RetAddr  Args to Child             
WARNING: Frame IP not in any known module. Following frames may be wrong.
00 ba3ea99c 804f018f 86744020 85ad8c88 85ad8c88 0x867731f8
01 ba3ea9ac 80584953 86542f78 000000a8 867e7ca0 nt!IopfCallDriver+0x31 (FPO: [0,0,0])
02 ba3ea9dc 805bda0a 867b57f8 86744020 00000080 nt!IopCloseFile+0x26b (FPO: [Non-Fpo])
03 ba3eaa10 805bd333 867b57f8 00000001 867e7ca0 nt!ObpDecrementHandleCount+0xd8 (FPO: [Non-Fpo])
04 ba3eaa38 805bd3d1 e1001e08 86542f90 00000cbc nt!ObpCloseHandleTableEntry+0x14d (FPO: [Non-Fpo])
05 ba3eaa80 805bd509 00000cbc 00000000 00000000 nt!ObpCloseHandle+0x87 (FPO: [Non-Fpo])
06 ba3eaa94 8054261c 80000cbc ba3eabc4 80500f31 nt!NtClose+0x1d (FPO: [Non-Fpo])
07 ba3eaa94 80500f31 80000cbc ba3eabc4 80500f31 nt!KiFastCallEntry+0xfc (FPO: [0,0] TrapFrame @ ba3eaaa0)
08 ba3eab10 ba2940fd 80000cbc 00000000 00000000 nt!ZwClose+0x11 (FPO: [1,0,0])
09 ba3eabc4 ba294eea ba294d94 ba294d88 ba294d3c 360IceBreaker+0x10fd
0a ba3eac04 ba29523c 85d702a0 00000001 00000000 360IceBreaker+0x1eea
0b ba3eac40 804f018f 859ceba0 00000000 806e7410 360IceBreaker+0x223c
0c ba3eac50 80580982 85af5800 85d702a0 85af5790 nt!IopfCallDriver+0x31 (FPO: [0,0,0])
0d ba3eac64 805817f7 859ceba0 85af5790 85d702a0 nt!IopSynchronousServiceTail+0x70 (FPO: [Non-Fpo])
0e ba3ead00 8057a274 000002cc 00000000 00000000 nt!IopXxxControlFile+0x5c5 (FPO: [Non-Fpo])
0f ba3ead34 8054261c 000002cc 00000000 00000000 nt!NtDeviceIoControlFile+0x2a (FPO: [Non-Fpo])
10 ba3ead34 7c92e4f4 000002cc 00000000 00000000 nt!KiFastCallEntry+0xfc (FPO: [0,0] TrapFrame @ ba3ead64)
11 0012f5c4 00000000 00000000 00000000 00000000 0x7c92e4f4

从栈帧#01可以知道,是因为IopfCallDriver调用某个驱动的注册例程才出了上面的错。那么可能的原因是IopfCallDriver函数的第一个参数所指定的设备对象有问题,也可能是这个设备对象的某些字段被破坏了。

使用dt _DEVICE_OBJECT 观察这个参数:

1: kd> dt _DEVICE_OBJECT 86542f78
nt!_DEVICE_OBJECT
   +0x000 Type             : 1
   +0x002 Size             : 0
   +0x004 ReferenceCount   : 0
   +0x008 DriverObject     : 0x867e7ca0 _DRIVER_OBJECT
   +0x00c NextDevice       : 0x42000800 _DEVICE_OBJECT
   +0x010 AttachedDevice   : 0x00000001 _DEVICE_OBJECT
   +0x014 CurrentIrp       : (null)
   +0x018 Timer            : 0x00700005 _IO_TIMER
   +0x01c Flags            : 0x866e9900
   +0x020 Characteristics  : 0x86641248
   +0x024 Vpb              : 0xe47b0d90 _VPB
   +0x028 DeviceExtension  : 0xe1442940
   +0x02c DeviceType       : 0x85b0090c
   +0x030 StackSize        : -24 ''
   +0x034 Queue            : __unnamed
   +0x05c AlignmentRequirement : 0
   +0x060 DeviceQueue      : _KDEVICE_QUEUE
   +0x074 Dpc              : _KDPC
   +0x094 ActiveThreadCount : ??
   +0x098 SecurityDescriptor : ????
   +0x09c DeviceLock       : _KEVENT
   +0x0ac SectorSize       : ??
   +0x0ae Spare1           : ??
   +0x0b0 DeviceObjectExtension : ????
   +0x0b4 Reserved         : ????
Memory read error 8654302c

上面的显示有很多问题,显示??的字段可能是因为目前使用的是Mini Dump,对应的内存数据没有包含进来。

驱动程序360IceBreaker 出现在出事的栈中,使用lmvm 可以显示它的版本信息:

1: kd> lmvm 360IceBreaker
start    end        module name
ba293000 ba295f00   360IceBreaker T (no symbols)          
    Loaded symbol image file: 360IceBreaker.sys
    Image path: 360IceBreaker.sys
    Image name: 360IceBreaker.sys
    Timestamp:        Sat May 12 20:45:02 2007 (4645EF0E)
    CheckSum:         0000B169
    ImageSize:        00002F00
    Translations:     0000.04b0 0000.04e0 0409.04b0 0409.04e0

MJ0011说这个驱动的版本很旧,建议你换一个新的版本,除非你是特意在学习这个版本或者研究这个问题:-)。如果真的如此,那么建议考虑分析完整的转储文件,或者做活动的双机内核调试。


IP 地址: 已记录   报告
   2008-10-13, 14:38 下午
MJ0011 离线,最后访问时间: 2009-12-24 22:33:41 MJ0011

发帖数前10位
注册: 2008-04-24
发 贴: 112
Re: 360IceBreaker BSOD
Reply Quote
我去掉.html仍然是下载不了~也没有收到楼主的邮件


从这个上下文可以知道当时程序指针已经指向了内容为0000的区域,虽然0000仍对应着有效的IA-32 指令,但是这个指令其实很值得怀疑了。
===

楼上说得并不正确,实际出问题时的程序指针是867731f8 ,0000是当前的内存内容

可以看到是360IceBreaker在接受一个DEVICE IO CONTROL指令后进行了一些操作,最后调用ZwClose关闭一个文件句柄,最终触发IofCallDriver,应该是去调用某个驱动的IRP_MJ_CLOSE例程,那么应该是0x867e7ca0 这个DriverObject的IRP_MJ_CLOSE例程地址是867731f8 ,或者是例程里调用了这个地址

不一定是360IceBreaker的问题,因为360IceBreaker只是调用ZwClose而已
IP 地址: 已记录   报告
   2008-10-13, 15:55 下午
WANGyu 离线,最后访问时间: 2012-9-10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 360IceBreaker BSOD
Reply Quote
Raymond 老师表达的也是这个意思...


Raymond 说“当时程序指针已经指向了内容为0000的区域”



MJ0011 说的“实际出问题时的程序指针是867731f8 ,0000是当前的内存内容”

是一个意思呀。



DMP里面很明显了:

FAULTING_IP:
+ffffffff867731f8 // 错误地址
867731f8 0000 add byte ptr [eax],al // 0000 的反译还有 add [bx+si],al 之类的
IP 地址: 已记录   报告
   2008-10-13, 17:00 下午
MJ0011 离线,最后访问时间: 2009-12-24 22:33:41 MJ0011

发帖数前10位
注册: 2008-04-24
发 贴: 112
Re: 360IceBreaker BSOD
Reply Quote
看错了Raymond的话,抱歉!
IP 地址: 已记录   报告
   2008-10-13, 19:08 下午
applepwc 离线,最后访问时间: 2009-6-23 15:45:14 apple

发帖数前150位
注册: 2008-07-13
发 贴: 6
Re: 360IceBreaker BSOD
Reply Quote
1,先感谢raymond.

驱动就是http://www.360.cn/down/soft_down12.html这里下载的,网站上最新的。

是不是调适这个问题,需要源码或者pdb才可以弄懂原因?
《D1蓝屏、指针和安全的代价》我就想多学习下这篇文章的变种。

完整的双机调式我以后会尝试的。不过貌似比较麻烦。还有就是驱动我才开看,欠缺的知识导致我想搞清楚貌似比较吃力。

=============
2,为了发送dmp给作者。我特意注册了1个126的邮箱,还是不行,发送的时候显示:
以下邮件地址将无法成功收到信件:th_deocder@126.com


那就麻烦各位到此邮箱里面去下载dump文件吧。

邮箱名:appledbg@126.com
密码:1appledbg
=============

3,有个没看懂的地方:
根据张老师的说法“虽然0000仍对应着有效的IA-32 指令,但是这个指令其实很值得怀疑了。”
请问下:
0000区域为什么还能有指令翻译过来?这个区域是每个进程的虚拟内存开始地址?既然这个区域是非法的,咋不弄个nop或者int 3?


=============
感谢各位高手帮忙解惑。
IP 地址: 已记录   报告
   2008-10-13, 19:23 下午
WANGyu 离线,最后访问时间: 2012-9-10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 360IceBreaker BSOD
Reply Quote
apple兄台没细看...

Raymond 说“当时程序指针已经指向了内容为0000的区域”
MJ0011 说“实际出问题时的程序指针是867731f8 ,0000是当前的内存内容”
DUMP文件说“867731f8 0000 add byte ptr [eax],al”


意思大概就是:
dd 867731f8
867731f8 00000000 ???????? ???????? ????????

而不是:
kd> dd 00000000
00000000 ???????? ???????? ???????? ????????

IP 地址: 已记录   报告
   2008-10-13, 20:06 下午
applepwc 离线,最后访问时间: 2009-6-23 15:45:14 apple

发帖数前150位
注册: 2008-07-13
发 贴: 6
Hmm [^o)] Re: 360IceBreaker BSOD
谢谢王宇!



产生问题的“一键GHOST硬盘版”。http://www.crsky.com/soft/6097.html
=====================
一键GHOST 常见问题FAQ


* "一键备份C盘"的映像保存在什么位置?有何优点?怎样进行打开等操作

答:(1)保存位置:第一硬盘最后一个分区:\~1\C_PAN.GHO
(2)~1的优点:此文件夹在FAT分区下资源管器中完全隐藏即使打开"显示所有文件"也不可见,
在NTFS分区下可防止删除,以防止病毒的恶意行为或用户的误操作.
(3)高级操作:映像->打开/保护/管理/导出/导入/移动/删除.

=====================
去掉“使用简单文件共享”前的勾,然后给那个备份文件夹加上权限,就可以删掉它了。


是不是因为没有权限,所以删除文件时,返回的是一个错误的句柄之类的东西,但是360还是照着那个地

址删。于是就蓝屏了。以上全是猜想,能从DMP文件中看出来吗?
=====================
不过我把产生问题的模拟步骤写在这里,希望高手有空看看吧。
1,在NTFS分区上建立一个文件夹,在里面搁一个记事本,然后去除该文件夹的所有权限。留一个everyone

可读取等中间3个权限。
2,下载“360filekiller”。http://www.360.cn/down/soft_down12.html
用此工具删除那个记事本。

记得先CrashDumpEnabled设置成1.
然后就可以看到full dump了。
IP 地址: 已记录   报告
   2008-10-14, 02:09 上午
MJ0011 离线,最后访问时间: 2009-12-24 22:33:41 MJ0011

发帖数前10位
注册: 2008-04-24
发 贴: 112
Re: 360IceBreaker BSOD
Reply Quote
驱动在KernelMode下访问文件是不受权限影响的

我试了下楼主的步骤,没有重现这个问题
IP 地址: 已记录   报告
   2008-10-14, 12:31 下午
tudouni 离线,最后访问时间: 2012-11-8 12:04:22 土豆泥

发帖数前25位
注册: 2006-04-07
发 贴: 59
Re: 360IceBreaker BSOD
Reply Quote
Mini dump的信息只能做初步定位,楼主能不能上传一个完整的dump?
IP 地址: 已记录   报告
  总页数 1 第 2 页 [共有 16 条记录] 1 2 >
高端调试 » 软件调试 » Windows内核调试 » Re: 360IceBreaker BSOD

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2013 ADVDBG.ORG All Rights Reserved.