╭ァの修罗
新手上路

积分 6
发帖 6
注册 2012-6-16
|
#1 微点和火绒冲突问题说明
今天在火绒官网看到的帖子:
Table of Contents
1 环境
2 说明
3 结论
1 环境
微点:微点主动防御软件体验版,程序版本 2.0.20266.0140
火绒:火绒系统诊断工具/火绒安全防御软件,产品版本 v0.8-rc1
2 说明
通过BSOD时的Dump,可以得知导致系统最终崩溃的原因是无限递归导致的栈溢出,下面是崩溃时的调用栈:
kd> kv
ChildEBP RetAddr Args to Child
80546cb0 804f880d 00000003 8054700c 00000000 nt!RtlpBreakWithStatusInstruction (FPO: [1,0,0])
80546cfc 804f93fa 00000003 00000000 00000000 nt!KiBugCheckDebugBreak+0x19 (FPO: [Non-Fpo])
805470dc 8053f6e2 0000007f 00000008 80042000 nt!KeBugCheck2+0x574 (FPO: [Non-Fpo])
805470dc badf6fe8 0000007f 00000008 80042000 nt!KiTrap08+0x44 (FPO: TSS 28:0)
WARNING: Stack unwind information not available. Following frames may be wrong.
efd67078 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0xc4
efd670c4 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd67164 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd671b0 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd67250 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6729c badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6733c f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd67388 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd67428 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd67474 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd67514 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd67560 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd67600 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6764c badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd676ec f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd67738 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
……………………………………此处省略过多重复数据………………………………………
efd6b3c4 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6b410 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6b4b0 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6b4fc badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6b59c f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6b5e8 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6b688 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6b6d4 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6b774 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6b7c0 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6b860 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6b8ac badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6b94c f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6b998 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6ba38 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6ba84 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6bb24 f89cfde2 81beaf10 83040f20 f89cfd50 mp110003!f0018+0x254
efd6bb70 badf7178 f89cfd50 81beaf10 83040f20 sysdiag+0x13de2
efd6bc10 804eedf9 81beaf10 83040f20 806d12e8 mp110003!f0018+0x254
efd6bc20 8064c5a8 81803230 806d12d0 83040f20 nt!IopfCallDriver+0x31 (FPO: [0,0,0])
efd6bc44 80574b3a 83040fd8 816b3620 83040f20 nt!IovCallDriver+0xa0 (FPO: [Non-Fpo])
efd6bc58 805759c9 81beaf10 83040f20 816b3620 nt!IopSynchronousServiceTail+0x60 (FPO: [Non-Fpo])
efd6bd00 8056e326 00000364 00000558 00000000 nt!IopXxxControlFile+0x5e7 (FPO: [Non-Fpo])
efd6bd34 8053d808 00000364 00000558 00000000 nt!NtDeviceIoControlFile+0x2a (FPO: [Non-Fpo])
efd6bd34 7c92eb94 00000364 00000558 00000000 nt!KiFastCallEntry+0xf8 (FPO: [0,0] TrapFrame @ efd6bd64)
0159f710 7c92d8ef 76d325cf 00000364 00000558 ntdll!KiFastSystemCallRet (FPO: [0,0,0])
通过分析Dump可以看到,微点会Hook火绒驱动的所有IRP请求回调函数:
kd> !drvobj sysdiag 3
Driver object (814ce2d8) is for:
\FileSystem\sysdiag
Driver Extension List: (id , addr)
Device Object list:
81821a20 81be0248 81be0368 81cb34e8
814c2678 8155fb60
DriverEntry: f8be75e0 sysdiag!DriverEntry
DriverStartIo: 00000000
DriverUnload: bade4b92 fltMgr!FltpMiniFilterDriverUnload
AddDevice: 00000000
Dispatch routines:
[00] IRP_MJ_CREATE badf6fda mp110003!f0018+0xb6
[01] IRP_MJ_CREATE_NAMED_PIPE badf6fda mp110003!f0018+0xb6
[02] IRP_MJ_CLOSE badf6fda mp110003!f0018+0xb6
[03] IRP_MJ_READ badf6fda mp110003!f0018+0xb6
[04] IRP_MJ_WRITE badf6fda mp110003!f0018+0xb6
[05] IRP_MJ_QUERY_INFORMATION badf6fda mp110003!f0018+0xb6
[06] IRP_MJ_SET_INFORMATION badf6fda mp110003!f0018+0xb6
[07] IRP_MJ_QUERY_EA badf6fda mp110003!f0018+0xb6
[08] IRP_MJ_SET_EA badf6fda mp110003!f0018+0xb6
[09] IRP_MJ_FLUSH_BUFFERS badf6fda mp110003!f0018+0xb6
[0a] IRP_MJ_QUERY_VOLUME_INFORMATION badf6fda mp110003!f0018+0xb6
[0b] IRP_MJ_SET_VOLUME_INFORMATION badf6fda mp110003!f0018+0xb6
[0c] IRP_MJ_DIRECTORY_CONTROL badf6fda mp110003!f0018+0xb6
[0d] IRP_MJ_FILE_SYSTEM_CONTROL badf6fda mp110003!f0018+0xb6
[0e] IRP_MJ_DEVICE_CONTROL badf6fda mp110003!f0018+0xb6
[0f] IRP_MJ_INTERNAL_DEVICE_CONTROL badf6fda mp110003!f0018+0xb6
[10] IRP_MJ_SHUTDOWN badf6fda mp110003!f0018+0xb6
[11] IRP_MJ_LOCK_CONTROL badf6fda mp110003!f0018+0xb6
[12] IRP_MJ_CLEANUP badf6fda mp110003!f0018+0xb6
[13] IRP_MJ_CREATE_MAILSLOT badf6fda mp110003!f0018+0xb6
[14] IRP_MJ_QUERY_SECURITY badf6fda mp110003!f0018+0xb6
[15] IRP_MJ_SET_SECURITY badf6fda mp110003!f0018+0xb6
[16] IRP_MJ_POWER badf6fda mp110003!f0018+0xb6
[17] IRP_MJ_SYSTEM_CONTROL badf6fda mp110003!f0018+0xb6
[18] IRP_MJ_DEVICE_CHANGE badf6fda mp110003!f0018+0xb6
[19] IRP_MJ_QUERY_QUOTA badf6fda mp110003!f0018+0xb6
[1a] IRP_MJ_SET_QUOTA badf6fda mp110003!f0018+0xb6
[1b] IRP_MJ_PNP badf6fda mp110003!f0018+0xb6
分析mp110003.sys代码可知,该驱动会在拦截到对被拦截驱动的IRP请求时,通过驱动对象和IRP请求号查找原始回调函数地址并调用:
.text:BADF7044 loc_BADF7044: ; CODE XREF: irp_dispatch_hook+62j
.text:BADF7044 movzx eax, [edi+IO_STACK_LOCATION.MajorFunction]
.text:BADF7047 push eax ; irp_major
.text:BADF7048 mov eax, [ebp+devobj]
.text:BADF704B push [eax+DEVICE_OBJECT.DriverObject] ; drvobj
.text:BADF704E call find_origin_entry ; find origin dispatch routine by irp_major and drvobj
.text:BADF716B push [ebp+irp]
.text:BADF716E mov esi, [ebp+devobj]
.text:BADF7171 push esi
.text:BADF7172 push edi
.text:BADF7173 call call_origin_dispatch
而火绒的部分内部处理流程也会调用自身的IRP请求回调。 mp110003.sys的Hook并没有考虑此类情况,只通过IRP请求号和驱动对象来关联被Hook的原始函数地址导致了错误的重入,最终导致系统崩溃。下图分别说明了正常的处理流程和被mp110003.sys拦截后异常的处理流程之间的区别:

