CN102737198B - 对象保护方法及装置 - Google Patents

对象保护方法及装置 Download PDF

Info

Publication number
CN102737198B
CN102737198B CN201110092598.8A CN201110092598A CN102737198B CN 102737198 B CN102737198 B CN 102737198B CN 201110092598 A CN201110092598 A CN 201110092598A CN 102737198 B CN102737198 B CN 102737198B
Authority
CN
China
Prior art keywords
function
window
filter
filter function
protection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110092598.8A
Other languages
English (en)
Other versions
CN102737198A (zh
Inventor
高小明
谢飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201110092598.8A priority Critical patent/CN102737198B/zh
Publication of CN102737198A publication Critical patent/CN102737198A/zh
Application granted granted Critical
Publication of CN102737198B publication Critical patent/CN102737198B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种对象保护方法及装置,属于计算机领域。所述方法包括:当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护。所述装置包括:第一处理模块和第二处理模块。本发明解决了windows?64位系统上无法实现对象保护的问题,达到了windows?64位系统上对象保护的效果。

Description

对象保护方法及装置
技术领域
本发明涉及计算机领域,特别涉及一种对象保护方法及装置。
背景技术
进程是一个可执行的程序在计算机上一次运行的过程,它是系统进行资源分配和调度的一个独立单位。在进程的运行过程中,有可能会受到恶意攻击,使得打开的进程被恶意写入、挂起或者关闭,因此,需要对进程进行保护,以避免应用程序有时甚至是系统遭到破坏。
现有技术中采用HOOKSSDT(SystemServicesDescriptorTable,系统服务描述符表)技术对进程进行保护。SSDT中保存有一个庞大的地址索引表,以及一些其它有用的信息,如地址索引的基地址,服务函数个数等。SSDT的功能是把ring3的Win32API(ApplicationProgrammingInterface,应用程序接口)和ring0的内核API联系起来。Ring是windows进行访问控制的级别,分为4层:ring0、ring1、ring2和ring3。其中,操作系统工作在ring0层,可以访问所有层的数据,不受系统的限制;应用程序工作在ring3层,只能访问本层的数据,受系统的限制。HOOK钩子函数是windows消息处理机制的一部分,通过设置钩子可以对系统的消息或事件等进行监控以及过滤。HOOKSSDT技术是指在SSDT中对进程相关的表项设置钩子,以便于对进程进行保护。
但是现有的HOOKSSDT技术受CPU(CentralProcessingUnit,中央处理器)处理能力的限制,只能应用于windows32位系统,即CPUGPRs(General-PurposeRegisters,通用寄存器)的数据宽度只能为32位,处理器一次只能运行32bit数据。如果将HOOKSSDT技术应用于windows64位系统,则进程的监控会被认为是恶意修改而导致蓝屏,从而无法实现对进程的保护。
发明内容
本发明实施例提供了一种对象保护方法及装置,以解决现有技术在windows64位系统中无法实现对象保护的问题。
一种对象保护方法,所述方法包括:
当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护;
其中,所述第一函数是指非窗口对象的被保护函数,所述第一过滤函数为自定义的对所述非窗口对象进行过滤保护的函数,所述过滤保护包括清除所述非窗口对象的危险权限;所述第二函数是指窗口对象的被保护函数,所述第二过滤函数为自定义的对所述窗口对象进行过滤保护的函数,所述过滤保护包括过滤窗口的危险消息或不返回找到的窗口;
所述方法还包括:
预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表ShadowSSDT的基地址;
搜寻所述win32k.sys中任一函数边界的空操作NOP指令,用转移Jmp指令代替所述NOP指令,所述Jmp指令的目标地址为所述第二过滤函数的地址;
对所述Jmp指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;
根据所述ShadowSSDT的基地址,在所述ShadowSSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
所述方法还包括:
预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
所述第一过滤函数执行对所述对象的保护,包括:
所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程;
如果是,则清除所述进程或线程的危险权限。
所述第二过滤函数执行对所述对象的保护,包括:
所述第二过滤函数判断所述窗口对象是否为被保护的窗口;
如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
一种对象保护装置,所述装置包括:
第一处理模块,用于当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
第二处理模块,用于当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护;
其中,所述第一函数是指非窗口对象的被保护函数,所述第一过滤函数为自定义的对所述非窗口对象进行过滤保护的函数,所述过滤保护包括清除所述非窗口对象的危险权限;所述第二函数是指窗口对象的被保护函数,所述第二过滤函数为自定义的对所述窗口对象进行过滤保护的函数,所述过滤保护包括过滤窗口的危险消息或不返回找到的窗口;
所述装置还包括:
第二建立模块,用于预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表ShadowSSDT的基地址;搜寻所述win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替所述NOP指令,所述Jmp指令的目标地址为所述第二过滤函数的地址;对所述转移指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;根据所述ShadowSSDT的基地址,在所述ShadowSSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
所述装置还包括:
第一建立模块,用于预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
所述第一处理模块用于:所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程,如果是,则清除所述进程或线程的危险权限。
所述第二处理模块用于:所述第二过滤函数判断所述窗口对象是否为被保护的窗口,如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
本发明实施例提供的上述技术方案,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件中的钩子或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows64位系统上无法实现对象保护的问题,达到了windows64位系统上对象保护的效果。
附图说明
图1是本发明实施例1提供的对象保护方法流程图;
图2是本发明实施例2提供的对象保护方法流程图;
图3是本发明实施例3提供的对象保护装置一种结构图;
图4是本发明实施例3提供的对象保护装置另一种结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种对象保护方法,包括:
101:当执行非窗口对象的第一函数时,根据注册对象回调函数建立的第一函数与第一过滤函数的关联,跳转到第一过滤函数,第一过滤函数执行对所述非窗口对象的保护;
102:当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或第二函数中的钩子所建立的第二函数与第二过滤函数的关联,跳转到第二过滤函数,第二过滤函数执行对所述窗口对象的保护。
可选地,上述方法还包括:
预先通过注册对象回调函数建立第一函数与第一过滤函数的关联。
可选地,上述方法还包括:
预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表ShadowSSDT的基地址;搜寻win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替该NOP指令,所述转移指令的目标地址为所述第二过滤函数的地址;对所述转移指令的地址相对于win32k.sys的偏移值进行左移4位,再加上第二函数的参数个数,得到一个数值;根据ShadowSSDT的基地址,在ShadowSSDT中用所述数值替换与第二函数对应的表项,建立第二函数与第二过滤函数的关联。
可选地,上述方法还包括:
预先将第二函数中的起始指令替换为目标地址为第二过滤函数的地址的转移Jmp指令,建立第二函数与第二过滤函数的关联。
可选地,第一过滤函数执行对所述非窗口对象的保护,包括:
第一过滤函数判断所述非窗口对象是否为被保护的进程或线程;如果是,则清除所述进程或线程的危险权限。
可选地,第二过滤函数执行对所述窗口对象的保护,包括:
第二过滤函数判断所述窗口对象是否为被保护的窗口;如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
本实施例提供的上述方法,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件中的钩子或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows64位系统上无法实现对象保护的问题,达到了windows64位系统上对象保护的效果。
实施例2
参见图2,本实施例提供了一种对象保护方法,包括:
201:预先通过注册对象回调函数建立非窗口对象的第一函数与第一过滤函数的关联;
其中,非窗口对象包括但不限于进程或线程,第一函数是指非窗口对象的被保护函数,包括NtOpenProcess创建进程函数或NtOpenThread创建线程函数,第一过滤函数为自定义的对该非窗口对象进行过滤保护的函数,该过滤保护包括清除该对象的危险权限。注册对象回调ObRegisterCallbacks函数为windows系统提供的标准API函数,用于为调用者提供可以调用自定义函数的接口,以方便调用者在某些条件下调用该自定义函数。本步骤中,该某些条件是指所述对象的被保护函数被调用,因此,可以在注册对象回调函数的参数中设置第一过滤函数的入口地址,以及所述对象的被保护函数,如NtOpenProcess或NtOpenThread,从而在系统驱动程序加载时就将对象的被保护函数与第一过滤函数关联起来。一旦该对象的被保护函数被调用,则根据该关联会自动按照上述入口地址找到第一过滤函数并执行该第一过滤函数。
本实施例中,线程是操作系统CPU时间的基本单元,是系统中最小的执行单元。它与进程的主要差别在于它们是不同的操作系统资源管理方式。操作系统创建并控制进程,进程包含和控制线程,一个进程可以包含多个线程,而且Windows系统中可以同时运行多个进程。
202:当执行非窗口对象的第一函数时,根据注册对象回调函数建立的第一函数与第一过滤函数的关联,跳转到第一过滤函数;
203:第一过滤函数判断当前的非窗口对象是否为被保护的进程或线程;如果是,则清除该进程或线程的危险权限。
本实施例中,进程或线程均可以拥有多项权限,如创建权限、终止权限、读取权限等等,当需要对进程或线程进行保护时,能够修改、挂起或关闭进程或线程的权限就被视为危险权限,通过清除危险权限可以使得进程或线程在打开的状态下无法被修改、挂起或关闭,从而达到保护的目的。
其中,进程的危险权限可以包括但不限于以下至少一种:
第一过滤函数通过清除上述进程危险权限,可以使得windows64位系统中打开的进程不能被写入、挂起及关闭,从而达到保护进程的目的。
其中,线程的危险权限可以包括但不限于以下至少一种:
第一过滤函数通过清除上述线程危险权限,可以使得windows64位系统中打开的线程不能被写入、挂起及关闭,从而达到保护线程的目的。
204:预先在多用户管理驱动文件中设置钩子,建立窗口对象的第二函数与第二过滤函数的关联;
其中,第二函数是指窗口对象的被保护函数,至少包括以下的一种:
第二过滤函数为自定义的对窗口对象进行过滤保护的函数,该过滤保护包括过滤所述窗口的危险消息或不返回找到的所述窗口。其中,对于被保护的窗口向其发送消息则被视为危险消息,需要进行过滤,另外,查找被保护的窗口也被视为危险行为,需要屏蔽使其查找不到,因此,对于窗口对象的不同被保护函数,执行的过滤操作也不完全相同。下面举例说明上述六种被保护函数对应的过滤操作,具体如下:
a)NtUserPostMessage函数
对应的第二过滤函数执行如下过滤:判断目标窗口是否是被保护的窗口,如果是,则过滤掉危险消息,该危险消息包括:WM_CLOSE消息和WM_QUIT消息。
b)NtUserFindWindowEx函数
对应的第二过滤函数执行如下过滤:调用真实的NtUserFindWindowEx函数查找窗口,如果找到的窗口是被保护的窗口,则返回空,否则返回找到窗口的句柄。
c)NtUserBuildHwndList函数
对应的第二过滤函数执行如下过滤:调用真实的NtUserBuildHwndList函数生成窗口列表,然后遍历该窗口列表,将被保护的窗口从该窗口列表中删掉,然后系统调用返回。
d)NtUserWindowFromPoint函数
对应的过滤函数执行如下过滤:调用真实的NtUserWindowFromPoint函数获取窗口,如果找到的窗口是被保护的窗口,则返回空,否则返回找到的窗口。
e)NtUserSendInput函数
对应的过滤函数执行如下过滤:判断目标窗口是否是被保护的窗口,并且输入参数中含有鼠标或者键盘消息,如果是,则返回失败,否则调用真实的NtUserSendInput函数发送。
f)NtUserGetForeGroundWindow函数
对应的过滤函数执行如下过滤:调用真实的NtUserGetForeGroundWindow函数获取前台窗口,如果该前台窗口是属于被保护进程的,则返回空,否则返回前台窗口。
本步骤在多用户管理驱动文件中设置钩子,建立窗口对象的第二函数与第二过滤函数的关联的具体过程可以如下:
1)为win32k.sys对ntoskrnl.exe的导入表中的KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表ShadowSSDT的基地址;其中,win32k.sys文件是Windows系统中的多用户管理的驱动文件,一般在c:\Windows\System32\Dllcache目录下有此文件的备份;
2)搜寻win32k.sys中任一函数边界的NOP指令,NOP指令是用于函数在内存空间对齐的填充指令,因此可以将其替换为别的指令且不会对程序造成影响;
3)用转移Jmp指令代替该NOP指令,该Jmp指令的目标地址为第二过滤函数的地址,从而保证执行到Jmp指令时可以按照该目标地址跳转到第二过滤函数;
4)对Jmp指令的地址相对于win32k.sys的偏移值进行左移4位,再加上第二函数的参数个数,得到一个数值,其中,该数值是用来替换ShadowSSDT中的表项的,因此该数值是按照windows64位系统的ShadowSSDT中表项的计算方法得到的;
5)根据上述得到的ShadowSSDT的基地址,在ShadowSSDT中用该数值替换其中与第二函数对应的表项,建立第二函数与第二过滤函数的关联。
205:当执行窗口对象的第二函数时,根据第二函数与第二过滤函数的关联,跳转到第二过滤函数;
206:第二过滤函数判断当前对象是否为被保护的窗口;如果是,则过滤该窗口的危险消息或不返回查找到的窗口,从而保证窗口对象的安全。
本实施例中204还可以由以下步骤替换:
预先将窗口对象的第二函数中的起始指令替换为目标地址为第二过滤函数的地址的转移Jmp指令,建立第二函数和第二过滤函数的关联。
本实施例提供的上述方法应用于windows64位系统。其中,64位是指CPUGPRs通用寄存器的数据宽度为64位,与32位处理器一次只能处理32位即4个字节的数据明显不同,64位处理器一次就能处理64位即8个字节的数据。
另外,本发明实施例还提供了windows32位系统上的对象保护方法,包括:分别为SSDT和ShadowSSDT设置钩子HOOK,当执行非窗口对象的被保护函数时,通过HOOKSSDT关联的过滤函数对进程或线程进行保护,当执行窗口对象的被保护函数时,通过HOOKShadowSSDT关联的过滤函数对窗口进行保护。
其中,在windows32位系统中为SSDT设置钩子的过程如下:提升当前IRQL到DPC_LEVEL;关中断;清除CR0寄存器的WP位;原子写入操作替换SSDT项;恢复CR0寄存器的WP位;开中断;恢复当前IRQL。在windows32位上为ShadowSSDT设置钩子的过程如下:找到Csrss.exe进程,KeStackAttachProcess切换到Csrss;从当前线程结构中找到ShadowSSDT的指针;提升当前IRQL到DPC_DEVEL;关中断;清除CR0寄存器的WP位;原子写入操作替换SSDT项;恢复CR0寄存器的WP位;开中断;恢复当前IRQL。
在windows32位系统上对进程或线程进行保护时,涉及的进程危险权限以及线程危险权限均与上述windows64位系统中的描述相同,涉及的窗口对象被保护的函数以及对应的过滤操作也与上述windows64位系统中的描述相同,此处不赘述。
本实施例提供的上述方法,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows64位系统上无法实现对象保护的问题,达到了windows64位系统上对象保护的效果。
实施例3
参见图3,本实施例提供了一种对象保护装置,包括:
第一处理模块301,用于当执行非窗口对象的第一函数时,根据注册对象回调函数建立的第一函数与第一过滤函数的关联,跳转到第一过滤函数,第一过滤函数执行对非窗口对象的保护;
第二处理模块302,用于当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或第二函数中的钩子所建立的第二函数与第二过滤函数的关联,跳转到第二过滤函数,第二过滤函数执行对窗口对象的保护。
参见图4,本实施例中,所述装置还可以包括:
第一建立模块303,用于预先通过注册对象回调函数建立第一函数与第一过滤函数的关联。
本实施例中,所述装置还可以包括:
第二建立模块304,用于预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表ShadowSSDT的基地址;搜寻win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替该NOP指令,所述转移指令的目标地址为第二过滤函数的地址;对所述转移指令的地址相对于win32k.sys的偏移值进行左移4位,再加上第二函数的参数个数,得到一个数值;根据所述ShadowSSDT的基地址,在ShadowSSDT中用所述数值替换与第二函数对应的表项,建立第二函数与第二过滤函数的关联;
或者包括:
第三建立模块305,用于预先将第二函数中的起始指令替换为目标地址为第二过滤函数的地址的转移Jmp指令,建立第二函数与第二过滤函数的关联。
本实施例中,第一处理模块301可以用于:第一过滤函数判断非窗口对象是否为被保护的进程或线程,如果是,则清除所述进程或线程的危险权限。
本实施例中,第二处理模块302可以用于:第二过滤函数判断窗口对象是否为被保护的窗口,如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
本实施例提供的上述装置,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows64位系统上无法实现对象保护的问题,达到了windows64位系统上对象保护的效果。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种对象保护方法,其特征在于,所述方法包括:
当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护;
其中,所述第一函数是指非窗口对象的被保护函数,所述第一过滤函数为自定义的对所述非窗口对象进行过滤保护的函数,所述过滤保护包括清除所述非窗口对象的危险权限;所述第二函数是指窗口对象的被保护函数,所述第二过滤函数为自定义的对所述窗口对象进行过滤保护的函数,所述过滤保护包括过滤窗口的危险消息或不返回找到的窗口;
所述方法还包括:
预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表ShadowSSDT的基地址;
搜寻所述win32k.sys中任一函数边界的空操作NOP指令,用转移Jmp指令代替所述NOP指令,所述Jmp指令的目标地址为所述第二过滤函数的地址;
对所述Jmp指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;
根据所述ShadowSSDT的基地址,在所述ShadowSSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
3.根据权利要求1所述的方法,其特征在于,所述第一过滤函数执行对所述非窗口对象的保护,包括:
所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程;
如果是,则清除所述进程或线程的危险权限。
4.根据权利要求1所述的方法,其特征在于,所述第二过滤函数执行对所述窗口对象的保护,包括:
所述第二过滤函数判断所述窗口对象是否为被保护的窗口;
如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
5.一种对象保护装置,其特征在于,所述装置包括:
第一处理模块,用于当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
第二处理模块,用于当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护;
其中,所述第一函数是指非窗口对象的被保护函数,所述第一过滤函数为自定义的对所述非窗口对象进行过滤保护的函数,所述过滤保护包括清除所述非窗口对象的危险权限;所述第二函数是指窗口对象的被保护函数,所述第二过滤函数为自定义的对所述窗口对象进行过滤保护的函数,所述过滤保护包括过滤窗口的危险消息或不返回找到的窗口;
所述装置还包括:
第二建立模块,用于预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表ShadowSSDT的基地址;搜寻所述win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替所述NOP指令,所述Jmp指令的目标地址为所述第二过滤函数的地址;对所述转移指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;根据所述ShadowSSDT的基地址,在所述ShadowSSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第一建立模块,用于预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
7.根据权利要求5所述的装置,其特征在于,所述第一处理模块用于:所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程,如果是,则清除所述进程或线程的危险权限。
8.根据权利要求5所述的装置,其特征在于,所述第二处理模块用于:所述第二过滤函数判断所述窗口对象是否为被保护的窗口,如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
CN201110092598.8A 2011-04-13 2011-04-13 对象保护方法及装置 Active CN102737198B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110092598.8A CN102737198B (zh) 2011-04-13 2011-04-13 对象保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110092598.8A CN102737198B (zh) 2011-04-13 2011-04-13 对象保护方法及装置

