内存快速搜索方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:38460634 阅读:13 留言:0更新日期:2023-08-11 14:37
本申请涉及一种内存快速搜索方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:获取用户态的目标数据,所述目标数据包括目标字符串,基于所述目标数据获取对应的虚拟地址空间链表,基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串。本方法通过在内核态中直接对需要查询的数据对应的虚拟内存空间进行搜索匹配,确定是否存在需要查询的数据,不再需要将虚拟内存进行全部复制再遍历,不仅有效加快了内存搜索的速度,同时提高了搜索效率,极大地减少了计算机资源占用。用。用。

【技术实现步骤摘要】
内存快速搜索方法、装置、计算机设备和存储介质


[0001]本申请涉及计算机
,特别是涉及一种内存快速搜索方法、装置、计算机设备和存储介质。

技术介绍

[0002]随着计算机技术的发展,各种各样的软件层出不穷,而要使软件能够在终端、服务器等设备上正常运行,软件调试至关重要。作为软件调试的关键步骤之一,对进程内存进行搜索是安全人员不可或缺的一步。现有技术中,大多数内存搜索都是基于Linux的用户态进行的,通过将存储在内核空间的目标进程的全部虚拟内存循环复制到用户态的指定位置,之后再进行搜索匹配,然而这种方式不仅遍历了大量无意义的虚拟内存,全部的内存复制还造成了内存浪费。
[0003]因此,相关技术中亟需一种能够加快内存搜索的速度,提高搜索效率以及减少计算机资源占用的方法。

技术实现思路

[0004]基于此,有必要针对上述技术问题,提供一种能够加快内存搜索的速度,提高搜索效率以及减少计算机资源占用的内存快速搜索方法、装置、计算机设备和计算机可读存储介质。
[0005]第一方面,本申请提供了一种内存快速搜索方法。所述方法包括:
[0006]获取用户态的目标数据,所述目标数据包括目标字符串;
[0007]基于所述目标数据获取对应的虚拟地址空间链表;
[0008]基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串。
[0009]可选的,在本申请的一个实施例中,所述目标数据包括目标进程,所述基于所述目标数据获取对应的虚拟地址空间链表包括:
[0010]基于所述目标数据中的目标进程获取内存页表;
[0011]基于所述内存页表获取对应的虚拟地址空间链表。
[0012]可选的,在本申请的一个实施例中,所述基于所述目标数据中的目标进程获取内存页表包括:
[0013]基于所述目标数据中的目标进程,查找进程链表,获取进程描述符;
[0014]基于所述进程描述符,获取所述目标进程的内存页表。
[0015]可选的,在本申请的一个实施例中,所述基于所述内存页表获取对应的虚拟地址空间链表包括:
[0016]遍历所述内存页表,过滤未分配物理内存的内存页表;
[0017]返回过滤之后的虚拟地址空间链表。
[0018]可选的,在本申请的一个实施例中,所述基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串包括:
[0019]将所述目标字符串作为模式字符串,采用字符串匹配算法对所述虚拟地址空间链表进行搜索匹配。
[0020]可选的,在本申请的一个实施例中,所述采用字符串匹配算法对所述虚拟地址空间链表采用字符串匹配算法进行搜索匹配包括:
[0021]采用快速模式匹配算法,在所述虚拟地址空间链表的内存页中进行搜索,确定所述目标字符串。
[0022]可选的,在本申请的一个实施例中,所述基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串之后包括:
[0023]将所述目标字符串对应的内存地址返回至用户态。
[0024]第二方面,本申请还提供了一种内存快速搜索装置。所述装置包括:
[0025]目标数据获取模块,用于获取用户态的目标数据,所述目标数据包括目标字符串;
[0026]虚拟地址空间链表获取模块,用于基于所述目标数据获取对应的虚拟地址空间链表;
[0027]目标字符串搜索模块,用于基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串。
[0028]第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行上述各个实施例所述方法的步骤。
[0029]第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述各个实施例所述方法的步骤。
[0030]上述内存快速搜索方法、装置、计算机设备和存储介质,首先,获取用户态的目标数据,所述目标数据包括目标字符串,之后,基于所述目标数据获取对应的虚拟地址空间链表,最后,基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串,也就是说,通过在内核态中直接对需要查询的数据对应的虚拟内存空间进行搜索匹配,确定是否存在需要查询的数据,不再需要将虚拟内存进行全部复制再遍历,不仅有效加快了内存搜索的速度,同时提高了搜索效率,极大地减少了计算机资源占用。
附图说明
[0031]图1为一个实施例中内存快速搜索方法的应用环境图;
[0032]图2为一个实施例中内存快速搜索方法的流程示意图;
[0033]图3为本申请实施例提供的一种用户态和内核态的实际交互过程的示意图;
[0034]图4为一个实施例中内存快速搜索装置的结构框图;
[0035]图5为一个实施例中计算机设备的内部结构图。
具体实施方式
[0036]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0037]本申请实施例提供的内存快速搜索方法,可以应用于如图1所示的应用环境中。其
中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0038]在一个实施例中,如图2所示,提供了一种内存快速搜索方法,应用于内核态,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
[0039]S201:获取用户态的目标数据,所述目标数据包括目标字符串。
[0040]传统的内存搜索软件都是基于用户态的,比如开源软件scanmem就是通过在用户态遍历虚拟内存空间来达到搜索的目的。具体的,现有的内存搜索软件大都基于ptrace系统调用,将目标进程的全部虚拟内存通过内核态循环复制到自身进程指定内存位置,然后对复制过来的虚拟内存进行搜索匹配,这种全部复制的方式不仅造成了极大的内存浪费,而且遍历了大量无意义的虚拟内存。
[0041]Linux内核模块是Linux内核向外部提供的一个插口为动态可加载内核模块,Linux内核模块具有独立功能的程序,可以被单独编译,因此,是让第三方代码在内核态中运行最灵活且有效的方式,内核态中的代码可以做到用户态程序做不到的很多事,比如获取任意进程的进程描述符,获取任意进程的页表。因此,本申请实施例均是以应用于内核态中的Linux内核模块为例。
[0042]在本申请实施例中,首先获取用户态的目标数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存快速搜索方法,其特征在于,所述方法包括:获取用户态的目标数据,所述目标数据包括目标字符串;基于所述目标数据获取对应的虚拟地址空间链表;基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串。2.根据权利要求1所述的方法,其特征在于,所述目标数据包括目标进程,所述基于所述目标数据获取对应的虚拟地址空间链表包括:基于所述目标数据中的目标进程获取内存页表;基于所述内存页表获取对应的虚拟地址空间链表。3.根据权利要求2所述的方法,其特征在于,所述基于所述目标数据中的目标进程获取内存页表包括:基于所述目标数据中的目标进程,查找进程链表,获取进程描述符;基于所述进程描述符,获取所述目标进程的内存页表。4.根据权利要求2所述的方法,其特征在于,所述基于所述内存页表获取对应的虚拟地址空间链表包括:遍历所述内存页表,过滤未分配物理内存的内存页表;返回过滤之后的虚拟地址空间链表。5.根据权利要求1所述的方法,其特征在于,所述基于所述虚拟地址空间链表,搜索所述目标数据中的目标字符串包括:将所述目标字符串作为模式字符串,采用字符串匹配算法对所述虚拟地址空间链...

【专利技术属性】
技术研发人员:林宏安万跃
申请(专利权)人:杭州安恒信息技术股份有限公司
类型:发明
国别省市:

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

1