CN102768720A - 一种进程保护的方法 - Google Patents
一种进程保护的方法 Download PDFInfo
- Publication number
- CN102768720A CN102768720A CN2012100744690A CN201210074469A CN102768720A CN 102768720 A CN102768720 A CN 102768720A CN 2012100744690 A CN2012100744690 A CN 2012100744690A CN 201210074469 A CN201210074469 A CN 201210074469A CN 102768720 A CN102768720 A CN 102768720A
- Authority
- CN
- China
- Prior art keywords
- preservation
- needs
- handle
- response
- authority
- 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)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例公开了一种进程保护的方法,通过预先保存需保存进程的具有结束进程权限的句柄;接收外部传入的执行句柄;判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同;若是,发送结束响应请求到所述需保存进程;接收所述需保存进程返回的结束响应;根据所述结束响应执行结束操作,结束所述需保存的进程,使需要保护的进程,不会在没有保存完成前就被结束掉,达到了有效保护进程,保障信息安全的效果。
Description
技术领域
本发明应用于各种应用软件的自我保护,涉及信息安全防护领域,尤其涉及一种进程保护的方法。
背景技术
随着半导体技术的不断发展,计算机的处理能力也日益增强。但出于各种原因,仍然会有死机、个别软件未响应等情况出现,这种时候,一般用户会通过任务管理器中的进程选项来主动终结某个进程。
一般来说,无论采用什么方式,想要终结某个进程,都需要调用Windows提供的两个函数,分别是:打开进程函数OpenProcess和终结进程函数TerminateProcess。
结束进程的步骤一般是:
首先需要通过某种途径得知需要结束的进程的标识号ID,当一个进程启动时,进程的ID号就被确定下来,并是唯一的。
第二步就是调用OpenProcess,通过已得知的进程ID号,来得到一个可以用来实施具有某种权限的操作的句柄HANDLE。
例如得知需要被杀死的进程的ID是1155,则执行以下程序语句:
HANDLE hProcess=OpenProcess(PROCESS_TERMINATE,0,1155);
1155就是需要结束的进程的ID号,
PROCESS_TERMINATE表示的就是某种“操作权限标记”,具体来讲就是可以结束该进程的权限
hProcess就是返回的HANDLE,返回了这个HANDLE,就可以使用这个HANDLE来对这个进程实施需要“结束进程权限”的操作,当然需要这种权限的操作也只有一个,就是结束进程。
需要指出的是,此时返回的HANDLE只是一个临时的量,并不具有长久性和唯一性。
第三步,通过上述HANDLE来实施结束进程操作,只需调用TerminateProcess函数即可,如:
TerminateProcess(hProcess,0);
经过这三步之后,进程就会被结束掉。
然而,某些软件并不愿意被结束,于是,现有技术便提供了一种结束进程的方法,希望用户不会通过以上提到的方式将需要保护的进程结束掉,具体为:采用钩子hook技术,使用自己编写的“假OpenProcess”函数代码替换掉Windows系统原本提供的OpenProcess函数。
在“假OpenProcess”函数中,软件作者首先判断传入的进程ID是否是需要保护的进程ID,并且判断需要的操作权限是否为PROCESS_TERMINATE,如果满足了这两个条件,根据上述终结进程的步骤就说明系统正试图终结需要保护的进程。
按上述终结进程的步骤,第三步在调用TerminateProcess时,需要一个正确的HANDLE才能杀死进程,所以,软件作者只需要在上一步返回一个错误的HANDLE出去,进而此时得到的HANDLE便是一个错误的,所以就无法成功的杀死需要保护的进程,因而达到了保护进程的目的。
但是,出于尊重用户主动性的原因,某种情况只是下希望进程在进行某种工作时(比如在保存工程文件时)不立刻被终结,而是等待工作结束一切处理妥当后,再继续实施终结进程的操作,这种情况下,现有技术便无法实现了。
发明内容
为了解决上述问题,本发明提供了一种进程保护的方法,通过预先保存需保存进程的具有结束进程权限的句柄;接收外部传入的执行句柄;判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同;若是,发送结束响应请求到所述需保存进程;接收所述需保存进程返回的结束响应;根据所述结束响应执行结束操作,结束所述需保存的进程,使需要保护的进程,不会在没有保存完成前就被结束掉,达到了有效保护进程,保障信息安全的效果。
为达到上述目的,本发明实施例提供了一种进程保护的方法,具体包括:
预先保存需保存进程的具有结束进程权限的句柄;
接收外部传入的执行句柄;
判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同;
若是,发送结束响应请求到所述需保存进程;
接收所述需保存进程返回的结束响应;
根据所述结束响应执行结束操作,结束所述需保存的进程。
其中,所述预先保存需保存进程的具有结束进程权限的句柄具体包括:
预先记录所述需保存进程的标识号ID;
接收进程操作指令,所述进程操作指令包括进程标识号ID及进程操作;
判断所述进程标识号ID与所述需保存进程的标识号ID是否相同;
若是,则判断所述进程操作是否为终结进程操作PROCESS_TERMINATE;
若是,生成所述需保存进程的具有结束进程权限的句柄并保存。
所述判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同之后,若否,则直接执行所述外部传入的执行句柄的命令。
其中,所述发送结束响应请求到所述需保存进程之前,还包括:
设定返回所述结束响应的临界值。
若超过所述临界值仍未接收到所述结束响应,则直接执行结束操作。
其中,所述发送结束响应请求到所述需保存进程之后,还包括:
判断所述需保存进程是否正在进行保存工作;
若否,则返回所述结束响应,若是,则等待所述保存工作结束,返回所述结束响应。
所述发送结束响应请求到所述需保存进程之后,发送等待提示信息给用户。
其中,所述返回所述结束响应的同时,设置进程结束标志位,所述结束标志位设置之后,所述需保存进程不再进行所述保存工作。
本发明实施例能够达到以下有益效果:通过预先保存需保存进程的具有结束进程权限的句柄;接收外部传入的执行句柄;判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同;若是,发送结束响应请求到所述需保存进程;接收所述需保存进程返回的结束响应;根据所述结束响应执行结束操作,结束所述需保存的进程,使需要保护的进程,不会在没有保存完成前就被结束掉,达到了有效保护进程,保障信息安全的效果。解决了进程正在进行保存工作但还没完成却被结束进程的问题,避免了因未保存而导致需要重复工作,浪费人力、物力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一,一种进程保护的方法的流程图;
图2为本发明实施例一,步骤1012-1014的示意图;
图3为本发明实实施例一,步骤104的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例一方面提供了一种进程保护的方法,具体实现过程如图1所示,包括:
步骤101,预先保存需保护进程的具有结束进程权限的句柄;
具体包括:
步骤1011,预先记录所述需保护进程的标识号ID;
当一个进程启动时,进程的ID号就被确定下来,且是唯一的。
在这里,介绍一下具体实现时的钩子Hook模块:
为了实现hook,需要将代码实现在一个dll中,命名为NxProcessProtector.dll。
其中导出一个函数:
其中HookAllApps作用是实施hook或者撤销hook操作。
参数bInstall为true时,实施hook;为false时,撤销hook。
参数dwThreadId为传入Windows API SetWindowsHookEx的参数,暂时用不到,这里要传入0。
参数dwPIDToProtect为需要保护的进程的进程ID。
参数hwndToSendMessgae为需要接收消息的窗体句柄handle,用于在某应用程序调用TerminateProcess时,向该句柄handle发送消息来通知系统进行准备。
另外有两个全局变量,分别为:
static DWORD g_PID2Protect=0;
static HWND g_hwnd2SendMessage=NULL;
其中g_PID2Protect用来保存需要保护的进程ID,g_hwnd2SendMessage用来保存发送消息的目的窗体。这两个全局变量都由#pragma data_seg进行修饰,目的是在多进程间可以共享这两个变量。
记录ID号的同时,要进行初始化流程:
以非线性编辑系统为例,在非线性编辑系统启动时加载上述NxProcessProtector.dll并调用HookProtectProcess方法来实施hook。具体位置选择在Nxedit中的CNxDesktop::StartEdit()方法中。
之后,开始具体介绍结束进程的流程中如何对需要保护的进程进行保护。
当某应用程序如任务管理器要结束某进程时,会依次调用OpenProcess方法和TerminateProcess方法。这两个方法都被hook,替换为自己实现的NxOpenProcess和NxTerminateProcess。
步骤1012,接收进程操作指令;
进程操作指令包括进程标识号ID及进程操作;
进程操作指令可以为用户主动操作或系统中的某个程序自动进行的操作。此时,先通过Hook技术将OpenProcess替换为NxOpenProcess,接收上述进程操作指令。
步骤1013,判断上述操作指令是否为结束需保护进程;
具体为,判断进程标识号ID与需保存进程的标识号ID是否相同,进程操作是否为终结进程操作PROCESS_TERMINATE;
分析进程操作指令,判断其中所包含的ID号与预先保存的需要保护的进程ID号是否相同,进程操作是否为终结进程操作PROCESS_TERMINATE。
在本实施例中,具体指非线性编辑系统对应的进程ID,当然也可指其它各类软件、系统,PROCESS_TERMINATE表示的就是某种“操作权限标记”,具体来讲就是可以结束该进程的权限。
若是,进入步骤1014,若不是,直接返回句柄Handle。
步骤1014,生成需保存进程的具有结束进程权限的句柄并保存;
保存之后,返回上述句柄Handle。
上述步骤1012至步骤1014可以参见图2。
步骤102,接收外部传入的执行句柄;
需要指出的是,外部传入的句柄Handle是一个临时的量,不具有长久性和唯一性。
此时,通过Hook技术将系统调用的TerminateProces替换为NxTerminateProces,接收外部传入的执行句柄Handle。
步骤103,判断外部传入的执行句柄与需保存进程的具有结束进程权限的句柄是否相同,若是,进入步骤104;
若不同,则表明要结束的进程并不是需要保护的进程,此时直接执行正确的TerminateProcess,结束进程即可;
若外部传入的执行句柄与需保存进程的具有结束进程权限的句柄相同,就表示此时需要保护的进程要被结束了,此时进入步骤104。
步骤104,发送结束响应请求到需保存进程;
如图3所示,如果发现需要结束的进程handle和保存的handle相同,就向需要保护的进程(Nxedit)使用SendMessage发送消息,待函数返回后再结束进程。
判断需保存进程是否正在进行保存工作;
若是,发送等待提示信息给用户,等待保存工作结束,返回结束响应;
若否,直接返回结束相应;
在此过程中,可能会出现线程同步和死锁:
线程同步
有可能在TaskMgr执行SendMessage时,非编并没有在保存工程,所以event处于set状态,所以wait这个event会立刻返回并开始执行TerminateProcess。而正当此时非编却开始保存工程,那么依然会发生0k问题。
解决方法是设置一个标志位。在非编的消息响应函数中,如果发现要结束进程了,那么就设置这个标志位。而工程的保存线程发现了这个标志位,就不要再进行保存工程的操作。
死锁
如果工程的保存线程在保存时死机,那么event就永远不会被set,那么TaskMgr就永远不会从SendMessage函数中返回。这样Nxedit和TaskMgr两个进程都会死机,用户也无法通过常规手段结束这两个进程(因为任务管理器也死了),会造成很严重的问题。
解决方法是在非编的消息响应函数中不要wait这个event过长时间,设置一个临界值,这里暂时定为10秒钟。
步骤105,接收需保存进程返回的结束响应;
若超过返回响应的临界值仍未接收到结束响应,则直接执行结束操作。
步骤106,根据结束响应执行结束操作,结束需保存的进程。
本发明实施例能够达到以下有益效果:通过预先保存需保存进程的具有结束进程权限的句柄;接收外部传入的执行句柄;判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同;若是,发送结束响应请求到所述需保存进程;接收所述需保存进程返回的结束响应;根据所述结束响应执行结束操作,结束所述需保存的进程,使需要保护的进程,不会在没有保存完成前就被结束掉,达到了有效保护进程,保障信息安全的效果。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种进程保护的方法,其特征在于,包括以下步骤:
预先保存需保存进程的具有结束进程权限的句柄;
接收外部传入的执行句柄;
判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同;
若是,则发送结束响应请求到所述需保存进程;
接收所述需保存进程返回的结束响应;
根据所述结束响应执行结束操作,结束所述需保存的进程。
2.如权利要求1所述方法,其特征在于,所述预先保存需保存进程的具有结束进程权限的句柄具体包括:
预先记录所述需保存进程的标识号ID;
接收进程操作指令,所述进程操作指令包括进程标识号ID及进程操作;
判断所述进程标识号ID与所述需保存进程的标识号ID是否相同;
若是,则判断所述进程操作是否为终结进程操作PROCESS_TERMINATE;
若是,生成所述需保存进程的具有结束进程权限的句柄并保存。
3.如权利要求1所述方法,其特征在于,所述判断所述外部传入的执行句柄与所述需保存进程的具有结束进程权限的句柄是否相同之后,若否,则直接执行所述外部传入的执行句柄的命令。
4.如权利要求1所述方法,其特征在于,所述发送结束响应请求到所述需保存进程之前,还包括:
设定返回所述结束响应的临界值。
5.如权利要求1所述方法,其特征在于,所述发送结束响应请求到所述需保存进程之后,包括:
判断所述需保存进程是否正在进行保存工作;
若否,则返回所述结束响应,若是,则等待所述保存工作结束,返回所述结束响应。
6.如权利要求4所述方法,其特征在于,还包括:
若超过所述临界值仍未接收到所述结束响应,则直接执行结束操作。
7.如权利要求1所述方法,其特征在于,所述发送结束响应请求到所述需保存进程之后,发送等待提示信息给用户。
8.如权利要求5所述方法,其特征在于,所述返回所述结束响应的同时,设置进程结束标志位,所述结束标志位设置之后,所述需保存进程不再进行所述保存工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210074469.0A CN102768720B (zh) | 2012-03-20 | 2012-03-20 | 一种进程保护的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210074469.0A CN102768720B (zh) | 2012-03-20 | 2012-03-20 | 一种进程保护的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102768720A true CN102768720A (zh) | 2012-11-07 |
CN102768720B CN102768720B (zh) | 2019-02-22 |
Family
ID=47096115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210074469.0A Expired - Fee Related CN102768720B (zh) | 2012-03-20 | 2012-03-20 | 一种进程保护的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102768720B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729132A (zh) * | 2017-10-09 | 2018-02-23 | 武汉斗鱼网络科技有限公司 | 一种视频解码进程保护方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1349167A (zh) * | 2001-12-04 | 2002-05-15 | 上海复旦光华信息科技股份有限公司 | Solaris进程自动保护系统 |
CN1350228A (zh) * | 2001-12-04 | 2002-05-22 | 上海复旦光华信息科技股份有限公司 | Windows nt进程自动保护系统 |
CN1391386A (zh) * | 2001-06-12 | 2003-01-15 | 华为技术有限公司 | 一种多任务操作系统中任务进程的保护方法 |
CN102156834A (zh) * | 2011-04-18 | 2011-08-17 | 北京思创银联科技股份有限公司 | 实现进程防杀的方法 |
US8042186B1 (en) * | 2011-04-28 | 2011-10-18 | Kaspersky Lab Zao | System and method for detection of complex malware |
-
2012
- 2012-03-20 CN CN201210074469.0A patent/CN102768720B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1391386A (zh) * | 2001-06-12 | 2003-01-15 | 华为技术有限公司 | 一种多任务操作系统中任务进程的保护方法 |
CN1349167A (zh) * | 2001-12-04 | 2002-05-15 | 上海复旦光华信息科技股份有限公司 | Solaris进程自动保护系统 |
CN1350228A (zh) * | 2001-12-04 | 2002-05-22 | 上海复旦光华信息科技股份有限公司 | Windows nt进程自动保护系统 |
CN102156834A (zh) * | 2011-04-18 | 2011-08-17 | 北京思创银联科技股份有限公司 | 实现进程防杀的方法 |
US8042186B1 (en) * | 2011-04-28 | 2011-10-18 | Kaspersky Lab Zao | System and method for detection of complex malware |
Non-Patent Citations (3)
Title |
---|
DELPHI7456: "利用Hook API函数OpenProcess与TerminateProcess来防止任务管理器结束进程", 《URL:HTTP://WWW.CNBLOGS.COM/DELPHI7456/ARCHIVE/2010/10/31/1865729.HTML》 * |
WUDEAAA 等: "直接从任务管理器结束程序的进程,该程序如何捕获这个事件并保", 《URL:HTTP://BBS.CSDN.NET/TOPICS/340267468》 * |
马金鑫 等: "基于Windows环境下的进程保护技术的研究与实现", 《计算机应用与软件》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729132A (zh) * | 2017-10-09 | 2018-02-23 | 武汉斗鱼网络科技有限公司 | 一种视频解码进程保护方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102768720B (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9235705B2 (en) | Secure virtualization system software | |
CN100580682C (zh) | 安全地保存和还原安全程序加载程序上下文的系统及方法 | |
US10013553B2 (en) | Protecting software application | |
JP6227772B2 (ja) | 動的ライブラリを保護する方法及び装置 | |
US10599820B2 (en) | Control flow flattening for code obfuscation where the next block calculation needs run-time information | |
CN102254113A (zh) | 一种检测和拦截移动终端恶意代码的方法及系统 | |
CN103136468A (zh) | 协助用于硬件保护的应用程序的系统服务请求交互 | |
US10372908B2 (en) | System and method for detecting malware in a stream of bytes | |
WO2016033966A1 (zh) | 应用数据的保护方法及装置 | |
JP5159896B2 (ja) | プロセス分離実行を通じたdrmクライアント衝突防止システム及び方法 | |
US20160246590A1 (en) | Priority Status of Security Patches to RASP-Secured Applications | |
CN110138767B (zh) | 事务请求的处理方法、装置、设备和存储介质 | |
CN103116715A (zh) | Windows平台可执行文件API延迟导入保护方法 | |
CN107122656B (zh) | 一种通过自调试防止外部调试的方法和装置 | |
CN107239698A (zh) | 一种基于信号处理机制的反调试方法和装置 | |
CN110807191A (zh) | 一种应用程序的安全运行方法及装置 | |
CN102768720A (zh) | 一种进程保护的方法 | |
US20100077155A1 (en) | Managing shared memory through a kernel driver | |
US20180165226A1 (en) | Memory privilege | |
EP3163453B1 (en) | Securing an application by randomizing its memory layout at launch time | |
CN111901318A (zh) | 一种命令注入攻击检测的方法、系统及设备 | |
KR101207434B1 (ko) | 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법 | |
WO2019114812A1 (zh) | 一种阻止恶意代码编译的方法、存储介质及电子装置 | |
WO2000062160A2 (en) | Method and system for dynamic injection of execution logic into a windowed operating system | |
EP3057022B1 (en) | Mobile device and method for operating same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190222 |