Publications (2)

Publication Number Publication Date
CN102737198A CN102737198A (zh) 2012-10-17
CN102737198B true CN102737198B (zh) 2015-11-18

Family

ID=46992685

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110092598.8A Active CN102737198B (zh) 2011-04-13 2011-04-13 对象保护方法及装置

Country Status (1)

Country Link
CN (1) CN102737198B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123492A (zh) * 2014-07-21 2014-10-29 蓝盾信息安全技术有限公司 一种Windows的进程保护方法
CN104899512A (zh) * 2015-05-26 2015-09-09 浪潮电子信息产业股份有限公司 一种Windows系统服务描述符表防篡改装置及方法
CN106096391B (zh) * 2016-06-02 2019-05-03 珠海豹趣科技有限公司 一种进程控制方法及用户终端
CN114428951B (zh) * 2022-04-01 2022-07-01 北京时代亿信科技股份有限公司 网络文件系统访问权限的控制方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414339A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 保护进程内存及确保驱动程序加载的安全性的方法
US7703081B1 (en) * 2005-09-22 2010-04-20 Symantec Corporation Fast system call hooking on x86-64 bit windows XP platforms

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7703081B1 (en) * 2005-09-22 2010-04-20 Symantec Corporation Fast system call hooking on x86-64 bit windows XP platforms
CN101414339A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 保护进程内存及确保驱动程序加载的安全性的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HOOK API时代码注入方法和函数重定向技术研究;舒敬荣、朱安国、齐善明;《计算机应用与软件》;20090531;第26卷(第05期);第4部分42节第1段 *
Ring0中Inline Hook Shadow SSDT实现窗体保护;胡文亮;《黑客防线》;20091231(第11期);86页第一栏第2-6段,第三栏,87页第一栏第1段,88页第2-3段,89页 *