3 结论
mp110003.sys没有正确管理并处理被Hook函数地址,从而导致错误的代码重入,最终导致系统崩溃。
by vardyh
http://www.huorong.cn/bbs/thread-74-1-1.html
那么微点会解决这个问题吗?
|
※ ※ ※ 本文纯属【╭ァの修罗】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2012-6-19 23:44 |
|
Legend
超级版主
        超级版主
积分 77171
发帖 70170
注册 2005-10-29
|
|
2012-6-19 23:59 |
|
冷调丫
新手上路

积分 19
发帖 19
注册 2012-5-22 来自 江苏东盛
|
#3
了解一下。。
|
※ ※ ※ 本文纯属【冷调丫】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 [url=http://www.casyuming.com/]金属杂质[/url]
|
 |
|
2012-6-21 13:06 |
|
羽落云飞
新手上路

积分 2
发帖 2
注册 2012-6-23
|
#4
微点 这也是为了安全 这个说明很安全 拦截到非法调用 火绒刚刚出来 误报 很正常的
|
※ ※ ※ 本文纯属【羽落云飞】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2012-6-23 18:27 |
|
乐在天涯
注册用户
 
积分 64
发帖 64
注册 2010-11-6
|
#5
Quote: | Originally posted by Legend at 2012-6-19 23:59:
感谢楼主的反馈,此问题已经记录,另外由于安全类软件的特殊性所以不推荐您安装多款安全类软件一起使用。 |
|
L版 软件的兼容性也是软件好坏的一个重要指标吧。这样看来 微点似乎对自己的兼容性很不自信。
|
※ ※ ※ 本文纯属【乐在天涯】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2012-6-24 23:23 |
|
羽落云飞
新手上路

积分 2
发帖 2
注册 2012-6-23
|
#6
Quote: | Originally posted by 乐在天涯 at 2012-6-24 23:23:
L版 软件的兼容性也是软件好坏的一个重要指标吧。这样看来 微点似乎对自己的兼容性很不自信。 |
|
额 为什么说兼容性很重要,每个杀毒或主动防御软件,有自己的逻辑来解决病毒,另一个杀毒软件,想获得更高的权限,和病毒行为一样,那么微点看到了必定拦截,额,两个软件在争着抢电脑的监控权,一定会冲突啊。。。。。
说的不是术语 不专业 大家别喷
|
※ ※ ※ 本文纯属【羽落云飞】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2012-6-25 15:39 |
|