TsFltMgr。sys系统蓝屏的原因是什么
同事一WindowsXP系统,正常执行,关闭后,第二天无法启动,详细症状为:
(1)安全模式以及带网络功能的安全模式都能够进入;
(2)正常模式,还没出现WindowXP滚动栏就?始重新启动;
(3)进安全模式,禁用自己主动重新启动后,再正常启动,出现蓝屏,报TsFltMgr。sys内存错误!
经过互联网查询,和不断摸索,最后发现居然是可恶的QQ软件管家惹的祸,进安全模式果断卸载QQ软件管家后,再重新启动,系统全然正常了。
以下转载了一篇分析QQ电脑管家的文章,请参考:
QQ电脑管家中的TsFltMgrHook框架分析
新版的QQ电脑管家中多了一个名字叫TsFltMgr。sys的驱动,对该驱动进行了一些简单的分析,看见了一套美丽的Hook框架,发出来与大家分享。分析不正确的地方请多多包涵。
首先TsFltMgr挂钩了KiFastCallEntry函数,Hook点在这里:
代码:
复制代码
代码如下:
kdgt;uKiFastCallEntrye3
nt!KiFastCallEntry0xe3:
8053dbb3c1e902shrecx,2
8053dbb690nop
8053dbb790nop
8053dbb890nop
8053dbb9e962170c77jmpTsFltMgr0x2320(f75ff320)
8053dbbe0f83a8010000jaent!KiSystemCallExit20x9f(8053dd6c)
8053dbc4f3a5repmovsdwordptres:〔edi〕,dwordptr〔esi〕
8053dbc6ffd3callebx
原始的KiFastCallEntry在shrecx,2指令后面应该是movedi,esp;cmpesi,MmUserProbeAddress,共8个字节,在这里被TsFltMgr替换成了3个nop和一个jmp。
该jmp会跳转到KiFastCallEntryDetour函数中,KiFastCallEntryDetour函数代码例如以下:
代码:
复制代码
代码如下:
保存现场
pushfd
pushad
调用KiFastCallEntryFilter函数,实现过滤
pushedi本次系统调用相应的SysCallTable的地址(SSDT或SSDTShadow的地址)
pushebx本次系统调用在SysCallTable中相应的内核函数地址
pusheax本次系统调用相应的内核函数在SysCallTable中的功能号
callKiFastCallEntryFilter调用KiFastCallEntryFilter,实现过滤
mov〔esp10h〕,eax更改本次调用相应的内核函数地址!
恢复现场
popad
popfd
运行KiFastCallEntry函数中被替换掉的指令,并跳回原函数
movedi,esp
cmpesi,g7fff0000
pushgJmpBack
ret
这里须要注意的是callKiFastCallEntryFilter之后的mov〔esp10h〕,eax。之前保存现场时的指令pushad会导致寄存器EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次入栈,并通过后面的popad指令恢复这些寄存器的值。因此此处的mov〔esp10h〕,eax实际上是用KiFastCallEntryFilter函数的返回值来改写堆栈中保存的ebx的值,即改写本次系统调用相应的内核函数地址。
KiFastCallEntryFilter是真正实现过滤的函数,该函数的?数和返回值上文已经说明了,其详细实现分析整理后,C语言描写叙述例如以下:
代码:
复制代码
代码如下:
ULONGstdcallKiFastCallEntryFilter(ULONGulSyscallId,ULONGulSyscallAddr,PULONGpulSyscallTable)
{
PFAKESYSCALLpFakeSysCallNULL;
if(ulSyscallIdgt;0x400)
returnulSyscallAddr;
if(pulSyscallTablegKiServiceTableamp;amp;ulSyscallIdlt;gServiceNum0x11c)
{
pFakeSysCallgFakeSysCallTable〔ulSyscallId〕;SSDT
}
elseif(pulSyscallTablegKeServiceDescriptorTableamp;amp;
gKeServiceDescriptorTableamp;amp;ulSyscallIdlt;gServiceNum0x11c)
{
pFakeSysCallgFakeSysCallTable〔ulSyscallId〕;SSDT
}
elseif(pulSyscallTablegW32pServiceTableAddramp;amp;ulSyscallIdlt;gShadowServiceNum0x29b)
{
pFakeSysCallgFakeSysCallTable〔ulSyscallId1024〕;ShadowSSDT
}
if(pFakeSysCallamp;amp;pFakeSysCallgt;ulFakeSysCallAddr)
{
pFakeSysCallgt;ulOrigSysCallAddrulSyscallAddr;
returnpFakeSysCallgt;ulFakeSysCallAddr;
}
returnulSyscallAddr;
}
这里须要说明的是,TsFltMgr内部有一张表,暂且命名为gFakeSysCallTable,该表中存放的是指向FAKESYSCALL结构的指针。表中的每个FAKESYSCALL结构相应一个系统调用,表的前半部分相应SSDT中的系统调用,1024项以后相应ShadowSSDT里的系统调用。
当中FAKESYSCALL结构大致例如以下(当中非常多域的作用没弄明确):
代码:
复制代码
代码如下:
typedefstructFAKESYSCALL{
ULONGxxx1;
ULONGulSyscallId;该系统调用的功能号
ULONGxxx3;
ULONGulTableIndex;
ULONGxxx5;
ULONGulCountForPreWork;
ULONGulCountForPostWork;
ULONGxxx8;
ULONGulOrigSysCallAddr;真实的系统调用地址
ULONGulFakeSysCallAddr;假的系统调用地址
ULONGxxx11;
ULONGxxx12;
ULONGxxx13;
hellip;hellip;
}FAKESYSCALL,PFAKESYSCALL,PPFAKESYSCALL;
因此KiFastCallEntryFilter函数的所做的就是依据系统调用的功能号在gFakeSysCallTable中索引出相应的pFakeSysCall对象,然后推断该系统调用是否须要hook,假设须要则将真实的系统调用地址保存到pFakeSysCallgt;ulOrigSysCallAddr中,并将pFakeSysCallgt;ulFakeSysCallAddr作为假系统调用的地址返回。
这样的调用过程中动态获取真实系统调用地址的方法使TsFltMgr的Hook框架有较高的兼容性,比如不会使载入顺序晚于TsFltMgr的驱动中的SSDTHook失效,比如QQ电脑管家本身带的TSKsp。sys驱动。
对于我的?试系统(XPSP2),TsFltMgrhook的函数有:
代码:
复制代码
代码如下:
SSDT中:
NtCreateFile、NtCreateKey、NtCreateSection、NtCreateSymbolicLinkObject、NtCreateThread、NtDeleteFile、NtDeleteKey、NtDeleteValueKey、NtDeviceIoControlFile、NtDuplicateObject、NtEnumerateValueKey、NtLoadDriver、NtOpenProcess、NtOpenSection、NtProtectVirtualMemory、NtQueryValueKey、NtRequestWaitReplyPort、NtSetContextThread、NtSetInformationFile、NtSetSystemInformation、NtSetValueKey、NtSuspendThread、NtSystemDebugControl、NtTerminateProcess、NtTerminateThread、NtWriteFile、NtWriteVirtualMemory
ShadowSSDT中:
NtUserBuildHwndList、NtUserFindWindowEx、NtUserGetForegroundWindow、NtUserMoveWindow、NtUserQueryWindow、NtUserSendInput、NtUserSetParent、NtUserSetWindowLong、NtUserSetWindowPlacement、NtUserSetWindowPos、NtUserShowWindow、NtUserShowWindowAsync、NtUserWindowFromPoint
全部假系统函数都有统一的代码框架,假系统函数的代码框架大致例如以下:
代码:
复制代码
代码如下:
NTSTATUSstdcallFakeNtXXX(xxx)
{
PFAKESYSCALLpFakeSysCall;
ULONGulXXX0;
ULONGulStatus;
NTSTATUSstatus;
ULONGLONGullTickCount;
pFakeSysCallgpFakeSysCallNtXXX;该系统调用相应的pFakeSysCall对象
statusSTATUSACCESSDENIED;
貌似是做性能?试时候须要的,实际版本号中gbPerformanceTest为FALSE
if(gbPerformanceTest){
ullTickCountKeQueryInterruptTime();
}
系统调用的调用前处理!
InterlockedIncrement(amp;pFakeSysCallgt;ulCountForPreWork);
ulStatusPreWork(amp;ulXXX,pFakeSysCall);
InterlockedDecrement(amp;pFakeSysCallgt;ulCountForPreWork);
if(ulStatus!0xEEEE0004amp;amp;ulStatus!0xEEEE0005)
{
OrigSysCallpOrigSysCallpFakeSysCallgt;ulOrigSysCallAddr;
调用原始系统调用!
if(pOrigSysCallamp;amp;NTSUCCESS(pOrigSysCall(xxx)))
{
系统调用的调用后处理!
InterlockedIncrement(amp;pFakeSysCallgt;ulCountForPostWork),
ulStatusPostWork(amp;ulXXX),
InterlockedDecrement(amp;pFakeSysCallgt;ulCountForPostWork),
}
}
0xEEEE0004应该是拒绝调用的意思,0xEEEE0005应该是同意调用的意思
if(ulStatus0xEEEE0005)
statusSTATUSSUCCESS;
PsGetCurrentProcessId这个调用的返回值后面并没实用到,可能是多余的
PsGetCurrentProcessId();
貌似是做性能?试时候须要的
if(gpFakeSysCallNtTerminateProcessgt;xxx5amp;amp;ullTickCountamp;amp;gbPerformanceTest){
PerformanceTest(amp;gpFakeSysCallNtTerminateProcessgt;xxx13,ullTickCount);
}
returnstatus;
}
试论基于专业认证的计算机科学与技术人才培养模式探讨与实践1研究背景《华盛顿协议》于1989年由来自美国、英国、加拿大、爱尔兰、澳大利亚、新西兰6个国家的民间工程专业团体发起和签署。2013年6月19日,在韩国首尔召开的国际工程……
除PM2。5空调怎么样除PM2。5空调优势介绍详解现在空气污染是非常的,如果我们出门的话,我们可以发现周围的空气是非常差的,严重的空气污染对我们的身体健康影响是非常大的,所以在很多的车里,我们可以看到有很多的改善空气状况的设备……
怎么进入BIOS各个品牌机进入BIOS的方法详解如何进入BIOS?在计算机领域,BIOS是BasicInputOutputSystem的缩略语,译为基本输入输出系统,与前者读法相同。计算机用户在使用计算机的过程中,都会……
使用u盘需要注意什么使用u盘注意事项详细介绍在我们的日常工作生活中,我们经常使用u盘来拷贝、存储数据等,当然,在使用过程中操作不当,也会造成许多u盘问题,为了避免这样的事情发生,下面IT百科就和大家聊聊使用u盘注意事项。……
集成环保灶品牌有哪些集成环保灶品牌推荐详解集成环保灶也是现在很多家庭都会使用过的灶具了,它相比与传统的灶具而言是有很多的优势的,所以它深受现在很多年轻人的喜爱,那么它应该如何去选购呢?接下来小编就来给大家介绍下集成环保……
学案导学在高中物理教学中的应用摘要:单向灌输式教学模式曾凭借其简易高效、便于教师组织教学的优越性受到教师的青睐,但在基础教育改革过程中,学案导学因其突出学生自主学习、合作探究能力培养,能够克服传统教学模式自……
有关山区农村独生子女在初中阶段行为偏差的教育随着经济的快速发展,农村经济也发生了巨大的变化,特别是农村独生子女家庭的经济条件往往与城市没有了什么区别,学习条件也非常好,按理说他们各方面应该进步更快,但实际情况往往并非如此……
分析电子白板在初中数学教学中的运用初中数学学习的好坏,对于提高学生对以后数学的学习能力,提升学生的数学素养,激发学生的学习兴趣的影响都是颇大的。初中数学相对于小学数学,知识难度上有着不小的提升,对数学思想的要求……
浅析心理咨询技术在班主任谈话中的应用心理咨询技术包括倾听技术、具体化技术、通情达理技术等,在班主任谈话中具有较高的应用价值。本文以上述三种技术为切入点来论述心理咨询技术在班主任谈话中的应用,希望对相关课题的研究有……
简析多媒体辅助教学在数学教学中的应用日趋激烈的国际化竞争归根结底是人才素质的竞争,在经历了市场经济最初洗礼的今天,在即将进入高科技、高竞争的21世纪的今天,我们越来越清楚地看到科学的重要性。随着计算机的普及,现代……
浅析对接市场需求探讨电子商务网站建设课程的教学改革如今,计算机网络发展迅速,已经普及于人们的日常生活中。一些企业利用网络平台进行商务的交易和日常工作的布置,高校中电子商务专业也越来越受学生的关注。电子商务中最典型的例子就是淘宝……
简析信息技术与小学英语教学的有效整合21世纪是网络信息时代,信息技术与课程整合,是当前现代信息技术教育普及过程中的一个热点,也是全面实施素质教育,培养学生创新意识和实践能力的重要手段。所谓的信息技术与课程整合,是……
什么样壁挂炉好如何挑选合适壁挂炉壁挂炉既能用作冬季采暖,又能提供生活热水,一举两得,非常实用。按照燃料划分,壁挂炉又分为燃气壁挂炉、燃油壁挂炉、燃煤壁挂炉、电壁挂炉四种,那么这其中到底哪种壁挂炉好呢?油……
试论我国现阶段经济环境下的反垄断立法的定位(1)论文前言法律作为上层建筑,其产生和实施都受制于经济因素,反垄断法也不例外。反垄断法是现代化社会调整经济的基本法律之一,在西方国家受到高度重视,有着经济宪法、市场经济的基石、自由企业……
红米k40游戏增强版支持一键锁屏按钮吗怎么锁屏红米k40游戏增强版是一款性能出众的手机,那么这款手机中要如何来设置一键锁屏呢?现在就有来自IT百科来为大家介绍一下吧。一、红米k40游戏增强版支持一键锁屏按钮吗红……
医学职称论文代发机构在国内的医学机构中,论文的发表无论在课题申报、课题评奖、职称评定还是在绩效评估、继续教育、津贴发放以及科研文献导读、科研评价等方面都是较重要的指标之一。刊载论文的期刊质量高低也……
医学检验论文写作范文调查全国医学检验结果互认实施现状,分析探讨我国医学检验结果互认工作推进不快的原因,主要原因有:补偿机制、支付方式等制度环境不利于医学检验结果共享;多样的检测系统增加了比对的技术……
中医学术论文摘要的写作与翻译研究中医是中华文化的瑰宝,随着中医药文化的不断对外传播,中医的地位和作用在国际上得到广泛的认可,越来越多的中医论文在国际期刊上发表。国内外学术机构对中医论文的收录与否,很大程度上取……
上海家庭医生制度经验对南京地区的影响摘要:随着医疗改革的不断推进,家庭医生作为分级诊疗中的重要角色,也受到了广泛关注,越来越多的城市尝试家庭医生的设立,推动基层医疗首诊的发展。在这样的大环境之下,针对南京市家庭医……
儿外科住院患儿家属焦虑的原因分析患儿由于生活自理能力及语言表达能力较差,同时对医院环境容易产生害怕、恐惧等情绪,不利于诊断、治疗的顺利进行〔1〕。因此患儿家属扮演着重要的角色,除了照看、护理患儿外,同时要给予……
探讨血站质量管理体系建立后的运转说到写论文,估计很多人都很头痛吧?其实写好论文也挺简单的,只要有了材料,多看看书,论文就容易写了。以下是由品学网范文大全为大家整理的探讨血站质量管理体系建立后的运转,希望对你有……
浅析农村产业结构调整面临的主要矛盾及应对策略近年来,我国特别是东部相对发达地区的农村经济发展态势变化明显,主要表现为经济结构调整加快,农业产业化程度不断提高,农村经济的整体发展特征已由单纯量的扩张逐渐向质的提高方向转变。……
一体化管理在图书情报档案中的应用探讨一体化管理在图书情报档案中的应用探讨随着一体化管理在图书情报档案中的不断应用,通过一体化管理体系建立的集图书、情报、档案信息开发等服务于一体的图书情报服务体系,为用户提供……
试论网络环境下图书情报档案一体化试论网络环境下图书情报档案一体化图书情报档案是集信息技术、传媒技术和计算机技术为一体的综合性学科,也是图书、情报、档案三颗合一的综合性信息科学。在当前的社会发展中,随着信……