CN102831344A - 一种进程的处理方法和装置 - Google Patents

一种进程的处理方法和装置 Download PDF

Info

Publication number
CN102831344A
CN102831344A CN2012102664173A CN201210266417A CN102831344A CN 102831344 A CN102831344 A CN 102831344A CN 2012102664173 A CN2012102664173 A CN 2012102664173A CN 201210266417 A CN201210266417 A CN 201210266417A CN 102831344 A CN102831344 A CN 102831344A
Authority
CN
China
Prior art keywords
message
function
hook
call
local
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
Application number
CN2012102664173A
Other languages
English (en)
Other versions
CN102831344B (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.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
360 Digital Security Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201210266417.3A priority Critical patent/CN102831344B/zh
Publication of CN102831344A publication Critical patent/CN102831344A/zh
Application granted granted Critical
Publication of CN102831344B publication Critical patent/CN102831344B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种进程的处理方法和装置,能够防止恶意进程通过使用DLL文件和全局消息钩子侵入安全软件,进而使恶意进程无法阻止安全软件的检测。所述的方法包括:线程创建时,在系统中注册各类本地消息钩子,其中,所述本地消息钩子与系统中的消息函数具有对应关系;线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,其中,所述消息函数包括窗口创建函数;通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数。

Description

一种进程的处理方法和装置
技术领域
本申请涉及计算机安全技术,特别是涉及一种进程的处理方法和装置。
背景技术
当进程中的线程创建或关闭一个窗口时,会查找所述线程是否存在消息钩子,所述消息钩子包括本地消息钩子和全局消息钩子,其中,本地消息钩子的优先级高于全局消息钩子。即若两个消息钩子都存在,就先调用本地消息钩子,再调用全局消息钩子;若仅存在其中的一个消息钩子,则调用存在的消息钩子。
恶意进程(如木马进程)为了避免被查杀,可以通过加载动态链接库文件来阻止安全软件的检测。其中,所述动态链接库(Dynamic Link Library,DLL)文件,它允许程序共享执行特殊任务所必需的代码和其他资源。
恶意进程在系统中运行时可以创建一个DLL文件,并且向系统注册一个全局消息钩子,其中,所述全局消息钩子的DLL模块的基地址指向所述恶意进程的DLL文件,并且所述全局消息钩子的回调函数在所述恶意进程的DLL文件中。
安全软件的进程中某个线程在创建或关闭窗口时,就会检测并调用全局消息钩子,此时系统会检测所述安全软件的进程中是否加载了所述木马进程的DLL文件,若没有加载,就将所述恶意进程的DLL文件加载到内存中。即恶意进程通过所述全局消息钩子,将恶意进程的DLL文件加载到了安全软件中,然后可以调用所述DLL文件中的回调函数,通过所述回调函数更改所述安全软件,例如,结束安全软件的进程使安全软件无法启动,又如,修改安全软件的查找函数,即当安全软件查找所述恶意进程时,返回错误的结果(如文件不存在)。
因此,本领域技术人员迫切解决的一个技术问题是,提出一种进程的处理方法,能够防止恶意进程通过使用DLL文件和全局消息钩子侵入安全软件,进而使恶意进程无法阻止安全软件检测。
发明内容
本申请提供了一种进程的处理方法和装置,能够防止恶意进程通过使用DLL文件和全局消息钩子侵入安全软件,进而使恶意进程无法阻止安全软件的检测。
为了解决上述问题,本申请公开了一种进程的处理方法,包括:
线程创建时,在系统中注册各类本地消息钩子,其中,所述本地消息钩子与系统中的消息函数具有对应关系;
线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,其中,所述消息函数包括窗口创建函数;
通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数。
优选的,所述通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数,包括:调用并执行所述本地消息钩子的回调函数,获取所述回调函数的执行结果;根据所述回调函数的执行结果,拒绝调用全局消息钩子并返回执行所述消息函数。
优选的,所述消息函数调用与其对应的本地消息钩子之前,还包括:检测系统中是否存在所述消息函数对应的消息钩子,其中,所述消息钩子包括本地消息钩子和全局消息钩子,本地消息钩子的优先级高于全局消息钩子。
优选的,所述消息函数为窗口创建函数;所述线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,包括:线程调用窗口创建函数以创建窗口,所述窗口创建函数在创建窗口前,调用与其对应的本地消息钩子。
优选的,当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数调用与其对应的本地消息钩子。
优选的,所述消息函数还包括:消息发送函数、消息接收函数、消息检查函数、鼠标消息函数和键盘消息函数。
相应的,本申请还公开了一种进程的处理装置,包括:
注册模块,用于线程创建时,在系统中注册各类本地消息钩子,其中,所述本地消息钩子与系统中的消息函数具有对应关系;
调用模块,用于线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,其中,所述消息函数包括窗口创建函数;
阻止并返回模块,用于通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数。
优选的,阻止并返回模块,包括:
调用并执行子模块,用于调用并执行所述本地消息钩子的回调函数,获取所述回调函数的执行结果;
阻止并返回子模块,用于根据所述回调函数的执行结果,拒绝调用全局消息钩子并返回执行所述消息函数。
优选的,所述的装置还包括:
检测模块,用于检测系统中是否存在所述消息函数对应的消息钩子,其中,所述消息钩子包括本地消息钩子和全局消息钩子,本地消息钩子的优先级高于全局消息钩子。
优选的,所述消息函数为窗口创建函数;
所述调用模块,用于线程调用窗口创建函数以创建窗口,所述窗口创建函数在创建窗口前,调用与其对应的本地消息钩子。
优选的,所述的装置还包括:
第三方调用模块,用于当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数依据与其对应的本地消息钩子。
与现有技术相比,本申请包括以下优点:
首先,线程创建时在系统中注册各类本地消息钩子,在调用消息函数时调用与其对应的本地消息钩子。所述本地消息钩子有权利决定是否调用后面的消息钩子,通过调用本地消息钩子的回调函数,可以阻止全局消息钩子被调用,并返回执行所述消息函数。从而可以防止恶意进程通过使用DLL文件和全局消息钩子侵入安全软件,进而使恶意进程无法阻止安全软件检测,维护了系统的安全。
其次,本申请当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数调用与其对应的本地消息钩子。从而进一步的确保系统的安全,确保恶意进程无法阻止安全软件的检测。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例所述一种进程的处理方法流程图;
图2是本申请实施例所述一种进程的处理装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当进程中的线程创建或关闭一个窗口时,会查找所述线程是否存在消息钩子,所述消息钩子包括本地消息钩子和全局消息钩子,其中,本地消息钩子的优先级高于全局消息钩子。即若两个消息钩子都存在,就先调用本地消息钩子,再调用全局消息钩子;若仅存在其中的一个消息钩子,则调用存在的消息钩子。
恶意进程为了避免被查杀,在系统中运行时可以创建一个DLL文件,并且向系统注册一个全局消息钩子。在安全软件运行时,恶意进程可以通过所述全局消息钩子将所述DLL文件加载到安全软件中,然后调用所述DLL文件中的回调函数,通过所述回调函数更改所述安全软件,例如,结束安全软件的进程使安全软件无法启动,又如,修改安全软件的查找函数,即当安全软件查找所述恶意进程时,返回错误的结果(如文件不存在)。
其中,所述恶意进程指恶意软件的进程,包括故意在计算机系统恶意软件上执行恶意任务的病毒、蠕虫和木马等。
本申请提供一种进程的处理方法,通过注册本地消息钩子,来防止恶意进程通过使用DLL文件和全局消息钩子侵入安全软件,进而使恶意进程无法阻止安全软件检测。具体方法如下:
参照图1,给出了本申请实施例所述一种进程的处理方法流程图。
步骤11,线程创建时,在系统中注册各类本地消息钩子;
一个软件的进程在运行时,可以调用线程来完成各项功能,例如,线程可以创建窗口。在线程创建时,可以在系统中注册各类本地消息钩子,其中,所述本地消息钩子与系统中的消息函数具有对应关系。
例如,用户打开安全软件即启动了安全软件的进程,若点击所述安全软件的木马查杀功能,就会创建并启动一个线程,所述线程可以打开对应的木马查杀功能的窗口,则在创建该线程时,可以在系统中注册各类本地消息钩子。
步骤12,线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子;
为了实现软件的相应功能,线程可以调用消息函数,通过所述消息函数可以执行并实现相应的功能,如调用窗口创建函数可以创建窗口,又如调用消息发送函数可以发送消息等。
所述消息函数在执行相应的功能前,系统可以调用与其对应的本地消息钩子。例如,检测是否存在本地消息钩子或全局消息钩子,此时可以检测到本地消息钩子,则调用所述本地消息钩子。
步骤13,通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数。
本地消息钩子的优先级高于全局消息钩子,因此在系统中会先调用本地消息钩子。另外,先调用的消息钩子有权利决定是否调用后面的消息钩子,例如,前面的消息钩子在回调函数中设置不调用其他消息钩子,则后面的所有消息钩子都不会被调用。
因此,系统调用所述本地消息钩子以后,会调用所述本地消息钩子的回调函数,通过回调函数可以执行相应的操作。本申请中所述本地消息钩子的回调函数可以阻止全局消息钩子被调用,例如,让所述回调函数不执行任何操作,直接返回,则此时就不会再检测全局消息钩子,而是返回执行所述消息函数。其中,所述全局消息钩子与系统中的消息函数具有对应关系,通过上述方法,由可疑进程注册的全局消息钩子就不会被调用,从而保证了系统的安全。所述可疑进程可以是未知的第三方进程,如恶意进程,又如用户自己编写的软件的进程等。
综上所述,线程创建时在系统中注册各类本地消息钩子,在调用消息函数时调用与其对应的本地消息钩子。所述本地消息钩子有权利决定是否调用后面的消息钩子,通过调用本地消息钩子的回调函数,可以阻止全局消息钩子被调用,并返回执行所述消息函数。从而可以防止恶意进程通过使用DLL文件和全局消息钩子侵入安全软件,进而使恶意进程无法阻止安全软件检测,维护了系统的安全。
优选的,所述通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数,包括:
调用并执行所述本地消息钩子的回调函数,获取所述回调函数的执行结果;根据所述回调函数的执行结果,拒绝调用全局消息钩子并返回执行所述消息函数。
调用所述本地消息钩子的回调函数,然后执行所述回调函数以完成回调函数的功能,则对应获取所述消息函数的执行结果。根据所述回调函数的执行结果,就可以实现拒绝调用全局消息钩子并返回执行所述消息函数。例如,配置所述回调函数的返回值为0,则所述回调函数的执行结果为直接返回。
实际处理中,先调用的消息钩子需要通过调用函数CallNextHookEx,才能调用后面的消息钩子。因此若在所述本地消息钩子的回调函数中不调用函数CallNextHookEx,则执行所述回调函数时,后面的消息钩子就都不会被调用,通过这种方法就可以拒绝调用全局消息钩子。
优选的,所述消息函数调用与其对应的本地消息钩子之前,还包括:
检测系统中是否存在所述消息函数对应的消息钩子,其中,所述消息钩子包括本地消息钩子和全局消息钩子,本地消息钩子的优先级高于全局消息钩子。
线程可以通过所述消息函数可以执行并实现相应的功能,在所述消息函数在执行相应的功能前,可以先检测系统中是否存在所述消息函数对应的消息钩子,所述消息钩子包括本地消息钩子和全局消息钩子,本地消息钩子的优先级高于全局消息钩子。因此可以先检测本地消息钩子,后检测全局消息钩子。在系统中先调用的消息钩子有权利决定是否调用后面的任何消息钩子。本申请在先检测本地消息钩子时,可以检测到线程在系统中注册的本地消息钩子,则调用所述本地消息钩子,并调用所述消息钩子的回调函数。然后可以在所述回调函数中直接返回,不执行任何操作。
其中,所述消息钩子和消息函数存在对应关系,当一个消息函数被调用时,才会调用与所述消息函数对应的本地消息钩子和全局消息钩子。
系统中存在多种类型的消息钩子,每一种类型的消息钩子都有其被调用的时机,即在调用某一个消息函数去执行某项操作时,可以调用相应类型的消息函数。具体如表1:
Figure BDA00001941770200071
Figure BDA00001941770200081
表1
可以在系统中添加函数SetLocalHook,在所述函数SetLocalHook包含上述各种类型的本地消息钩子,其中,可以采用函数SetWindowsHookEx设置本地消息钩子。
在函数SetWindowsHookEx中设置有4个函数,分别为钩子类型、回调函数、DLL模块基地址和线程ID。所述线程ID可以用于区分全局消息钩子和本地消息钩子,在函数SetWindowsHookEx中不包括线程ID则为全局消息钩子,在函数SetWindowsHookEx中包含线程ID则为本地消息钩子。
例如,SetWindowsHookEx(WH_KEYBOARD_LL,HookProc,NULL,GetCurrentThreadId())中钩子类型为WH_KEYBOARD_LL,回调函数为HookProc,DLL模块基地址为空(NULL),线程ID为GetCurrentThreadId()。
并且,建立全局消息钩子时需要设置DLL模块的基地址,才能使恶意软件通过所述全局消息钩子,将对应的DLL文件加载到系统中,进而通过调用所述DLL文件中的回调函数更改所述安全软件。
而本地消息钩子不需要设置DLL模块的基地址,因此上例中该参数对应位置处为NULL。
本申请中,本地消息钩子的回调函数HookProc可以设置为直接返回,以使系统不会再调用其他消息钩子。
优选的,所述消息函数为窗口创建函数;
所述线程在调用消息函数时,所述消息函数调用与其对应的本地消息钩子,包括:
线程调用窗口创建函数以创建窗口,所述窗口创建函数在创建窗口前,调用与其对应的本地消息钩子。
若所述消息函数为窗口创建函数,则在线程调用窗口创建函数以创建窗口时,所述窗口创建函数在创建窗口前,会先调用与所述窗口创建函数对应的本地消息钩子,则所述本地消息钩子的类型为WH CBT。所述本地消息钩子会调用对应的回调函数,所述回调函数的执行结果为直接返回,则后续不会调用全局消息钩子,系统在执行完相应的操作后,就会执行窗口创建函数以创建窗口。
所述消息函数还包括:消息发送函数,如SendMessage;消息接收函数,如GetMessage;消息检查函数,如PeekMessage;鼠标消息函数,如当调用GetMessage或PeekMessage来从消息队列中查询WM_KEYUP或WM_KEYDOWN消息时;以及键盘消息函数,如当调用GetMessage或PeekMessage来从消息队列中查询鼠标事件消息时,等等。
下面举例论述本申请:
假设恶意进程为木马进程A.exe,所述A.exe先加载了一个模块B.dll,并使用SetWindowsHookEx API向系统注册一个全局消息钩子,所述全局消息钩子的类型为WH_CBT,全局消息钩子的回调函数位于B.dll中。
每当系统中某进程的一个线程创建或者销毁一个窗口,系统就会查找这个线程是否存在本地消息钩子,或者这个线程所在的桌面上是否注册全局钩子。
若所述进程为安全软件的进程,所述进程的线程没有注册本地消息钩子,则系统会调用类型为WH_CBT的全局消息钩子,所述类型为WH_CBT的全局消息钩子会检测进程内部是否加载了B.dll,如果没有加载系统会将所述B.dll加载到内存,并调用B.dll内前面已经注册了的回调函数。
当B.dll发现自己被系统加载到安全软件进程内以后,就可以调用回调函数,进而调用TerminateProcess来结束安全软件进程,或者,可以修改系统文件查找的API(FileFindFirst、FindFindNext),当安全软件调用到给文件查找函数查找木马文件A.exe时,被修改的系统API会返回一个错误结果,如:“文件不存在”。木马进程通过上述的方法就可以阻止安全软件检测,达到避免被查杀的目的,从而妨碍了系统安全。
而采用本申请所述的方法,安全软件的进程调用的线程会在系统中注册本地消息钩子,其中的一个类型为WH_CBT。当安全软件的进程调用所述线程创建或者销毁一个窗口,系统就会查找这个线程是否存在本地消息钩子,或者这个线程所在的桌面上是否注册全局消息钩子。
然后调用所述线程的本地消息钩子,进而调用该本地消息钩子的回调函数,所述回调函数为直接返回,此时就不会调用木马进程A.exe注册的全局消息钩子,因此木马进程A.exe无法将B.dll加载到安全软件进程内,也就无法调用TerminateProcess,无法修改系统文件查找的API(FileFindFirst、FindFindNext)。则木马进程A.exe无法阻止安全软件检测,会被安全软件检测并查杀,安全软件可以确保系统的安全。
例如,采用SetWindowsHookEx(WH_CBT,bendiHookProc,NULL,GetCurrentThreadId())注册本地消息钩子。
其中,SetWindowsHookEx这个为系统函数用来注册的,bendiHookProc为本地消息钩子的回调函数,由系统负责调用。
采用SetWindowsHookEx(WH_CBT,mumaHookProc,NULL,0)注册木马进程的全局消息钩子。
其中,mumaHookProc为木马注册的全局消息钩子的回调函数,SetWindowsHookEx中最后一个参数为0,代表其为全局消息钩子。
线程创建窗口时,会调用系统函数CreateWindowExW创建窗口,所述CreateWindowExW函数会再调用NtUserCreateWindow,然后会遍历由SetWindowsHookEx注册的钩子,本地消息钩子的优先级高于全局消息钩子,因此会先调用本地消息钩子的回调函数bendiHookProc,所述bendiHookProc中不调用函数CallNextHookEx,则不会调用其他消息钩子,即木马创建的全局消息钩子不会被调用,从而使木马进程无法阻止安全软件检测。
为了进一步的确保系统的安全,确保恶意进程无法阻止安全软件的检测。当线程调用第三方线程时,若所述第三方线程调用消息函数,则所述消息函数依据预设条件调用与其对应的本地消息钩子。
例如,安全软件的进程内部可能运行着一些系统DLL,或者第三方DLL,他们也可能会创建窗口等行为,因此同样需要拦截防止全局消息钩子被调用。拦截方法如修改系统的创建线程函数CreateThread,替换线程入口函数,先调用上述的SetLocalHook函数然后再调用后续的线程函数。
因此在安全软件的进程调用线时,所述线程调用第三方线程,如系统DLL时,所述系统DLL在调用消息函数时,所述消息函数依据预设条件调用与其对应的本地消息钩子,所述消息钩子的回调函数会直接返回,不调用全局消息钩子。
综上所述,其次,本申请当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数调用与其对应的本地消息钩子。从而进一步的确保系统的安全,确保恶意进程无法阻止安全软件的检测。
参照图2,给出了本申请实施例所述一种进程的处理装置结构图。
相应的,本申请还提供了一种进程的处理装置,包括:注册模块11、调用模块12和阻止并返回模块13,其中:
注册模块11,用于线程创建时,在系统中注册各类本地消息钩子,其中,所述本地消息钩子与系统中的消息函数具有对应关系;
调用模块12,用于线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,其中,所述消息函数包括窗口创建函数;
阻止并返回模块13,用于通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数。
优选的,所述阻止并返回模块13,包括:
调用并执行子模块131,用于调用并执行所述本地消息钩子的回调函数,获取所述回调函数的执行结果;
阻止并返回子模块132,用于根据所述回调函数的执行结果,拒绝调用全局消息钩子并返回执行所述消息函数。
优选的,所述的装置还包括:
检测模块,用于检测系统中是否存在所述消息函数对应的消息钩子,其中,所述消息钩子包括本地消息钩子和全局消息钩子,本地消息钩子的优先级高于全局消息钩子。
优选的,所述消息函数为窗口创建函数,所述调用模块12,用于线程调用窗口创建函数以创建窗口,所述窗口创建函数在创建窗口前,调用与其对应的本地消息钩子。
优选的,所述的装置还包括:
第三方调用模块,用于当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数调用与其对应的本地消息钩子。
优选的,所述消息函数还包括:消息发送函数、消息接收函数、消息检查函数、鼠标消息函数和键盘消息函数。
综上所述,线程创建时在系统中注册各类本地消息钩子,在调用消息函数时调用与其对应的本地消息钩子。所述本地消息钩子有权利决定是否调用后面的消息钩子,通过调用本地消息钩子的回调函数,可以阻止全局消息钩子被调用,并返回执行所述消息函数。从而可以防止恶意进程通过使用DLL文件和全局消息钩子侵入安全软件,进而使恶意进程无法阻止安全软件检测,维护了系统的安全。
其次,本申请当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数与其对应的本地消息钩子。从而进一步的确保系统的安全,确保恶意进程无法阻止安全软件的检测。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种进程的处理方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (11)

1.一种进程的处理方法,其特征在于,包括:
线程创建时,在系统中注册各类本地消息钩子,其中,所述本地消息钩子与系统中的消息函数具有对应关系;
线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,其中,所述消息函数包括窗口创建函数;
通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数。
2.根据权利要求1所述的方法,其特征在于,所述通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数,包括:
调用并执行所述本地消息钩子的回调函数,获取所述回调函数的执行结果;
根据所述回调函数的执行结果,拒绝调用全局消息钩子并返回执行所述消息函数。
3.根据权利要求1所述的方法,其特征在于,所述消息函数调用与其对应的本地消息钩子之前,还包括:
检测系统中是否存在所述消息函数对应的消息钩子,其中,所述消息钩子包括本地消息钩子和全局消息钩子,本地消息钩子的优先级高于全局消息钩子。
4.根据权利要求1所述的方法,其特征在于,所述消息函数为窗口创建函数;
所述线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,包括:
线程调用窗口创建函数以创建窗口,所述窗口创建函数在创建窗口前,调用与其对应的本地消息钩子。
5.根据权利要求1所述的方法,其特征在于,还包括:
当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数调用与其对应的本地消息钩子。
6.根据权利要求1或3或6任一所述的方法,其特征在于,所述消息函数还包括:消息发送函数、消息接收函数、消息检查函数、鼠标消息函数和键盘消息函数。
7.一种进程的处理装置,其特征在于,包括:
注册模块,用于线程创建时,在系统中注册各类本地消息钩子,其中,所述本地消息钩子与系统中的消息函数具有对应关系;
调用模块,用于线程在调用消息函数时,通过所述消息函数调用与其对应的本地消息钩子,其中,所述消息函数包括窗口创建函数;
阻止并返回模块,用于通过调用本地消息钩子的回调函数,阻止全局消息钩子被调用并返回执行所述消息函数。
8.根据权利要求7所述的装置,其特征在于,阻止并返回模块,包括:
调用并执行子模块,用于调用并执行所述本地消息钩子的回调函数,获取所述回调函数的执行结果;
阻止并返回子模块,用于根据所述回调函数的执行结果,拒绝调用全局消息钩子并返回执行所述消息函数。
9.根据权利要求7所述的装置,其特征在于,还包括:
检测模块,用于检测系统中是否存在所述消息函数对应的消息钩子,其中,所述消息钩子包括本地消息钩子和全局消息钩子,本地消息钩子的优先级高于全局消息钩子。
10.根据权利要求7所述的装置,其特征在于,所述消息函数为窗口创建函数;
所述调用模块,用于线程调用窗口创建函数以创建窗口,所述窗口创建函数在创建窗口前,调用与其对应的本地消息钩子。
11.根据权利要求7所述的装置,其特征在于,还包括:
第三方调用模块,用于当线程调用第三方线程时,若所述第三方线程调用消息函数,则通过所述消息函数依据与其对应的本地消息钩子。
CN201210266417.3A 2012-07-27 2012-07-27 一种进程的处理方法和装置 Active CN102831344B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210266417.3A CN102831344B (zh) 2012-07-27 2012-07-27 一种进程的处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210266417.3A CN102831344B (zh) 2012-07-27 2012-07-27 一种进程的处理方法和装置

Publications (2)

Publication Number Publication Date
CN102831344A true CN102831344A (zh) 2012-12-19
CN102831344B CN102831344B (zh) 2015-04-15

Family

ID=47334477

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210266417.3A Active CN102831344B (zh) 2012-07-27 2012-07-27 一种进程的处理方法和装置

Country Status (1)

Country Link
CN (1) CN102831344B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573484A (zh) * 2014-12-31 2015-04-29 上海动联信息技术股份有限公司 一种高安全性密码口令框
CN106127051A (zh) * 2016-06-29 2016-11-16 北京金山安全软件有限公司 一种防止鼠标被恶意捕获的方法、装置及电子设备
CN106155648A (zh) * 2015-03-31 2016-11-23 北京奇虎科技有限公司 一种键鼠脚本录制的方法及装置
CN106169046A (zh) * 2016-07-04 2016-11-30 北京金山安全软件有限公司 防止消息钩子注入的方法、装置和终端设备
CN106203115A (zh) * 2016-07-11 2016-12-07 北京金山安全软件有限公司 一种应用程序的防护方法、装置及电子设备
CN106502703A (zh) * 2016-10-27 2017-03-15 腾讯科技(深圳)有限公司 一种函数调用方法和装置
CN106547580A (zh) * 2015-09-22 2017-03-29 腾讯科技(深圳)有限公司 挂钩函数的方法和装置
CN106557693A (zh) * 2016-05-09 2017-04-05 哈尔滨安天科技股份有限公司 一种恶意Hook行为检测方法及系统
CN106778231A (zh) * 2016-12-22 2017-05-31 江苏神州信源系统工程有限公司 一种实现安卓系统中的应用程序安全管理方法
CN107391115A (zh) * 2017-06-28 2017-11-24 武汉斗鱼网络科技有限公司 一种实现弹窗交互事件的方法、装置及计算机设备
CN107729132A (zh) * 2017-10-09 2018-02-23 武汉斗鱼网络科技有限公司 一种视频解码进程保护方法及装置
WO2019047442A1 (zh) * 2017-09-06 2019-03-14 武汉斗鱼网络科技有限公司 一种ios应用中绕过函数调用链检测的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1352420A (zh) * 2001-11-29 2002-06-05 上海格尔软件股份有限公司 安全电子邮件与Outlook Express集成的方法
CN101286848A (zh) * 2008-05-23 2008-10-15 杨筑平 登录认证方法和登录签名程序
CN101872391A (zh) * 2009-04-23 2010-10-27 盛大计算机(上海)有限公司 基于三环体系的安全防护系统
CN101950260A (zh) * 2010-09-10 2011-01-19 中兴通讯股份有限公司 一种处理器程序调度方法及装置
US20120066135A1 (en) * 1997-07-28 2012-03-15 Apple Inc., a California corporation Method and Apparatus for Enforcing Software Licenses

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120066135A1 (en) * 1997-07-28 2012-03-15 Apple Inc., a California corporation Method and Apparatus for Enforcing Software Licenses
CN1352420A (zh) * 2001-11-29 2002-06-05 上海格尔软件股份有限公司 安全电子邮件与Outlook Express集成的方法
CN101286848A (zh) * 2008-05-23 2008-10-15 杨筑平 登录认证方法和登录签名程序
CN101872391A (zh) * 2009-04-23 2010-10-27 盛大计算机(上海)有限公司 基于三环体系的安全防护系统
CN101950260A (zh) * 2010-09-10 2011-01-19 中兴通讯股份有限公司 一种处理器程序调度方法及装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573484A (zh) * 2014-12-31 2015-04-29 上海动联信息技术股份有限公司 一种高安全性密码口令框
CN106155648A (zh) * 2015-03-31 2016-11-23 北京奇虎科技有限公司 一种键鼠脚本录制的方法及装置
CN106155648B (zh) * 2015-03-31 2019-07-26 北京奇虎科技有限公司 一种键鼠脚本录制的方法及装置
CN106547580A (zh) * 2015-09-22 2017-03-29 腾讯科技(深圳)有限公司 挂钩函数的方法和装置
CN106547580B (zh) * 2015-09-22 2020-08-28 腾讯科技(深圳)有限公司 挂钩函数的方法、装置、移动终端及存储介质
CN106557693A (zh) * 2016-05-09 2017-04-05 哈尔滨安天科技股份有限公司 一种恶意Hook行为检测方法及系统
CN106127051A (zh) * 2016-06-29 2016-11-16 北京金山安全软件有限公司 一种防止鼠标被恶意捕获的方法、装置及电子设备
CN106169046A (zh) * 2016-07-04 2016-11-30 北京金山安全软件有限公司 防止消息钩子注入的方法、装置和终端设备
CN106203115B (zh) * 2016-07-11 2019-04-09 珠海豹趣科技有限公司 一种应用程序的防护方法、装置及电子设备
CN106203115A (zh) * 2016-07-11 2016-12-07 北京金山安全软件有限公司 一种应用程序的防护方法、装置及电子设备
CN106502703A (zh) * 2016-10-27 2017-03-15 腾讯科技(深圳)有限公司 一种函数调用方法和装置
CN106502703B (zh) * 2016-10-27 2020-07-03 腾讯科技(深圳)有限公司 一种函数调用方法和装置
CN106778231A (zh) * 2016-12-22 2017-05-31 江苏神州信源系统工程有限公司 一种实现安卓系统中的应用程序安全管理方法
CN107391115B (zh) * 2017-06-28 2018-10-23 武汉斗鱼网络科技有限公司 一种实现弹窗交互事件的方法、装置及计算机设备
CN107391115A (zh) * 2017-06-28 2017-11-24 武汉斗鱼网络科技有限公司 一种实现弹窗交互事件的方法、装置及计算机设备
WO2019047442A1 (zh) * 2017-09-06 2019-03-14 武汉斗鱼网络科技有限公司 一种ios应用中绕过函数调用链检测的方法及系统
CN107729132A (zh) * 2017-10-09 2018-02-23 武汉斗鱼网络科技有限公司 一种视频解码进程保护方法及装置

Also Published As

Publication number Publication date
CN102831344B (zh) 2015-04-15

Similar Documents

Publication Publication Date Title
CN102831344A (zh) 一种进程的处理方法和装置
CA2856268C (en) Methods of detection of software exploitation
US7735138B2 (en) Method and apparatus for performing antivirus tasks in a mobile wireless device
US9003402B1 (en) Method and system for injecting function calls into a virtual machine
US7877091B2 (en) Method and system for executing a container managed application on a processing device
US8352925B2 (en) Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
US8438640B1 (en) Method and apparatus for reverse patching of application programming interface calls in a sandbox environment
US20140007117A1 (en) Methods and apparatus for modifying software applications
US9871800B2 (en) System and method for providing application security in a cloud computing environment
US8429648B2 (en) Method and apparatus to service a software generated trap received by a virtual machine monitor
CN102542201A (zh) 一种网页中恶意代码的检测方法及系统
US11055168B2 (en) Unexpected event detection during execution of an application
US20150363195A1 (en) Software package management
RU2746155C2 (ru) Уничтожение объекта на основе последовательности выполняемых действий
CN102999720A (zh) 程序鉴别方法和系统
US20060252406A1 (en) System and method for providing bundle group termination in an OSGi service platform
US8613006B2 (en) System, method, and computer program product for terminating a hidden kernel process
CN102999721A (zh) 一种程序处理方法和系统
US9128741B2 (en) System, method, and computer program product for conditionally preventing use of hardware virtualization
US7318229B1 (en) Method, system, and program for dispatching a method call
US20130066622A1 (en) Simulation of static members and parameterized constructors on an interface-based api
CN114936368A (zh) 一种Java内存木马检测方法、终端设备及存储介质
CN106203087A (zh) 注入防护方法和系统
CN108023966B (zh) 通用网关接口请求处理方法、设备和存储介质
CN113296910B (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220321

Address after: 100020 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.