WEB开发网
开发学院操作系统windows 2008 各种进程保护方法的比较 阅读

各种进程保护方法的比较

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示:一.利用hook保护进程1.inlinehook采用inlinkhook保护自身的进程,对抗CreateRemoteThread的Dll注入,各种进程保护方法的比较,在ring3下Dll注入的标准做法是使用CreateRemoteThread控制目标进程调用Loadlibrary加载,针对这一做法,如每种方法被攻破的概

一.利用hook 保护进程

1.inline hook

采用inlink hook 保护自身的进程,对抗CreateRemoteThread的Dll注入。在ring3下Dll注入的标准做法是使用CreateRemoteThread控制目标进程调用Loadlibrary加载,针对这一做法,可以按如下的步骤进行自身保护:

1)在自身初始化完毕后,挂钩自身的LoadLibraryExW,并在主线程中获取当前线程ID。

2)在挂钩函数中判断当前线程ID是否和主线程ID相等,如不相等则可能是来自外部的DLL注入,进行拒绝或通知用户处理。

3)对于自身所需要的LoadLibrary行为,可以在主线程中进行,或调用原始的LoadLibraryExW。

2.SSDT hook

当打开任务管理器时,选择一个进程并结束进程这个过程,可以详细的分为以下几步:

1) taskmgr 进程首先获取要结束的进程句柄,通过 OpenProcess()这个下API,OpenProcess 调用在Kernel32.dll 中; 

2)系统捕获API调用,转到Ring0 级下,从 SSDT中取得对应的 RintOpenProcess 的入口地址,执行相应操作,此过程在 ntdll.dll 中; 

3)完成NtOpenProcess 操作后转回Ring3 级下返回 OpenProcess 函数返回taskmgr进程,因此获取了要结束的进程的句柄; 

4)taskmgr 执行 TerminateProcess()这个 Ring3 下的 API,传入进程句试结束进程; 

5)系统捕获API调用,再次转到 Ring0 级下,从SSDT中取得对应的PI:NtTerminateProcess 的入口地址,执行结束进程操作; 

6、完成 NtTerminateProcess 操作后转回 Ring3 级下返回 TerminatePro数,继而返回taskmgr 进程,完成结束进程过程; 

在这一个流程中,SSDT起到了重要的作用。于是针对这一流程可以hook ssdt,

改变这处流程的处理。

二.采用多进程保护进程

它是指一个或多个程序运行多遍,只有一个进程处于工作状态,其余进程的目的是为了保护这个进程。一旦其中一个进程被杀或失效,其他的进程将会创建出另外进程来填补。

应用多进程来实现进程的保护中,可以综合运用多种保护的方法来实现对进程的保护。双进程保护基本的做法如下:

1)若A为要保护的进程,在创建A进程的同时,同是创建副进程B。B的作用主要是用来监视A进程的状态

2)若A进程被结束,B进程根据记录A进程的状态重新创建A进程

3)若B进程被结束,A进程也会自动去创建B进程

在对A和B的保护中也可以利用一些其它的单独的方法来保护自身的进程不被结束。

三.对管理系统的进程保护的看法

CDMS系统能正常运行依赖的一个进程是UniFrm2.exe要实行对此进程的保护单一运用一种方法的安全性不是很高。如每种方法被攻破的概率为50%,那么综合一下同时采用两种方法保护UniFrm2.exe,此进程幸存的概率为(1-50%*50%)=75%一下就提高了不少。

估应该采用多种方法结合的方法来对些进程的保护。

Tags:各种 进程 保护

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接