
6种进程防护方法及源代码.rar
5星
- 浏览量: 0
- 大小:None
- 文件类型:RAR
简介:
本资源包含六种不同的进程保护技术及其对应的源代码,适用于软件开发人员研究和学习进程安全机制。
自2009年初加入这家公司以来,我负责开发进程防杀功能以保护我们的软件服务程序。类似360或瑞星这样的安全产品都具备此类功能。通过研究一个月并参考网上各种方法及其代码后,总结归纳出以下六种实现方式,并附上对应源码。
所有源码经过我的修改调试,部分为原创,在Visual Studio 2005下测试成功,并在多种Windows操作系统中验证过其有效性。
1. Ring3提升线程至系统级别
原理:当Windows强制结束进程时会先终止所有线程。将程序的线程改为系统线程可防止被杀。
优点:Ring3实现,无需驱动或钩子,代码简单易懂,并能抵御任务管理器中的关闭操作。
缺点:仅在部分XP版本中有效(与特定补丁有关),防杀能力有限,例如无法抵挡IceSword等工具。
2. 通过Hook NtQuerySystemInformation隐藏进程
原理:利用NtQuerySystemInformation钩子来隐藏进程
优点:Ring3实现的进程隐藏方式,无驱动需求,并能在任务管理器中使进程不可见。
缺点:仅在NT和Windows 2000系统下有效,通用性较差。
3. 使用Detours库进行防杀保护
原理:通过Hook OpenProcess来阻止其他程序对目标进程的操作。
优点:具备较强的防杀能力和广泛的适用范围,在多种版本的Windows中均能生效。
缺点:在某些情况下(如2008版)可能无法正常工作,且不能防止特定工具。
4. 捕获任务管理器结束进程事件
原理:通过CBT钩子拦截并阻止任务管理器中的关闭进程操作。
优点:几乎适用于所有版本的Windows系统,可有效保护目标程序不被任务管理器终止运行。
缺点:仅能针对由Windows自带的任务管理器发起的操作进行防护。
5. 双重进程监控
原理:主进程与守护进程相互监视对方状态。当一方消失时另一方会重新启动它。为避免父子关系,使用临时进程来启动真正的守护程序。
优点:具有较强的通用性和保护能力,适用于Windows服务等后台运行的应用;对于需要直接操作桌面界面的防杀方案来说较为适用。
缺点:这不是真正意义上的防杀技术,而是通过不断重启被终止的服务达到目的。
6. 驱动级进程隐藏与防护
原理:在驱动级别Hook ZwQuerySystemInformation来实现对特定进程的保护或隐藏功能。
优点:具备强大的防杀能力,在IceSword 1.2.2版本测试中表现良好。
缺点:需要加载驱动程序,这使得其实现复杂化,并可能被360等安全软件识别为恶意代码。
全部评论 (0)


