针对windows全系统的进程防护方法及系统技术方案

技术编号:32547634 阅读:14 留言:0更新日期:2022-03-05 11:46
本发明专利技术提供了一种针对windows全系统的进程防护方法及系统。该方法包括:构建可信进程列表;当进程启动时,进入到自定义的HookResumeThread函数中;根据HookResumeThread函数中的线程句柄,获取到当前进程的id、哈希值和大小;根据当前进程的id、哈希值和大小,查询当前进程是否存在于可信进程列表中;如果不存在,对当前进程执行拦截操作;如果存在,当前进程正常启动。本发明专利技术提供的针对windows全系统的进程防护方法及系统能够实现在windowsXP及以后的所有系统的进程防护功能,做到拦截不可信程序进程,并保证系统无提示弹窗,不影响用户正常使用。不影响用户正常使用。不影响用户正常使用。

【技术实现步骤摘要】
针对windows全系统的进程防护方法及系统


[0001]本专利技术涉及信息安全
,特别是涉及一种针对windows全系统的进程防护方法及系统。

技术介绍

[0002]操作系统的安全性一直是业界关注的问题。作为经典的操作系统,windows操作系统的安全问题也一直是关注的交点。在windows操作系统中,进程经常成为黑客执行攻击的目标或者媒介。因此,进程的安全性在windows系统中十分重要。

技术实现思路

[0003]本专利技术要解决的技术问题是提供一种针对windows全系统的进程防护方法及系统,能够实现在windowsXP及以后的所有系统的进程防护功能,做到拦截不可信程序进程,并保证系统无提示弹窗,不影响用户正常使用。
[0004]为解决上述技术问题,本专利技术提供了一种针对windows全系统的进程防护方法,所述方法包括:构建可信进程列表;当进程启动时,进入到自定义的HookResumeThread函数中;根据HookResumeThread函数中的线程句柄,获取到当前进程的id、哈希值和大小;根据当前进程的id、哈希值和大小,查询当前进程是否存在于可信进程列表中;如果不存在,对当前进程执行拦截操作;如果存在,当前进程正常启动。
[0005]在一些实施方式中,当前进程正常启动,包括:通过调用NtResumedThread函数,正常启动。
[0006]在一些实施方式中,还包括:如果拦截系统服务描述符表的NtResumedThread函数不成功,使用微软提供的注册线程回调的接口。
[0007]在一些实施方式中,使用微软提供的注册线程回调的接口,包括:调用PsSetCreateThreadNotifyRoutine(CreateThreadNotify)注册一个线程回调;当进程启动的时候会进入到CreateThreadNotify(HANDLE ProcessId,HANDLEThreadId,BOOLCreate);当监控到进程启动时,我根据CreateThreadNotify(HANDLEProcessId,HANDLEThreadId,BOOLCreate)中的ProcessId(进程id)参数获取到当前进程的哈希值和大小;查询当前进程的哈希值和大小是否存在于策略中的可信进程列表中,如果不存在,那说明是不可信进程,就会进入到拦截操作中。
[0008]在一些实施方式中,拦截操作包括:执行如下函数:TerminatePro cess(ProcessId,0)。
[0009]在一些实施方式中,使用微软提供的注册线程回调的接口,还包括:如果当前进程的哈希值和大小存在与可信进程列表中,不做任何处理,直接返回。
[0010]在一些实施方式中,还包括:对于XP以后的windows操作系统,使用微软提供的注册线程回调的接口。
[0011]此外,本专利技术还提供了一种针对windows全系统的进程防护系统,所述系统包括:
一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据前文所述的针对windows全系统的进程防护方法。
[0012]采用这样的设计后,本专利技术至少具有以下优点:
[0013]1.综合性的防护手段,做到了windows全系统进程防护;
[0014]2.不依赖应用层,仅在内核中就实现了进程拦截,并保证不影响系统正常运行,不触发系统弹窗,不会影响用户使用;
[0015]3.不使用HOOK方式。
附图说明
[0016]上述仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,以下结合附图与具体实施方式对本专利技术做进一步的详细说明。
[0017]图1是方法的流程图。
具体实施方式
[0018]以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。
[0019]一,实现功能:
[0020]实现在windowsXP及以后的所有系统的进程防护功能,做到拦截不可信程序进程,并保证系统无提示弹窗,不影响用户正常使用。
[0021]二,技术实现方案:
[0022](1)拦截进程启动技术:
[0023]1.功能概述
[0024]在驱动中监控进程的启动,当监控到进程启动时,可以将系统传来的进程启动信息与策略中的可信进程列表作对比,如果发现当前进程是不可信进程,那可以通过修改进程启动信息或者在此时结束进程,来达到拦截进程启动的目的。
[0025]2.技术方案
[0026]首先通过可信进程的特征码计算出哈希值,然后把可信进程的哈希值和可信进程的大小保存在策略中的可信进程列表里面,接着在驱动中获取系统版本号。根据系统版本号来做不同的处理,拦截不可信进程启动的规则如下:
[0027]XP及之前的系统,包含XP系统;
[0028]如果当前系统是XP之前的系统(包含XP),在进程启动时,会进入到系统服务描述符表(英文全称为SystemServicesDescriptorTable,这里简称ssdt)中的NtResumedThread函数中。因此,如果把ssdt中保存NtResumedThread函数地址的缓冲区的内容修改其它函数的地址,那当进程启动时,就会进入到其它函数,而不会进入到原来的NtResumedThread函数。于是我先保存原来的NtResumedThread函数的地址,接着把ssdt中保存NtResumedThread函数地址的缓冲区的内容修改为HookResumedThread函数的地址(HookResumedThread是我自定义的函数)。这样,当进程启动时,会进入到我定义的HookResumeThread(HANDLEThreadHandle,PULONG PreviousSuspendCount)函数里面。当监
控到进程启动时,我根据HookResumeThread(HANDLEThreadHandle,PULONGPreviousSuspendCount)中的ThreadHandle(线程句柄)参数获取到当前进程的id(ProcessId),哈希值和大小,查询当前进程的哈希值和大小是否存在于策略中的可信进程列表中,如果不存在,那说明是不可信进程,就会进入到拦截逻辑中,拦截操作如下:
[0029]TerminateProcess(ProcessId,0);
[0030]函数返回STATUS_ACCESS_DENIED;
[0031]这样,进程直接就被结束了,以致进程启动失败;如果不存在,那说明进程是可信进程,那就调用原来的NtResumedThread(HANDLEThreadHandle,PULONGPreviousSuspendCount),让进程正常启动,操作如下:
[0032]NTSTATUSStatus=NtResumedThread(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对windows全系统的进程防护方法,其特征在于,包括:构建可信进程列表;当进程启动时,进入到自定义的HookResumeThread函数中;根据HookResumeThread函数中的线程句柄,获取到当前进程的id、哈希值和大小;根据当前进程的id、哈希值和大小,查询当前进程是否存在于可信进程列表中;如果不存在,对当前进程执行拦截操作;如果存在,当前进程正常启动。2.根据权利要求1所述的针对windows全系统的进程防护方法,其特征在于,当前进程正常启动,包括:通过调用NtResumedThread函数,正常启动。3.根据权利要求2所述的针对windows全系统的进程防护方法,其特征在于,还包括:如果拦截系统服务描述符表的NtResumedThread函数不成功,使用微软提供的注册线程回调的接口。4.根据权利要求3所述的针对windows全系统的进程防护方法,其特征在于,使用微软提供的注册线程回调的接口,包括:调用PsSetCreateThreadNotifyRoutine(CreateThreadNotify)注册一个线程回调;当进程启动的时候会进入到CreateThreadNotify(HANDLE ProcessId,HANDLE ThreadId,BOOL Create);当监控到进...

【专利技术属性】
技术研发人员:郭昌盛邱斌王磊姜昱西刘祥宇田鹏飞黄河汪文晓
申请(专利权)人:北京江民新科技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1