CN102737198A - 对象保护方法及装置 - Google Patents
对象保护方法及装置 Download PDFInfo
- Publication number
- CN102737198A CN102737198A CN2011100925988A CN201110092598A CN102737198A CN 102737198 A CN102737198 A CN 102737198A CN 2011100925988 A CN2011100925988 A CN 2011100925988A CN 201110092598 A CN201110092598 A CN 201110092598A CN 102737198 A CN102737198 A CN 102737198A
- Authority
- CN
- China
- Prior art keywords
- function
- filter function
- window
- filter
- 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.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种对象保护方法及装置,属于计算机领域。所述方法包括:当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护。所述装置包括:第一处理模块和第二处理模块。本发明解决了windows 64位系统上无法实现对象保护的问题,达到了windows 64位系统上对象保护的效果。
Description
技术领域
本发明涉及计算机领域,特别涉及一种对象保护方法及装置。
背景技术
进程是一个可执行的程序在计算机上一次运行的过程,它是系统进行资源分配和调度的一个独立单位。在进程的运行过程中,有可能会受到恶意攻击,使得打开的进程被恶意写入、挂起或者关闭,因此,需要对进程进行保护,以避免应用程序有时甚至是系统遭到破坏。
现有技术中采用HOOK SSDT(System Services Descriptor Table,系统服务描述符表)技术对进程进行保护。SSDT中保存有一个庞大的地址索引表,以及一些其它有用的信息,如地址索引的基地址,服务函数个数等。SSDT的功能是把ring3的Win32API(Application Programming Interface,应用程序接口)和ring0的内核API联系起来。Ring是windows进行访问控制的级别,分为4层:ring0、ring1、ring2和ring3。其中,操作系统工作在ring0层,可以访问所有层的数据,不受系统的限制;应用程序工作在ring3层,只能访问本层的数据,受系统的限制。HOOK钩子函数是windows消息处理机制的一部分,通过设置钩子可以对系统的消息或事件等进行监控以及过滤。HOOK SSDT技术是指在SSDT中对进程相关的表项设置钩子,以便于对进程进行保护。
但是现有的HOOK SSDT技术受CPU(Central Processing Unit,中央处理器)处理能力的限制,只能应用于windows 32位系统,即CPU GPRs(General-PurposeRegisters,通用寄存器)的数据宽度只能为32位,处理器一次只能运行32bit数据。如果将HOOK SSDT技术应用于windows 64位系统,则进程的监控会被认为是恶意修改而导致蓝屏,从而无法实现对进程的保护。
发明内容
本发明实施例提供了一种对象保护方法及装置,以解决现有技术在windows64位系统中无法实现对象保护的问题。
一种对象保护方法,所述方法包括:
当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护。
所述方法还包括:
预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
所述方法还包括:
预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表Shadow SSDT的基地址;
搜寻所述win32k.sys中任一函数边界的空操作NOP指令,用转移Jmp指令代替所述NOP指令,所述转移指令的目标地址为所述第二过滤函数的地址;
对所述Jmp指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;
根据所述Shadow SSDT的基地址,在所述Shadow SSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
所述方法还包括:
预先将所述第二函数中的起始指令替换为目标地址为所述第二过滤函数的地址的转移Jmp指令,建立所述第二函数与所述第二过滤函数的关联。
所述第一过滤函数执行对所述对象的保护,包括:
所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程;
如果是,则清除所述进程或线程的危险权限。
所述第二过滤函数执行对所述对象的保护,包括:
所述第二过滤函数判断所述窗口对象是否为被保护的窗口;
如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
一种对象保护装置,所述装置包括:
第一处理模块,用于当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
第二处理模块,用于当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护。
所述装置还包括:
第一建立模块,用于预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
所述装置还包括:
第二建立模块,用于预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表Shadow SSDT的基地址;搜寻所述win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替所述NOP指令,所述转移指令的目标地址为所述第二过滤函数的地址;对所述转移指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;根据所述Shadow SSDT的基地址,在所述Shadow SSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
所述装置还包括:
第三建立模块,用于预先将所述第二函数中的起始指令替换为目标地址为所述第二过滤函数的地址的转移Jmp指令,建立所述第二函数与所述第二过滤函数的关联。
所述第一处理模块用于:所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程,如果是,则清除所述进程或线程的危险权限。
所述第二处理模块用于:所述第二过滤函数判断所述窗口对象是否为被保护的窗口,如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
本发明实施例提供的上述技术方案,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件中的钩子或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows 64位系统上无法实现对象保护的问题,达到了windows 64位系统上对象保护的效果。
附图说明
图1是本发明实施例1提供的对象保护方法流程图;
图2是本发明实施例2提供的对象保护方法流程图;
图3是本发明实施例3提供的对象保护装置一种结构图;
图4是本发明实施例3提供的对象保护装置另一种结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种对象保护方法,包括:
101:当执行非窗口对象的第一函数时,根据注册对象回调函数建立的第一函数与第一过滤函数的关联,跳转到第一过滤函数,第一过滤函数执行对所述非窗口对象的保护;
102:当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或第二函数中的钩子所建立的第二函数与第二过滤函数的关联,跳转到第二过滤函数,第二过滤函数执行对所述窗口对象的保护。
可选地,上述方法还包括:
预先通过注册对象回调函数建立第一函数与第一过滤函数的关联。
可选地,上述方法还包括:
预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表Shadow SSDT的基地址;搜寻win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替该NOP指令,所述转移指令的目标地址为所述第二过滤函数的地址;对所述转移指令的地址相对于win32k.sys的偏移值进行左移4位,再加上第二函数的参数个数,得到一个数值;根据Shadow SSDT的基地址,在Shadow SSDT中用所述数值替换与第二函数对应的表项,建立第二函数与第二过滤函数的关联。
可选地,上述方法还包括:
预先将第二函数中的起始指令替换为目标地址为第二过滤函数的地址的转移Jmp指令,建立第二函数与第二过滤函数的关联。
可选地,第一过滤函数执行对所述非窗口对象的保护,包括:
第一过滤函数判断所述非窗口对象是否为被保护的进程或线程;如果是,则清除所述进程或线程的危险权限。
可选地,第二过滤函数执行对所述窗口对象的保护,包括:
第二过滤函数判断所述窗口对象是否为被保护的窗口;如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
本实施例提供的上述方法,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件中的钩子或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows 64位系统上无法实现对象保护的问题,达到了windows 64位系统上对象保护的效果。
实施例2
参见图2,本实施例提供了一种对象保护方法,包括:
201:预先通过注册对象回调函数建立非窗口对象的第一函数与第一过滤函数的关联;
其中,非窗口对象包括但不限于进程或线程,第一函数是指非窗口对象的被保护函数,包括NtOpenProcess创建进程函数或NtOpenThread创建线程函数,第一过滤函数为自定义的对该非窗口对象进行过滤保护的函数,该过滤保护包括清除该对象的危险权限。注册对象回调ObRegisterCallbacks函数为windows系统提供的标准API函数,用于为调用者提供可以调用自定义函数的接口,以方便调用者在某些条件下调用该自定义函数。本步骤中,该某些条件是指所述对象的被保护函数被调用,因此,可以在注册对象回调函数的参数中设置第一过滤函数的入口地址,以及所述对象的被保护函数,如NtOpenProcess或NtOpenThread,从而在系统驱动程序加载时就将对象的被保护函数与第一过滤函数关联起来。一旦该对象的被保护函数被调用,则根据该关联会自动按照上述入口地址找到第一过滤函数并执行该第一过滤函数。
本实施例中,线程是操作系统CPU时间的基本单元,是系统中最小的执行单元。它与进程的主要差别在于它们是不同的操作系统资源管理方式。操作系统创建并控制进程,进程包含和控制线程,一个进程可以包含多个线程,而且Windows系统中可以同时运行多个进程。
202:当执行非窗口对象的第一函数时,根据注册对象回调函数建立的第一函数与第一过滤函数的关联,跳转到第一过滤函数;
203:第一过滤函数判断当前的非窗口对象是否为被保护的进程或线程;如果是,则清除该进程或线程的危险权限。
本实施例中,进程或线程均可以拥有多项权限,如创建权限、终止权限、读取权限等等,当需要对进程或线程进行保护时,能够修改、挂起或关闭进程或线程的权限就被视为危险权限,通过清除危险权限可以使得进程或线程在打开的状态下无法被修改、挂起或关闭,从而达到保护的目的。
其中,进程的危险权限可以包括但不限于以下至少一种:
PROCESS_CREATE_THREAD;//创建一个线程的权限
PROCESS_SET_INFORMATION;//设置进程属性的权限
PROCESS_SUSPEND_RESUME;//暂停或恢复进程的权限
PROCESS_TERMINATE;//终止一个进程的权限
PROCESS_VM_OPERATION;//操作进程内存空间的权限
PROCESS_VM_WRITE;//读取进程内存空间的权限
第一过滤函数通过清除上述进程危险权限,可以使得windows 64位系统中打开的进程不能被写入、挂起及关闭,从而达到保护进程的目的。
其中,线程的危险权限可以包括但不限于以下至少一种:
THREAD_TERMINATE; //终止一个线程的权限
THREAD_SUSPEND_RESUME; //暂停或恢复线程的权限
THREAD_SET_CONTEXT; //设置线程的上下文的权限
THREAD_SET_INFORMATION; //设置线程属性的权限
WRITE_DAC; //修改线程的访问控制列表的权限
WRITE_OWNER; //修改线程安全属性所有者的权限
第一过滤函数通过清除上述线程危险权限,可以使得windows 64位系统中打开的线程不能被写入、挂起及关闭,从而达到保护线程的目的。
204:预先在多用户管理驱动文件中设置钩子,建立窗口对象的第二函数与第二过滤函数的关联;
其中,第二函数是指窗口对象的被保护函数,至少包括以下的一种:
NtUserPostMessage; //投递消息
NtUserFindWindowEx; //查找窗口
NtUserBuildHwndList; //枚举窗口
NtUserWindowFromPoint; //根据屏幕上的点查找窗口
NtUserSendInput; //向窗口发送输入消息
NtUserGetForeGroundWindow;//获取前台窗口
第二过滤函数为自定义的对窗口对象进行过滤保护的函数,该过滤保护包括过滤所述窗口的危险消息或不返回找到的所述窗口。其中,对于被保护的窗口向其发送消息则被视为危险消息,需要进行过滤,另外,查找被保护的窗口也被视为危险行为,需要屏蔽使其查找不到,因此,对于窗口对象的不同被保护函数,执行的过滤操作也不完全相同。下面举例说明上述六种被保护函数对应的过滤操作,具体如下:
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函数设置钩子,得到影子系统服务描述符表Shadow SSDT的基地址;其中,win32k.sys文件是Windows系统中的多用户管理的驱动文件,一般在c:\Windows\System32\Dllcache目录下有此文件的备份;
2)搜寻win32k.sys中任一函数边界的NOP指令,NOP指令是用于函数在内存空间对齐的填充指令,因此可以将其替换为别的指令且不会对程序造成影响;
3)用转移Jmp指令代替该NOP指令,该Jmp指令的目标地址为第二过滤函数的地址,从而保证执行到Jmp指令时可以按照该目标地址跳转到第二过滤函数;
4)对Jmp指令的地址相对于win32k.sys的偏移值进行左移4位,再加上第二函数的参数个数,得到一个数值,其中,该数值是用来替换Shadow SSDT中的表项的,因此该数值是按照windows 64位系统的Shadow SSDT中表项的计算方法得到的;
5)根据上述得到的Shadow SSDT的基地址,在Shadow SSDT中用该数值替换其中与第二函数对应的表项,建立第二函数与第二过滤函数的关联。
205:当执行窗口对象的第二函数时,根据第二函数与第二过滤函数的关联,跳转到第二过滤函数;
206:第二过滤函数判断当前对象是否为被保护的窗口;如果是,则过滤该窗口的危险消息或不返回查找到的窗口,从而保证窗口对象的安全。
本实施例中204还可以由以下步骤替换:
预先将窗口对象的第二函数中的起始指令替换为目标地址为第二过滤函数的地址的转移Jmp指令,建立第二函数和第二过滤函数的关联。
本实施例提供的上述方法应用于windows 64位系统。其中,64位是指CPUGPRs通用寄存器的数据宽度为64位,与32位处理器一次只能处理32位即4个字节的数据明显不同,64位处理器一次就能处理64位即8个字节的数据。
另外,本发明实施例还提供了windows 32位系统上的对象保护方法,包括:分别为SSDT和Shadow SSDT设置钩子HOOK,当执行非窗口对象的被保护函数时,通过HOOK SSDT关联的过滤函数对进程或线程进行保护,当执行窗口对象的被保护函数时,通过HOOK Shadow SSDT关联的过滤函数对窗口进行保护。
其中,在windows 32位系统中为SSDT设置钩子的过程如下:提升当前IRQL到DPC LEVEL;关中断;清除CR0寄存器的WP位;原子写入操作替换SSDT项;恢复CR0寄存器的WP位;开中断;恢复当前IRQL。在windows 32位上为Shadow SSDT设置钩子的过程如下:找到Csrss.exe进程,KeStackAttachProcess切换到Csrss;从当前线程结构中找到Shadow SSDT的指针;提升当前IRQL到DPC DEVEL;关中断;清除CR0寄存器的WP位;原子写入操作替换SSDT项;恢复CR0寄存器的WP位;开中断;恢复当前IRQL。
在windows 32位系统上对进程或线程进行保护时,涉及的进程危险权限以及线程危险权限均与上述windows 64位系统中的描述相同,涉及的窗口对象被保护的函数以及对应的过滤操作也与上述windows 64位系统中的描述相同,此处不赘述。
本实施例提供的上述方法,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows 64位系统上无法实现对象保护的问题,达到了windows 64位系统上对象保护的效果。
实施例3
参见图3,本实施例提供了一种对象保护装置,包括:
第一处理模块301,用于当执行非窗口对象的第一函数时,根据注册对象回调函数建立的第一函数与第一过滤函数的关联,跳转到第一过滤函数,第一过滤函数执行对非窗口对象的保护;
第二处理模块302,用于当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或第二函数中的钩子所建立的第二函数与第二过滤函数的关联,跳转到第二过滤函数,第二过滤函数执行对窗口对象的保护。
参见图4,本实施例中,所述装置还可以包括:
第一建立模块303,用于预先通过注册对象回调函数建立第一函数与第一过滤函数的关联。
本实施例中,所述装置还可以包括:
第二建立模块304,用于预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表Shadow SSDT的基地址;搜寻win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替该NOP指令,所述转移指令的目标地址为第二过滤函数的地址;对所述转移指令的地址相对于win32k.sys的偏移值进行左移4位,再加上第二函数的参数个数,得到一个数值;根据所述Shadow SSDT的基地址,在Shadow SSDT中用所述数值替换与第二函数对应的表项,建立第二函数与第二过滤函数的关联;
或者包括:
第三建立模块305,用于预先将第二函数中的起始指令替换为目标地址为第二过滤函数的地址的转移Jmp指令,建立第二函数与第二过滤函数的关联。
本实施例中,第一处理模块301可以用于:第一过滤函数判断非窗口对象是否为被保护的进程或线程,如果是,则清除所述进程或线程的危险权限。
本实施例中,第二处理模块302可以用于:第二过滤函数判断窗口对象是否为被保护的窗口,如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
本实施例提供的上述装置,通过注册对象回调函数关联第一函数与第一过滤函数,实现对非窗口对象的保护,通过多用户管理驱动文件或第二函数中的钩子关联第二函数与第二过滤函数,实现对窗口对象的保护,解决了windows 64位系统上无法实现对象保护的问题,达到了windows 64位系统上对象保护的效果。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种对象保护方法,其特征在于,所述方法包括:
当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表Shadow SSDT的基地址;
搜寻所述win32k.sys中任一函数边界的空操作NOP指令,用转移Jmp指令代替所述NOP指令,所述转移指令的目标地址为所述第二过滤函数的地址;
对所述Jmp指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;
根据所述Shadow SSDT的基地址,在所述Shadow SSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先将所述第二函数中的起始指令替换为目标地址为所述第二过滤函数的地址的转移Jmp指令,建立所述第二函数与所述第二过滤函数的关联。
5.根据权利要求1所述的方法,其特征在于,所述第一过滤函数执行对所述非窗口对象的保护,包括:
所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程;
如果是,则清除所述进程或线程的危险权限。
6.根据权利要求1所述的方法,其特征在于,所述第二过滤函数执行对所述窗口对象的保护,包括:
所述第二过滤函数判断所述窗口对象是否为被保护的窗口;
如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
7.一种对象保护装置,其特征在于,所述装置包括:
第一处理模块,用于当执行非窗口对象的第一函数时,根据注册对象回调函数建立的所述第一函数与第一过滤函数的关联,跳转到所述第一过滤函数,所述第一过滤函数执行对所述非窗口对象的保护;
第二处理模块,用于当执行窗口对象的第二函数时,根据多用户管理驱动文件中的钩子或所述第二函数中的钩子所建立的所述第二函数与第二过滤函数的关联,跳转到所述第二过滤函数,所述第二过滤函数执行对所述窗口对象的保护。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一建立模块,用于预先通过注册对象回调函数建立所述第一函数与所述第一过滤函数的关联。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二建立模块,用于预先为多用户管理驱动文件win32k.sys对ntoskrnl.exe的导入表中的添加系统服务表KeAddSystemServiceTable函数设置钩子,得到影子系统服务描述符表Shadow SSDT的基地址;搜寻所述win32k.sys中任一函数边界的空操作NOP指令;用转移Jmp指令代替所述NOP指令,所述转移指令的目标地址为所述第二过滤函数的地址;对所述转移指令的地址相对于所述win32k.sys的偏移值进行左移4位,再加上所述第二函数的参数个数,得到一个数值;根据所述Shadow SSDT的基地址,在所述Shadow SSDT中用所述数值替换与所述第二函数对应的表项,建立所述第二函数与所述第二过滤函数的关联。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第三建立模块,用于预先将所述第二函数中的起始指令替换为目标地址为所述第二过滤函数的地址的转移Jmp指令,建立所述第二函数与所述第二过滤函数的关联。
11.根据权利要求7所述的装置,其特征在于,所述第一处理模块用于:所述第一过滤函数判断所述非窗口对象是否为被保护的进程或线程,如果是,则清除所述进程或线程的危险权限。
12.根据权利要求7所述的装置,其特征在于,所述第二处理模块用于:所述第二过滤函数判断所述窗口对象是否为被保护的窗口,如果是,则过滤所述窗口的危险消息或不返回找到的所述窗口。
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 true CN102737198A (zh) | 2012-10-17 |
CN102737198B 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) |
Cited By (4)
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系统服务描述符表防篡改装置及方法 |
CN106096391A (zh) * | 2016-06-02 | 2016-11-09 | 北京金山安全软件有限公司 | 一种进程控制方法及用户终端 |
CN114428951A (zh) * | 2022-04-01 | 2022-05-03 | 北京时代亿信科技股份有限公司 | 网络文件系统访问权限的控制方法及装置 |
Citations (2)
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 |
-
2011
- 2011-04-13 CN CN201110092598.8A patent/CN102737198B/zh active Active
Patent Citations (2)
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)
Title |
---|
胡文亮: "Ring0中Inline Hook Shadow SSDT实现窗体保护", 《黑客防线》 * |
舒敬荣、朱安国、齐善明: "HOOK API时代码注入方法和函数重定向技术研究", 《计算机应用与软件》 * |
Cited By (5)
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系统服务描述符表防篡改装置及方法 |
CN106096391A (zh) * | 2016-06-02 | 2016-11-09 | 北京金山安全软件有限公司 | 一种进程控制方法及用户终端 |
CN106096391B (zh) * | 2016-06-02 | 2019-05-03 | 珠海豹趣科技有限公司 | 一种进程控制方法及用户终端 |
CN114428951A (zh) * | 2022-04-01 | 2022-05-03 | 北京时代亿信科技股份有限公司 | 网络文件系统访问权限的控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102737198B (zh) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9460270B2 (en) | Generating child virtual machine to execute authorized application with reduced risk of malware attack | |
CN101359355B (zh) | Windows系统下受限帐户提升用户权限的方法 | |
CN102592077B (zh) | 提供安全边界的方法 | |
CN101334825B (zh) | 应用程序管理和运行系统及方法 | |
CN1700171A (zh) | 提供从虚拟环境对硬件的直接访问 | |
CN1722092A (zh) | Vex-虚拟扩展框架 | |
EP2350905A1 (en) | Data leak protection application | |
JP2012212391A (ja) | 不正アクセスに対する防御をするシステム、方法およびプログラム | |
CN101004681A (zh) | 嵌入式系统动态补丁长跳转的实现方法 | |
CN104461876A (zh) | 一种基于运行快照序列的并行程序重现调试方法 | |
CN104866762A (zh) | 安全管理程序功能 | |
CN108388793B (zh) | 一种基于主动防御的虚拟机逃逸防护方法 | |
CN102194079B (zh) | 文件访问过滤方法 | |
CN101446918A (zh) | 一种实现用户态调试器调试单个函数的方法及系统 | |
CN105187241A (zh) | 一种基于linux内核的日志记录方法及系统 | |
CN102737198B (zh) | 对象保护方法及装置 | |
CN104572394A (zh) | 进程监控方法及装置 | |
GB2489790A (en) | Dual trust architecture | |
CN102222189A (zh) | 一种保护操作系统的方法 | |
Schneider et al. | Migration of automotive real-time software to multicore systems: First steps towards an automated solution | |
CN110807191B (zh) | 一种应用程序的安全运行方法及装置 | |
CN112818341B (zh) | 一种基于操作系统过滤层驱动的外接设备管控方法及装置 | |
CN102012982A (zh) | 一种保护智能设备安全运行的方法及装置 | |
CN103019760B (zh) | 安装软件的结构及安装方法 | |
CN105550582A (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 |