Also Published As

Publication number Publication date
CN102737198A (zh) 2012-10-17

Similar Documents

Publication Publication Date Title
US20220091875A1 (en) Cloud native virtual machine runtime protection
CN101334825B (zh) 应用程序管理和运行系统及方法
JP2012212391A (ja) 不正アクセスに対する防御をするシステム、方法およびプログラム
CN102147763B (zh) 一种网络日志的记录方法、系统及计算机
CN104598823A (zh) 一种安卓系统中内核级rootkit检测方法及其系统
CN103399812A (zh) 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法
US9104859B1 (en) Systems and methods for scanning data stored on cloud computing platforms
CN105138905A (zh) Linux应用程序的隔离运行方法
CN101645020A (zh) 虚拟操作系统创建方法
CN102737198B (zh) 对象保护方法及装置
CN103810429A (zh) 基于桌面云虚拟化技术的电脑病毒查杀方法
CN108388793B (zh) 一种基于主动防御的虚拟机逃逸防护方法
CN102194079B (zh) 文件访问过滤方法
CN101395587B (zh) 防止可执行程序被修改
CN105204973A (zh) 云平台下基于虚拟机技术的异常行为监测分析系统及方法
CN105447397A (zh) 一种基于内核模块的文件密级标识的方法
CN102222189A (zh) 一种保护操作系统的方法
CN105453104B (zh) 系统保护用文件安全管理装置和管理方法
US20140222496A1 (en) Determining cost and risk associated with assets of an information technology environment
CN105229658A (zh) 数据处理系统的安全装置和安全方法
CN105550582A (zh) 访问虚拟磁盘的方法及系统
CN105574380A (zh) 一种终端管理应用权限的方法和装置
CN1920786A (zh) 实现操作系统安全控制的系统及方法
CN109063516B (zh) 数据处理器
CN101685396A (zh) 对功能图标进行控制的系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant