一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件打开事件处理方法、系统、计算机设备及存储介质与流程

2022-06-29 14:35:26 来源:中国专利 TAG:


1.本发明实施例涉及信息安全防护领域,尤其涉及一种文件打开事件处理方法、系统、计算机设备及存储介质。


背景技术:

2.ad域是windows操作系统常见的企业级服务,重要性不言而喻,常用的防护方式一般是对基网络的异常流量检测或对服务器进行edr(端点检测与响应,endpoint detection&response)防护,这两种防护手段数据量都比较大,进行防护时无异于大海捞针,且这两种防护方法没有实时阻断的能力。


技术实现要素:

3.有鉴于此,本发明实施例的目的是提供一种文件打开事件处理方法、系统、计算机设备及存储介质,提高了对ad域服务的安全防护的能力。
4.为实现上述目的,本发明实施例提供了一种文件打开事件处理方法,应用于ad域服务中,包括:
5.监控文件打开事件;
6.判断所述文件打开事件是否为针对预设的资源白库中的关键资源文件的文件打开事件;
7.若所述文件打开事件为针对预设的资源白库中的关键资源文件的文件打开事件,则拦截并获取当前进程,所述当前进程为执行所述文件打开事件的进程;
8.判断所述当前进程是否为所述关键资源文件的指定进程,所述指定进程为所述资源白库中允许访问所述关键资源文件的进程;
9.若所述当前进程为所述预设的关键资源文件的指定进程,则判断所述当前进程执行所述文件打开事件时所调用的内存指令序列是否合法;
10.若合法,则对所述文件打开事件进行放行处理。
11.进一步地,所述方法还包括:
12.获取多个关键资源文件对应的允许访问的访问进程,所述多个关键资源文件为所述ad域服务中需要进行防护的文件;
13.将每个关键资源文件与对应的访问进程进行关联,以构建所述资源白库。
14.进一步地,所述判断所述文件打开事件是否为针对预设的资源白库中的关键资源文件的文件打开事件包括:
15.获取所述资源白库;
16.获取所述文件打开事件对应的目标关键资源文件;
17.对比所述目标关键资源文件是否为所述资源白库中包含的关键资源文件;
18.根据对比结果判断所述文件打开事件是否为针对预设的资源白库中的关键资源文件的文件打开事件。
19.进一步地,所述判断所述当前进程是否为所述关键资源文件的指定进程,所述指定进程为所述资源白库中允许访问所述关键资源文件的进程包括:
20.获取所述资源白库;
21.在所述资源白库中,查询所述目标关键资源文件对应的指定进程;
22.对比所述指定进程是否包含所述当前进程,以判断所述当前进程是否为所述关键资源文件的指定进程。
23.进一步地,所述若所述当前进程为所述关键资源文件的指定进程,则判断所述当前进程执行所述文件打开事件时所调用的内存指令序列是否合法包括:
24.获取所述指定进程对应的静态内存指令序列;
25.比对所述静态内存指令序列与所述文件打开事件时所调用的内存指令序列是否一致;
26.根据比对结果判断所述内存指令序列是否合法。
27.进一步地,所述方法还包括:
28.判断ad域防护功能是否开启。
29.进一步地,所述判断所述文件打开事件是否为针对预设的关键资源文件的文件打开事件之前,还包括:
30.当监控到所述文件打开事件发生时,判断所述文件打开事件是否为打开磁盘;
31.当判断为不打开磁盘时,则执行所述判断所述文件打开事件是否为针对预设的关键资源文件的文件打开事件的步骤。
32.为实现上述目的,本发明实施例提供了一种文件打开事件处理系统,应用于ad域服务中,包括:
33.监控模块,用于监控文件打开事件;
34.第一判断模块,用于判断所述文件打开事件是否为针对预设的资源白库中的关键资源文件的文件打开事件;
35.拦截模块,用于若所述文件打开事件为针对预设的资源白库中的关键资源文件的文件打开事件,则拦截并获取当前进程,所述当前进程为执行所述文件打开事件的进程;
36.第二判断模块,用于判断所述当前进程是否为所述关键资源文件的指定进程,所述指定进程为所述资源白库中允许访问所述关键资源文件的进程;
37.第三判断模块,用于若所述当前进程为所述预设的关键资源文件的指定进程,则判断所述当前进程执行所述文件打开事件时所调用的内存指令序列是否合法;
38.放行模块,用于若合法,则对所述文件打开事件进行放行处理。
39.为实现上述目的,本发明实施例提供了一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的文件打开事件处理方法的步骤。
40.为实现上述目的,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行上所述的文件打开事件处理方法的步骤。
41.本发明实施例提供的文件打开事件处理方法、系统、计算机设备及存储介质,通过对ad域中的文件打开事件进行监控,可以实时发现和阻断已知或者未知的恶意攻击,当出
现文件打开事件时,首先判断监控的对象,即文件打开时间是否为预设的关键资源文件的打开事件,再根据判断结果对文件打开事件执行第一次防护,当文件打开事件为针对预设的关键资源文件的文件打开事件时,进一步地确定文件打开事件的主体,即当前进程是否为预设的关键资源文件的指定进程,做第二次防护,最后根据当前进程的内存指令序列是否合法的判断结果,确定是否对文件打开事件进行放行处理,进行第三次防护,极大的提升了防御能力,进一步提高了ad域服务的安全性。
附图说明
42.图1为本发明文件打开事件处理方法实施例一的流程图。
43.图2为本发明文件打开事件处理方法实施例一中步骤s102的流程图。
44.图3为本发明文件打开事件处理方法实施例一中步骤s106的流程图。
45.图4为本发明文件打开事件处理方法实施例一中步骤s108的流程图。
46.图5为本发明文件打开事件处理系统实施例二的程序模块示意图。
47.图6为本发明计算机设备实施例三的硬件结构示意图。
具体实施方式
48.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.实施例一
50.参阅图1,示出了本发明实施例一之文件打开事件处理方法的步骤流程图,应用于ad域服务中。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备2为执行主体进行示例性描述。具体如下。
51.步骤s100,监控文件打开事件。
52.具体地,为了实时发现和阻断已知的或者未知的对ad域中的文件的恶意攻击,可以通过监控系统监控ad域中的主机的所有文件的文件打开事件,文件打开事件为各种进程对主机中的文件进行访问或者调用的事件。
53.其中,ad(active directory)域指的是活动目录单元,ad域可用于同时管理多台电脑,这样实现集中式管理,可以很大程度减少管理员的工作量。比如以前需要在无数客户端上进行多次的设置,现在在ad域控制器上只需要设置一次就能完成。ad域内有用来存储用户账户、计算机账户、打印机和共享文件夹等对象的directory database(目录数据库),而提供目录服务的组件就是active directory(活动目录)域服务(active directory domain service,ad ds),它负责目录数据库的存储、添加、删除、修改与查询等操作。
54.步骤s102,判断所述文件打开事件是否为针对预设的资源白库中的关键资源文件的文件打开事件。
55.具体地,预设的关键资源文件是预先设置并存储于资源白库中的需要进行防护的关键资源文件,具体而言,资源白库中可以存储有关键资源文件的文件名称,以便可以根据文件名称判断文件打开事件对应的目标关键资源文件是否为针对预设的资源白库中的关
键资源文件的文件打开事件。作为示例,该关键资源文件可以为ntds.dit、groups.xml等。
56.当监控到文件打开事件时,可以判断该文件打开事件的对象是否为预设的关键资源文件。
57.在示例性地实施例中,所述方法还包括:
58.获取多个关键资源文件对应的允许访问的访问进程,所述多个关键资源文件为所述ad域服务中需要进行防护的文件;
59.将每个关键资源文件与对应的访问进程进行关联,以构建所述资源白库。
60.具体地,用户可以预先收集ad域上要保护的关键资源文件及各个关键资源文件对应的访问进程,可以理解为,每个关键资源文件只能被对应的特定访问进程访问或者调用,若果不是对应的访问进程访问对应的关键资源文件,则表示该文件打开事件不合法。当构建资源白库时,可以从用户收集的信息中获取当前需要防护的关键资源文件以及对应的访问进程,例如:ntds.dit、groups.xml等关键资源文件,之后,可以根据关键资源文件及对应的访问进程建立ad域基于权限的资源白库,即某个关键资源文件(客体)只能被某个或某些进程(主体)访问,以便可以根据权限控制来提高ad域服务的安全性。
61.作为示例,可以构建如下表所示的资源白库:
[0062][0063]
在示例性地实施例中,参阅图2,所述步骤s102可以包括:
[0064]
步骤s102a,获取所述资源白库。步骤s102b,获取所述文件打开事件对应的目标关键资源文件。步骤s102c,对比所述目标关键资源文件是否为所述资源白库中包含的关键资源文件。步骤s102d,根据对比结果判断所述文件打开事件是否为针对预设的关键资源文件的文件打开事件。
[0065]
具体地,获取当前的文件打开事件对应的目标关键资源文件,在上述构建的资源白库中,对目标关键资源文件进行比对,判断目标关键资源文件是否为资源白库中需要进行防护的预设的关键资源文件。具体而言,可以首先获取目标关键资源文件的目标文件名称,然后在资源白库中查询是否有与目标文件名称匹配的文件名称,若有,则判断目标关键资源文件为资源白库中需要进行防护的预设的关键资源文件,再进一步执行步骤s104。若目标关键资源文件不是资源白库中需要进行防护的预设的关键资源文件,则对该文件打开事件进行放行处理。
[0066]
步骤s104,若所述文件打开事件为针对预设的关键资源文件的文件打开事件,则拦截并获取当前进程,所述当前进程为执行所述文件打开事件的进程。
[0067]
具体地,当该文件打开事件访问的对象是资源白库中的关键资源文件时,拦截执行文件打开事件的当前进程,以对该当前进程进行进一步的检测,从而实现对ad域服务更
好的防护。
[0068]
步骤s106,判断所述当前进程是否为所述预设的关键资源文件的指定进程,所述指定进程为所述资源白库中允许访问所述关键资源文件的进程。
[0069]
具体地,当文件打开事件的对象是预设的关键资源文件中的某一个时,查询当前进程是否在资源白库中,且是否为目标关键资源文件对应的访问进程,即指定进程。当不是指定进程访问目标关键资源文件,则对该目标资源事件的当前进程进行上抛处理,以便可以通过其他系统对该文件打开事件进一步进行检测,以提高ad域服务的安全性。
[0070]
在示例性地实施例中,参阅图3,所述步骤s106可以包括:
[0071]
步骤s106a,获取所述资源白库。步骤s106b,在所述资源白库中,查询所述目标关键资源文件对应的指定进程。步骤s106c,对比所述指定进程是否包含所述当前进程,以判断所述当前进程是否为所述关键资源文件的指定进程。
[0072]
具体地,当判断出文件打开事件针对的是资源白库中的预设的关键资源文件,且对预设的关键资源文件的访问进程也是资源白库中的进程,判断目标关键资源文件是否被对应的访问进程进行访问。例如:当目标关键资源文件为groups.xml文件,其对应的指定进程为mmc.exe,若当前获取到的当前进程为进程mmc.exe,则可以判定当前进程为所述关键资源文件的指定进程。其中,一个关键资源文件可以被多个进程打开,例如上述资源白库的表格中,当关键资源文件为%systemroot%\system32\ntds.dit时,其对应的指定进程可以为services.exe或者lsass.exe。
[0073]
步骤s108,若所述当前进程为所述预设的关键资源文件的指定进程,则判断所述当前进程执行所述文件打开事件时所调用的内存指令序列是否合法。
[0074]
具体地,内存指令序列也为rva序列,因为rva序列也是指rva所在位置的汇编指令所组成的序列,在实现描述时可以转换为由rva组成的调用序列。rva序列为相对虚拟地址序列(relative virtual address),用于表示执行文件打开事件的当前进程的调用地址。预先获取每个关键资源文件在正常环境下被对应的进程进行调用或者访问的静态rva序列,将其与访问进程关联并保存资源白库至资源白库中。当判断出文件打开事件针对的是资源白库中的预设的关键资源文件,且对预设的关键资源文件的访问进程也是资源白库中的进程,获取当前进程在进程文件打开事件时的rva序列,判断该rva序列是否与资源白库中包含的rva序列是否一致,当判断出不一致时,则当前进程在进程文件打开事件时的rva序列时不合法的,对其进行上抛处理,以便可以通过其他系统对该文件打开事件进一步进行检测,以提高ad域服务的安全性。当判断出一致时,则进行放行处理。
[0075]
在示例性地实施例中,参阅图4,所述步骤s108可以包括:
[0076]
步骤s108a,获取所述指定进程对应的静态内存指令序列。
[0077]
具体地,预先收集指定进程在对关键资源文件执行文件打开事件时具体是通过哪些系统模块调用哪些关键函数来实现文件打开事件的,并将其中的实现过程通过内存指令序列的方式进行描述,以及将内存指令序列与关键资源文件进行关联存储至资源白库中。当前进程通过多个系统模块进行执行,每个系统模块中存储有多个关键函数的调用地址,静态内存指令序列为正常环境下,访问进程通过各个系统模块根据调用顺序调用对应的关键函数执行文件打开事件的调用序列。系统模块通过调用地址去调用关键函数,每个系统模块设置对应的hash值。静态内存指令序列存储于资源白库时,每个静态内存指令序列与
其对应的访问进程进行关联,访问进程与其包含的系统模块hash值进行关联。系统模块hash值与该系统模块调用的关键函数的调用地址进行关联,再按调用顺序形成将系统模块hash值与该系统模块调用的关键函数的调用地址组合成静态内存指令序列。
[0078]
本实施例中,当文件打开事件发生时,获取当前进程的栈返回地址,当前进程进行调用关键函数时,将关键函数的调用地址存储于堆栈中,栈返回地址从堆栈中进行获取。在堆栈中,根据栈返回地址从下往上回溯查找执行所述文件打开事件时所调用的所有关键函数。在本实施例中,可以通过回溯函数进行返回地址的回溯。
[0079]
在确定所有的关键函数之后,进一步根据这些关键函数调用顺序得到执行所述文件打开事件时所调用的内存指令序列。例如:每个系统模块调用关键函数时有对应的调用地址,根据回溯的顺序将关键函数的调用地址进行组合,得到内存指令序列。
[0080]
步骤s108b,比对所述静态内存指令序列与所述文件打开事件时所调用的内存指令序列是否一致。
[0081]
具体地,将当前进程执行文件打开事件所调用的rva序列与静态rva序列进行比对,判断两个序列是否一致。
[0082]
步骤s108c,根据比对结果判断所述内存指令序列是否合法。
[0083]
具体地,判断该rva序列是否与资源白库中包含的rva序列是否一致,当判断出不一致时,则当前进程在进程文件打开事件时的相对偏移rva序列时不合法的,对其进行上抛处理,以便可以通过其他系统对该文件打开事件进一步进行检测,以提高ad域服务的安全性。当判断出一致时,则进行放行处理。
[0084]
步骤s110,若合法,则对所述文件打开事件进行放行处理。
[0085]
具体地,当当前进程执行文件打开事件时所调用的rva序列与资源白库中包含的rva序列一致时,对文件打开事件的当前线程进行放行处理,允许访问、调用或者读取ad域中的目标关键资源文件。
[0086]
在示例性地实施例中,所述方法还包括:
[0087]
判断ad域防护功能是否开启。
[0088]
具体地,为了用户可以灵活地对ad域防护功能进行开启,本实施例中可以增设一个ad域防护功能开关来开启与关闭该ad域防护功能。
[0089]
此外,在本实施例中,可以在监控文件时、监控到文件打开事件时或者执行拦截并获取执行文件打开事件的当前进程时,为了避免ad域防护功能未开启时,导致资源消耗,也拦截并获取执行所述文件打开事件的当前进程。本实施例中,可以先对ad域防护功能的开启状态进行判断,只有在ad域防护功能的开启时,才会拦截并获取执行所述文件打开事件的当前进程。
[0090]
在示例性地实施例中,所述判断所述文件打开事件是否为针对预设的关键资源文件的文件打开事件之前,还包括:
[0091]
当监控到所述文件打开事件发生时,判断所述文件打开事件是否为打开磁盘;当判断为不打开磁盘时,则执行所述判断所述文件打开事件是否为针对预设的关键资源文件的文件打开事件的步骤。
[0092]
具体地,该步骤是判断文件打开事件的文件打开方式是否为直接打开磁盘进行文件访问,若是,则表示该文件打开事件存在恶意攻击,拦截该文件打开事件,对该文件打开
事件进行上抛处理,以进一步进行查杀或者其他安全防控处理。若不是,则对文件打开事件进行进一步地处理,以判断是否为恶意攻击。
[0093]
实施例二
[0094]
请继续参阅图5,示出了本发明文件打开事件处理系统实施例二的程序模块示意图。在本实施例中,文件打开事件处理系统20可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述文件打开事件处理方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述文件打开事件处理系统20在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
[0095]
监控模块200,用于监控文件打开事件。
[0096]
具体地,为了实时发现和阻断已知的或者未知的对ad域中的文件的恶意攻击,可以通过监控系统监控ad域中的主机的所有文件的文件打开事件,文件打开事件为各种进程对主机中的文件进行访问或者调用的事件。
[0097]
其中,ad(active directory)域指的是活动目录单元,ad域可用于同时管理多台电脑,这样实现集中式管理,可以很大程度减少管理员的工作量。比如以前需要在无数客户端上进行多次的设置,现在在ad域控制器上只需要设置一次就能完成。ad域内有的用来存储用户账户、计算机账户、打印机和共享文件夹等对象的directory database(目录数据库),而提供目录服务的组件就是active directory(活动目录)域服务(active directory domain service,ad ds),它负责目录数据库的存储、添加、删除、修改与查询等操作。
[0098]
第一判断模块202,用于判断所述文件打开事件是否为针对预设的资源白库中的关键资源文件的文件打开事件。
[0099]
具体地,预设的关键资源文件是预先设置并存储于资源白库中的需要进行防护的关键资源文件,具体而言,资源白库中可以存储有关键资源文件的文件名称,以便可以根据文件名称判断文件打开事件对应的目标关键资源文件是否为针对预设的资源白库中的关键资源文件的文件打开事件。作为示例,该关键资源文件可以为ntds.dit、groups.xml等。
[0100]
当监控到文件打开事件时,可以判断该文件打开事件的对象是否为预设的关键资源文件。
[0101]
具体地,预设的关键资源文件是预先设置并存储的需要进行防护的关键资源文件。作为示例,该关键资源文件可以为ntds.dit、groups.xml等。
[0102]
当监控到文件打开事件时,可以判断该文件打开事件的对象是否为预设的关键资源文件。
[0103]
在示例性地实施例中,所述系统还可以执行以下方法:
[0104]
获取多个关键资源文件对应的访问进程;
[0105]
将每个关键资源文件与对应的访问进程进行关联,以构建资源白库。
[0106]
具体地,用户可以预先收集ad域上要保护的资源文件及各个资源文件对应的访问进程,当构建资源白库时,可以从用户收集的信息中获取当前需要防护的关键资源文件以及对应的访问进程,例如:ntds.dit、groups.xml等关键资源文件,之后,可以根据关键资源文件及对应的访问进程建立ad域基于权限的资源白库,即某个关键资源文件(客体)只能被某个或某些进程(主体)访问,以便可以根据权限控制来提高ad域服务的安全性。
[0107]
作为示例,可以构建如下表所示的资源白库:
[0108][0109]
在示例性地实施例中,所述拦截模块204还可以用于:
[0110]
获取所述资源白库。获取所述文件打开事件对应的目标关键资源文件。对比所述目标关键资源文件是否为所述资源白库中包含的关键资源文件。根据对比结果判断所述文件打开事件是否为针对预设的关键资源文件的文件打开事件。
[0111]
具体地,获取当前的文件打开事件对应的目标关键资源文件,在上述构建的资源白库中,对目标关键资源文件进行比对,判断目标关键资源文件是否为资源白库中需要进行防护的预设的关键资源文件。具体而言,可以首先获取目标关键资源文件的目标文件名称,然后在资源白库中查询是否有与目标文件名称匹配的文件名称,若有,则判断目标关键资源文件为资源白库中需要进行防护的预设的关键资源文件。若目标关键资源文件不是资源白库中需要进行防护的预设的关键资源文件,则对该文件打开事件进行放行处理。
[0112]
拦截模块204,用于若所述文件打开事件为针对预设的资源白库中的关键资源文件的文件打开事件,则拦截并获取当前进程,所述当前进程为执行所述文件打开事件的进程。
[0113]
具体地,当该文件打开事件访问的对象是资源白库中的关键资源文件时,拦截执行文件打开事件的当前进程,以对该当前进程进行进一步的检测,从而实现对ad域服务更好的防护。
[0114]
第二判断模块206,用于判断所述当前进程是否为所述关键资源文件的指定进程,所述指定进程为所述资源白库中允许访问所述关键资源文件的进程。
[0115]
具体地,当文件打开事件的对象是预设的关键资源文件中的某一个时,查询当前进程是否在资源白库中,且是否为目标关键资源文件对应的访问进程,即指定进程。当不是指定进程访问目标关键资源文件,则对该目标资源事件的当前进程进行上抛处理,以便可以通过其他系统对该文件打开事件进一步进行检测,以提高ad域服务的安全性。
[0116]
在示例性地实施例中,所述第二判断模块206还可以用于:
[0117]
获取所述资源白库。在所述资源白库中,查询所述目标关键资源文件对应的指定进程。对比所述指定进程是否包含所述当前进程,以判断所述当前进程是否为所述关键资源文件的指定进程。
[0118]
具体地,当判断出文件打开事件针对的是资源白库中的预设的关键资源文件,且对预设的关键资源文件的访问进程也是资源白库中的进程,判断目标关键资源文件是否被对应的访问进程进行访问。例如:当目标关键资源文件为groups.xml文件,其对应的指定进程为mmc.exe,若当前获取到的当前进程为进程mmc.exe,则可以判定当前进程为所述关键
资源文件的指定进程。其中,一个关键资源文件可以被多个进程打开,例如上述资源白库的表格中,当关键资源文件为%systemroot%\system32\ntds.dit时,其对应的指定进程可以为services.exe或者lsass.exe。
[0119]
第三判断模块208,用于若所述当前进程为所述预设的关键资源文件的指定进程,则判断所述当前进程执行所述文件打开事件时所调用的内存指令序列是否合法。
[0120]
具体地,内存指令序列也为rva序列,因为rva序列也是指rva所在位置的汇编指令所组成的序列,在实现描述时可以转换为由rva组成的调用序列。rva序列为相对虚拟地址序列(relative virtual address),用于表示执行文件打开事件的当前进程的调用地址。预先获取每个关键资源文件被对应的进程进行调用或者访问的rva序列,将其与进程关联保存资源白库至资源白库中。当判断出文件打开事件针对的是资源白库中的预设的关键资源文件,且对预设的关键资源文件的访问进程也是资源白库中的进程,获取当前进程在进程文件打开事件时的rva序列,判断该rva序列是否与资源白库中包含的rva序列是否一致,当判断出不一致时,则当前进程在进程文件打开事件时的rva序列时不合法的,对其进行上抛处理,以便可以通过其他系统对该文件打开事件进一步进行检测,以提高ad域服务的安全性。当判断出一致时,则进行放行处理。
[0121]
在示例性地实施例中,所述第三判断模块208还可以用于:
[0122]
获取所述指定进程对应的静态内存指令序列。
[0123]
具体地,预先收集指定进程在对关键资源文件执行文件打开事件时具体是通过哪些系统模块调用哪些关键函数来实现文件打开事件的,并将其中的实现过程通过rva序列的方式进行描述,以及将rva序列与关键资源文件进行关联存储至资源白库中。当前进程通过多个系统模块进行执行,每个系统模块中存储有多个关键函数的调用地址,静态内存指令序列为正常环境下,访问进程通过各个系统模块根据调用顺序调用对应的关键函数执行文件打开事件的调用序列。系统模块通过调用地址去调用关键函数,每个系统模块设置对应的hash值。静态内存指令序列存储于资源白库时,每个静态内存指令序列与其对应的访问进程进行关联,访问进程与其包含的系统模块hash值进行关联。系统模块hash值与该系统模块调用的关键函数的调用地址进行关联,再按调用顺序形成将系统模块hash值与该系统模块调用的关键函数的调用地址组合成静态内存指令序列。
[0124]
本实施例中,当文件打开事件发生时,获取当前进程的栈返回地址,根据栈返回地址从下往上回溯查找执行所述文件打开事件时所调用的所有关键函数。在本实施例中,可以通过回溯函数进行返回地址的回溯。
[0125]
在确定所有的关键函数之后,进一步根据这些关键函数调用顺序得到执行所述文件打开事件时所调用的内存指令序列。例如:每个系统模块调用关键函数时有对应的调用地址,根据回溯的顺序将关键函数的调用地址进行组合,得到内存指令序列。
[0126]
比对所述静态内存指令序列与所述文件打开事件时所调用的内存指令序列是否一致。
[0127]
具体地,将当前进程执行文件打开事件所调用的内存指令序列与静态rva序列进行比对,判断两个序列是否一致。
[0128]
根据比对结果判断所述内存指令序列是否合法。
[0129]
具体地,判断该rva序列是否与资源白库中包含的rva序列是否一致,当判断出不
一致时,则当前进程在进程文件打开事件时的相对偏移rva序列时不合法的,对其进行上抛处理,以便可以通过其他系统对该文件打开事件进一步进行检测,以提高ad域服务的安全性。当判断出一致时,则进行放行处理。
[0130]
放行模块210,用于若合法,则对所述文件打开事件进行放行处理。
[0131]
具体地,当当前进程执行文件打开事件时所调用的rva序列与资源白库中包含的rva序列一致时,对文件打开事件的当前线程进行放行处理,允许访问、调用或者读取ad域中的目标关键资源文件。
[0132]
实施例三
[0133]
参阅图6,是本发明实施例三之计算机设备的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。该计算机设备2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图6所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及文件打开事件处理系统20。其中:
[0134]
本实施例中,存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如实施例二的文件打开事件处理系统20的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0135]
处理器22在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备2的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行文件打开事件处理系统20,以实现实施例一的文件打开事件处理方法。
[0136]
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述服务器2与其他电子装置之间建立通信连接。例如,所述网络接口23用于通过网络将所述服务器2与外部终端相连,在所述服务器2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobile communication,gsm)、宽带码分多址(wideband code division multiple access,wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。需要指出的是,图6仅示出了具有部件20-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
[0137]
在本实施例中,存储于存储器21中的所述文件打开事件处理系统20还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或
多个处理器(本实施例为处理器22)所执行,以完成本发明。
[0138]
例如,图5示出了所述实现文件打开事件处理系统20实施例二的程序模块示意图,该实施例中,所述文件打开事件处理系统20可以被划分为所述监控模块200、所述第一判断模块202、所述拦截模块204、所述第二判断模块206、所述第三判断模块208以及所述放行模块210。其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述文件打开事件处理系统20在所述计算机设备2中的执行过程。所述程序模块200-210的具体功能在实施例二中已有详细描述,在此不再赘述。
[0139]
实施例四
[0140]
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于计算机程序,被处理器执行时实现实施例一的文件打开事件处理方法。
[0141]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0142]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
[0143]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献