一种进程命令行的获取方法、装置、设备以及存储介质与流程

    专利2022-07-08  96


    本申请实施例涉及系统安全技术领域,具体涉及一种进程命令行的获取方法、装置、设备以及存储介质。



    背景技术:

    在电子设备的防御系统中,可以分为进程防御、文件防御以及注册表防御,每个防御点又可以细分为打开防御细节点、读防御细节点以及写防御细节点等,在每个防御细节点上,都需要获取当前进程的进程命令行这个关键数据来进行安全上的判别,或者通过当前进程的进程命令行对其他进程进行监控管理等。例如:在进程防御的读防御细节点上,需要获取正在操作该进程的进程命令行,由此来确定哪一个进程来执行读操作等,以便于在获取当前进程的进程命令行后,方便后台查杀以及系统对这个读的行为做安全性鉴定或者管理等操作,因此获取进程命令行至关重要。

    目前,针对根据当前进程来获取其他进程的进程命令行,通常是借助可以监控进程的启动或关闭等操作的驱动来实现,即在进程启动或关闭时,可以监控并获取到相应的进程参数,如进程命令行等。但使用处于内核中的驱动来获取进程命令行时,若驱动存在漏洞或缺陷,则很容易导致整个系统崩溃,并且驱动的复杂程度高,不利于修复。



    技术实现要素:

    本申请实施例提供了一种进程命令行的获取方法、装置、设备以及存储介质,用于在应用层实现对进程命令行的获取,操作简单,即时出现漏洞也能够轻松修复,对整个系统并不造成影响。

    第一方面,本申请实施例提供了一种进程命令行的获取方法,包括:

    获取当前进程中第一模块的第一句柄,所述第一句柄用于标识所述第一模块在所述当前进程中;

    根据所述第一句柄确定命令行函数在所述当前进程中的进程地址;

    根据所述进程地址确定进程环境块peb,所述peb中的进程参数字段指示目标进程的进程命令行;

    读取所述进程参数字段,以得到所述目标进程的进程命令行。

    在一种可能的设计中,在本申请实施例的第一方面的第一种可能实现方式中,所述根据所述进程地址确定进程环境块peb,包括:

    根据所述进程地址的偏移量与预设偏移量确定第一peb地址;

    调用第一函数读取所述第一peb地址的字节数据;

    将所述第一peb地址的字节数据赋值给第二peb地址,所述第二peb地址位于所述目标进程中;

    调用所述第一函数读取所述第二peb地址的字节数据,以确定所述peb。

    在一种可能的设计中,在本申请实施例的第一方面的第二种可能实现方式中,所述根据所述第一句柄确定所述命令行函数在所述当前进程中的进程地址,包括:

    调用进程地址函数;

    将所述第一句柄输入所述进程地址函数,以确定所述命令行函数在所述当前进程中的进程地址。

    在一种可能的设计中,在本申请实施例的第一方面的第三种可能实现方式中,所述读取所述进程参数字段,包括:

    调用所述第一函数读取所述进程参数字段。

    在一种可能的设计中,在本申请实施例的第一方面的第四种可能实现方式中,在所述获取目标进程中第一模块的第一句柄之前,还包括:

    获取所述当前进程中第二模块的第二句柄,所述第二句柄用于标识所述第二模块在所述当前进程中;

    对应地,所述获取目标进程中第一模块的第一句柄,包括:

    当所述第二句柄为空时,则获取目标进程中第一模块的第一句柄。

    第二方面,本申请实施例提供了一种加密存储装置,该加密存储装置包括:

    获取单元,用于获取当前进程中第一模块的第一句柄,所述第一句柄用于标识所述第一模块在所述当前进程中;

    第一确定单元,用于根据所述获取单元获取到的所述第一句柄确定命令行函数在所述当前进程中的进程地址;

    第二确定单元,用于根据所述第一确定单元确定出的所述进程地址获取进程环境块peb,所述peb中的进程参数字段指示目标进程的进程命令行;

    读取单元,用于读取所述第二确定单元得到的所述进程参数字段,以得到所述目标进程的进程命令行。

    在一种可能的设计中,在本申请实施例的第二方面的第一种可能实现方式中,所述第二确定单元,包括:

    确定模块,用于根据所述进程地址的偏移量与预设偏移量确定第一peb地址;

    第一调用模块,用于调用第一函数读取所述确定模块确定出的所述第一peb地址的字节数据;

    赋值模块,用于将所述第一调用模块得到的所述第一peb地址的字节数据赋值给第二peb地址,所述第二peb地址位于所述目标进程中;

    所述第一调用模块,还用于调用所述第一函数读取所述赋值模块得到的所述第二peb地址的字节数据,以确定所述peb。

    在一种可能的设计中,在本申请实施例的第二方面的第二种可能实现方式中,所述第一确定单元,包括:

    第二调用模块,用于调用进程地址函数;

    输入模块,用于将所述第一句柄输入所述第二调用模块所调用的所述进程地址函数,以确定所述命令行函数在所述当前进程中的进程地址。

    在一种可能的设计中,在本申请实施例的第二方面的第二种可能实现方式中,所述读取单元,包括:

    第三调用模块,用于调用所述第一函数读取所述进程参数字段。

    在一种可能的设计中,在本申请实施例的第二方面的第三种可能实现方式中,

    所述获取单元,还用于在所述获取目标进程中第一模块的第一句柄之前,获取所述当前进程中第二模块的第二句柄,所述第二句柄用于标识所述第二模块在所述当前进程中;

    对应地,所述获取单元,包括:获取模块,用于当所述第二句柄为空时,则获取目标进程中第一模块的第一句柄。

    第三方面,本申请实施例提供一种加计算机设备,该计算机设备包括:

    包括:输入/输出(i/o)接口、处理器和存储器,

    存储器中存储有程序指令;

    处理器用于执行存储器中存储的程序指令,以用于实现如上述第一方面、第一方面任意一种可能实现方式的方法。

    本申请第四方面提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机可执行指令,计算机可执行指令用于执行如第一方面、第一方面任意一种可能实现方式的方法。

    本申请实施例的第五方面提供了一种包含指令的计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一方面的方法。

    从以上技术方案可以看出,本申请实施例具有以下优点:

    本申请实施例中,通过当前进程中的第一句柄确定出命令行函数在当前进程中的进程地址后,可以根据该进程地址确定出peb,而且由于peb中的进程参数字段指示了目标进程的进程命令行,因此读取出该进程参数字段便可以得到该目标进程的进程命令行,实现了在应用层利用当前进程对目标进程的进程命令行的获取,操作简单,即时出现漏洞也能够轻松修复,对整个系统并不造成影响。

    附图说明

    为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

    图1是本申请实施例中提供的进程命令行的获取方法的一个实施例示意图;

    图2是本申请实施例中提供的进程命令行的获取方法的另一个实施例示意图;

    图3是本申请实施例中提供的获取装置一个实施例示意图;

    图4是本申请实施例中提供的获取装置另一个实施例示意图;

    图5是本申请实施例中提供的获取装置另一个实施例示意图;

    图6是本申请实施例提供的计算机设备的结构示意图。

    具体实施方式

    本申请实施例提供了一种进程命令行的获取方法、装置、设备以及存储介质,用于在应用层实现对进程命令行的获取,操作简单,即时出现漏洞也能够轻松修复,对整个系统并不造成影响。

    下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

    本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。

    本申请实施例所提出的方法主要应用于浏览器中,如qq浏览器、ie浏览器、306浏览器等等。当浏览器这个当前进程需要检测其他进程的启动或停止状态时,例如:浏览器这个当前进程中可以包括至少一个进程,可以通过遍历等方式获取到如chrome浏览器中的a进程、b进程、c进程等进程,但是并不清楚上述a进程、b进程以及c进程的具体作用,因此就可以使用本申请中提出的通过当前进程中的进程地址去确定目标进程的进程命令行,从而在得到目标进程的进程命令行后便可以确定出其他进程是启动状态或还是停止状态了。应当理解的是,目标进程则是需要获取命令行的进程,而本申请所提及的浏览器还可以包括百度浏览器、火狐浏览器等等,具体本申请中以qq浏览器为例进行详细介绍。在实际应用中,可以通过windows的“任务管理器”来查看进程的状态,从而进行进程的创建、切换或撤销等操作。

    为便于更好地理解本申请实施例所提出的方案,下面对本实施例中的具体流程进行介绍,请参阅图1,为本申请实施例中提供的进程命令行的获取方法的一个实施例示意图,该方法包括:

    101、获取当前进程中第一模块的第一句柄,第一句柄用于标识第一模块在当前进程中。

    本实施例中,当前进程可以包括浏览器进程等,而句柄是和对象一一对应的32位无符号的整数值,可以使用第一句柄来标识出相应的第一模块在当前进程中。其中,该第一模块可以是kernel32.dll模块。

    可选地,在另一些实施例中,在获取当前进程中第一模块的第一句柄之前,还可以包括:获取所述当前进程中第二模块的第二句柄,所述第二句柄用于标识所述第二模块在所述当前进程中;对应地,所述获取目标进程中第一模块的第一句柄,包括:当所述第二句柄为空时,则获取目标进程中第一模块的第一句柄。也就是理解成,第二模块与第一模块都是当前进程中的基础模块,所以在进程创建时会最先加载,但是如果当获取到的第二句柄为空时,就说明在当前进程中不存在所对应的第二模块,此时就需要获取第一句柄,使得将第一句柄作为参数来确定出命令行函数在当前进程中的进程地址。

    应理解的是,上述所提及的第二模块可以是kernelbase.dll模块。

    102、根据第一句柄确定命令行函数在当前进程中的进程地址。

    本实施例中,在获取到第一句柄后,可以通过第一句柄来确定出命令行函数在当前进程中的进程地址。需要说明的是,一旦通过第一句柄确定出了命令行函数的进程地址,就说明该命令行函数是在该第一句柄标识出的第一模块中运行,并且由于第一模块在不同进程中的地址都是相同的,都唯一的标识该第一模块,因此无论进程命令行的地址如何改变,该命令行函数的进程地址都不会随着改变。

    上述所提及的命令行函数可以是getcommandlinew函数,属于windows系统的api函数中的一个函数,该函数是为了根据参数获得指向当前命令行缓冲区的一个指针,用于返回当前进程的命令行。

    103、根据进程地址确定进程环境块peb,peb中的进程参数字段指示目标进程的进程命令行。

    本实施例中,进程环境块(processenvironmentblock,peb)实际上是目标进程中几个数据结构中唯一在用户地址空间的一个结构,它保存各式各样的信息,如该目标进程中的进程命令行等。因此可以通过当前进程中的命令行函数所对应的进程地址去确定目标进程中的peb,进而可以通过获取peb中的字节数据来得到目标进程的进程命令行。

    应当理解的是,peb中有专门用于指示目标进程的进程命令行的字段,即上述所提及的进程参数字段。在实际应用中,该进程参数字段可以是processparameters字段。

    104、读取进程参数字段,以得到目标进程的进程命令行。

    本实施例中,由于进程参数字段指示了该目标进程的进程命令行,因此可以读取出该进程参数字段,从而根据所读取出的进程参数字段来获取得到相应的进程命令行。

    为了便于理解,在上述图1所描述的实施例的基础上,下面将进一步地对本申请实施例中的具体流程进行具体介绍,请参阅图2,图2是本申请实施例提供的进程命令行的获取方法的另一个实施例示意图。

    201、获取当前进程中第一模块的第一句柄,第一句柄用于标识第一模块在当前进程中。

    本实施例中,当前进程可以包括浏览器进程等,而句柄是和对象一一对应的32位无符号的整数值,可以使用第一句柄来标识出相应的第一模块在当前进程中。其中,该第一模块可以是kernel32.dll模块。

    可选地,在另一些实施例中,在获取当前进程中第一模块的第一句柄之前,还可以包括:获取所述当前进程中第二模块的第二句柄,所述第二句柄用于标识所述第二模块在所述当前进程中;对应地,所述获取目标进程中第一模块的第一句柄,包括:当所述第二句柄为空时,则获取目标进程中第一模块的第一句柄。也就是理解成,第二模块与第一模块都是当前进程中的基础模块,所以在进程创建时会最先加载,但是如果当获取到的第二句柄为空时,就说明在当前进程中不存在所对应的第二模块,此时就需要获取第一句柄,使得将第一句柄作为参数来确定出命令行函数在当前进程中的进程地址。

    应理解的是,上述所提及的第二模块可以是kernelbase.dll模块。

    202、调用进程地址函数。

    本实施例中,进程地址函数是可以用于获取相应的进程地址的函数。应当理解的是,进程地址函数可以是getprocessaddress函数等。

    203、将第一句柄输入进程地址函数,以确定命令行函数在当前进程中的进程地址。

    本实施例中,由于进程地址函数是可以用于获取相应的进程地址的函数,因此可以在获取到第一句柄后,以第一句柄为参数输入到该进程地址函数中,从而输出该命令行函数在当前进程中的进程地址。

    需要说明的是,一旦通过第一句柄确定出了命令行函数的进程地址,就说明该命令行函数是在该第一句柄标识出的第一模块中运行,并且由于第一模块在不同进程中的地址都是相同的,都唯一的标识该第一模块,因此无论进程命令行的地址如何改变,该命令行函数的进程地址都不会随着改变,也就是说在目标进程中,命令行函数在目标进程中的地址也可以用该进程地址进行表示,如用address_fun进行表示。

    上述所提及的命令行函数可以是getcommandlinew函数。

    204、根据进程地址的偏移量与预设偏移量确定第一peb地址。

    本实施例中,在获取到进程地址后,可以相应的得到该进程地址的偏移量,并且由于该进程地址在目标进程中与在当前进程中的地址可以使用同一个地址,因此可以根据该进程地址的偏移量与预设偏移量来确定出该第一peb地址的偏移量后,便可以获取到该第一peb地址。具体地,由于浏览器中是使用32位处理器一次性处理4字节的数据,而[1]-[4]保持了同一个指针,并且都指向了peb,假设用address_fun[0]表示该进程地址,那么可以在该address_fun[0]的偏移量基础上向后移一位,使用address_fun[1]-address_fun[4]表示该第一peb地址。

    205、调用第一函数读取第一peb地址的字节数据。

    本实施例中,第一函数是可以用于获取其他进程的内存数据的函数,并且通过该第一peb地址可以获知该地址中的字节数据,所以可以调用第一函数便可以读取到该第一peb地址的字节数据。

    应理解,上述所提及的第一函数可以是readprocessmemory函数,该readprocessmemory函数是在编程中的一个内存操作函数,用来读取目标进程或指定进程的空间的数据,并且该空间必须是可以访问的,否则读取操作会失败。

    206、将第一peb地址的字节数据赋值给第二peb地址,第二peb地址位于述目标进程中。

    本实施例中,该第二peb地址是位于目标进程中,并且可以用于保存peb的字节内容。也就是说通过读取该第二peb地址的字节数据就能够确定出该目标进程中的peb,所以通过把当前进程中的第一peb地址的字节数据赋值给第二peb地址,建立起当前进程与目标进程之间的桥梁,使可以实现在应用层上利用当前进程去管理监控目标进程的状态。

    207、调用第一函数读取第二peb地址的字节数据,以确定peb,peb中的进程参数字段指示目标进程的进程命令行。

    本实施例中,第一函数是可以用于获取其他进程的内存数据的函数,如目标进程的内存数据,并且通过该第二peb地址可以获知该地址中的字节数据,所以通过调用第一函数便可以读取到该第二peb地址的字节数据。

    另外,peb中有专门用于指示目标进程的进程命令行的字段,即上述所提及的进程参数字段。应理解,该进程参数字段可以是processparameters字段,上述所提及的第一函数可以是readprocessmemory函数。

    208、调用第一函数读取进程参数字段,以得到目标进程的进程命令行。

    本实施例中,由于进程参数字段指示了该目标进程的进程命令行,因此可以再次调用第一函数可以读取出该进程参数字段,从而根据所读取出的进程参数字段来获取得到相应的进程命令行。

    因此,本申请实施例中通过当前进程中的第一句柄确定出命令行函数在当前进程中的进程地址后,可以根据该进程地址确定出peb,而且由于peb中的进程参数字段指示了目标进程的进程命令行,因此读取出该进程参数字段便可以得到该目标进程的进程命令行,实现了在应用层利用当前进程对目标进程的进程命令行的获取,操作简单,即时出现漏洞也能够轻松修复,对整个系统并不造成影响。

    上述主要从方法的角度对本申请实施例提供的方案进行了介绍。可以理解的是为了实现上述功能,包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

    本申请实施例可以根据上述方法示例对装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

    下面对本申请实施例中的获取装置进行详细描述,请参阅图3,图3为本申请实施例中提供的获取装置一个实施例示意图,该获取装置可以包括:

    获取单元301,用于获取当前进程中第一模块的第一句柄,所述第一句柄用于标识所述第一模块在所述当前进程中;

    第一确定单元302,用于根据所述获取单元301获取到的所述第一句柄确定命令行函数在所述当前进程中的进程地址;

    第二确定单元303,用于根据所述第一确定单元302确定出的所述进程地址获取进程环境块peb,所述peb中的进程参数字段指示目标进程的进程命令行;

    读取单元304,用于读取所述第二确定单元303得到的所述进程参数字段,以得到所述目标进程的进程命令行。

    可选地,在上述图3所对应的实施例的基础上,请参阅图4,为本申请实施例提供的获取装置的另一个实施例示意图,所述第二确定单元303,包括:

    确定模块3031,用于根据所述进程地址的偏移量与预设偏移量确定第一peb地址;

    第一调用模块3032,用于调用第一函数读取所述确定模块3031确定出的所述第一peb地址的字节数据;

    赋值模块3033,用于将所述第一调用模块3032得到的所述第一peb地址的字节数据赋值给第二peb地址,所述第二peb地址位于所述目标进程中;

    所述第一调用模块3032,还用于调用所述第一函数读取所述赋值模块3033得到的所述第二peb地址的字节数据,以确定所述peb。

    可选地,在上述图3或图4所对应的实施例的基础上,请参阅图5,为本申请实施例提供的获取装置的另一个实施例示意图,所述第一确定单元302,包括:

    第二调用模块3021,用于调用进程地址函数;

    输入模块3022,用于将所述第一句柄输入所述第二调用模块3021所调用的所述进程地址函数,以确定所述命令行函数在所述当前进程中的进程地址。

    可选地,在上述4对应的实施例的基础上,本申请实施例提供的获取装置的另一实施例中,所述读取单元304,包括:第三调用模块,用于调用所述第一函数读取所述进程参数字段。

    可选地,在上述图3对应的实施例的基础上,本申请实施例提供的获取装置的另一实施例中,所述获取单元,还用于在所述获取目标进程中第一模块的第一句柄之前,获取所述当前进程中第二模块的第二句柄,所述第二句柄用于标识所述第二模块在所述当前进程中;对应地,所述获取单元,包括:获取模块,用于当所述第二句柄为空时,则获取目标进程中第一模块的第一句柄。

    因此,本申请实施例中通过第一确定单元302将当前进程中的第一句柄确定出命令行函数在当前进程中的进程地址后,并经由第二确定单元303可以根据该进程地址确定出peb,而且由于peb中的进程参数字段指示了目标进程的进程命令行,因此由读取单元304读取出该进程参数字段便可以得到该目标进程的进程命令行,实现了在应用层利用当前进程对目标进程的进程命令行的获取,操作简单,即时出现漏洞也能够轻松修复,对整个系统并不造成影响。

    上面从模块化功能实体的角度对本申请实施例中的获取装置进行描述,下面从硬件处理的角度对本申请实施例中的计算机设备进行描述。图6是本申请实施例提供的计算机设备的结构示意图,该计算机设备可以包括上述所描述的获取装置等,该计算机设备可因配置或性能不同而产生比较大的差异,该计算机设备可以包括至少一个处理器401,通信线路407,存储器403以及至少一个通信接口404。

    处理器401可以是一个通用中央处理器(centralprocessingunit,cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,服务器ic),或一个或多个用于控制本申请方案程序执行的集成电路。

    通信线路407可包括一通路,在上述组件之间传送信息。

    通信接口404,使用任何收发器一类的装置,用于与其他装置或通信网络通信,如以太网,无线接入网(radioaccessnetwork,ran),无线局域网(wirelesslocalareanetworks,wlan)等。

    存储器403可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储装置,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储装置,存储器可以是独立存在,通过通信线路407与处理器相连接。存储器也可以和处理器集成在一起。

    其中,存储器403用于存储执行本申请方案的计算机执行指令,并由处理器401来控制执行。处理器401用于执行存储器403中存储的计算机执行指令,从而实现本申请上述实施例提供的进程命令行的获取方法。

    可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。

    在具体实现中,作为一种实施例,该计算机设备可以包括多个处理器,例如图6中的处理器401和处理器402。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个装置、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

    在具体实现中,作为一种实施例,该计算机设备还可以包括输出设备405和输入设备406。输出设备405和处理器401通信,可以以多种方式来显示信息。输入设备406和处理器401通信,可以以多种方式接收用户的输入。例如,输入设备406可以是鼠标、触摸屏装置或传感装置等。

    上述的计算机设备可以是一个通用装置或者是一个专用装置。在具体实现中,该计算机设备可以是台式机、便携式电脑、nas服务器、无线终端装置、嵌入式装置或有图6中类似结构的装置。本申请实施例不限定该计算机设备的类型。

    在本申请实施例中,该计算机设备所包括的处理器401还具有以下功能:

    获取当前进程中第一模块的第一句柄,所述第一句柄用于标识所述第一模块在所述当前进程中;

    根据所述第一句柄确定命令行函数在所述当前进程中的进程地址;

    根据所述进程地址确定进程环境块peb,所述peb中的进程参数字段指示目标进程的进程命令行;

    读取所述进程参数字段,以得到所述目标进程的进程命令行。

    在本申请的一些实施例中,该处理器401还可以具体用于,

    根据所述进程地址的偏移量与预设偏移量确定第一peb地址;

    调用第一函数读取所述第一peb地址的字节数据;

    将所述第一peb地址的字节数据赋值给第二peb地址,所述第二peb地址位于所述目标进程中;

    调用所述第一函数读取所述第二peb地址的字节数据,以确定所述peb。

    在本申请的一些实施例中,该处理器401还可以具体用于,

    调用进程地址函数;

    将所述第一句柄输入所述进程地址函数,以确定所述命令行函数在所述当前进程中的进程地址。

    在本申请实施例中,该计算机设备所包括的处理器401还具有以下功能:

    调用所述第一函数读取所述进程参数字段。

    在本申请的一些实施例中,该处理器401还可以具体用于,

    在所述获取目标进程中第一模块的第一句柄之前,获取所述当前进程中第二模块的第二句柄,所述第二句柄用于标识所述第二模块在所述当前进程中;

    对应地,当所述第二句柄为空时,则获取目标进程中第一模块的第一句柄。

    所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

    在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

    作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

    另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

    集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

    以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。


    技术特征:

    1.一种进程命令行的获取方法,其特征在于,包括:

    获取当前进程中第一模块的第一句柄,所述第一句柄用于标识所述第一模块在所述当前进程中;

    根据所述第一句柄确定命令行函数在所述当前进程中的进程地址;

    根据所述进程地址确定进程环境块peb,所述peb中的进程参数字段指示目标进程的进程命令行;

    读取所述进程参数字段,以得到所述目标进程的进程命令行。

    2.根据权利要求1所述的方法,其特征在于,所述根据所述进程地址确定进程环境块peb,包括:

    根据所述进程地址的偏移量与预设偏移量确定第一peb地址;

    调用第一函数读取所述第一peb地址的字节数据;

    将所述第一peb地址的字节数据赋值给第二peb地址,所述第二peb地址位于所述目标进程中;

    调用所述第一函数读取所述第二peb地址的字节数据,以确定所述peb。

    3.根据权利要求1或2所述的方法,其特征在于,所述根据所述第一句柄确定所述命令行函数在所述当前进程中的进程地址,包括:

    调用进程地址函数;

    将所述第一句柄输入所述进程地址函数,以确定所述命令行函数在所述当前进程中的进程地址。

    4.根据权利要求2所述的方法,其特征在于,所述读取所述进程参数字段,包括:

    调用所述第一函数读取所述进程参数字段。

    5.根据权利要求1所述的方法,其特征在于,在所述获取目标进程中第一模块的第一句柄之前,还包括:

    获取所述当前进程中第二模块的第二句柄,所述第二句柄用于标识所述第二模块在所述当前进程中;

    对应地,所述获取目标进程中第一模块的第一句柄,包括:

    当所述第二句柄为空时,则获取目标进程中第一模块的第一句柄。

    6.一种获取装置,其特征在于,包括:

    获取单元,用于获取当前进程中第一模块的第一句柄,所述第一句柄用于标识所述第一模块在所述当前进程中;

    第一确定单元,用于根据所述获取单元获取到的所述第一句柄确定命令行函数在所述当前进程中的进程地址;

    第二确定单元,用于根据所述第一确定单元确定出的所述进程地址获取进程环境块peb,所述peb中的进程参数字段指示目标进程的进程命令行;

    读取单元,用于读取所述第二确定单元得到的所述进程参数字段,以得到所述目标进程的进程命令行。

    7.根据权利要求6所述的获取装置,其特征在于,所述第二确定单元,包括:

    确定模块,用于根据所述进程地址的偏移量与预设偏移量确定第一peb地址;

    第一调用模块,用于调用第一函数读取所述确定模块确定出的所述第一peb地址的字节数据;

    赋值模块,用于将所述第一调用模块得到的所述第一peb地址的字节数据赋值给第二peb地址,所述第二peb地址位于所述目标进程中;

    所述第一调用模块,还用于调用所述第一函数读取所述赋值模块得到的所述第二peb地址的字节数据,以确定所述peb。

    8.根据权利要求6或7所述的获取装置,其特征在于,所述第一确定单元,包括:

    第二调用模块,用于调用进程地址函数;

    输入模块,用于将所述第一句柄输入所述第二调用模块所调用的所述进程地址函数,以确定所述命令行函数在所述当前进程中的进程地址。

    9.一种计算机设备,其特征在于,所述计算机设备包括:输入/输出(i/o)接口、处理器和存储器,

    所述存储器中存储有程序指令;

    所述处理器用于执行存储器中存储的程序指令,执行如权利要求1至5中任一所述的方法。

    10.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1至5中任一项所述的方法。

    技术总结
    本申请实施例公开了一种进程命令行的获取方法,用于在应用层实现利用当前进程对目标进程的进程命令行的获取,操作简单,即时出现漏洞也能够轻松修复,对整个系统并不造成影响。本申请实施例提供的一种进程命令行的获取方法包括:获取当前进程中第一模块的第一句柄,第一句柄用于标识第一模块在当前进程中;根据第一句柄确定命令行函数在当前进程中的进程地址;根据进程地址确定进程环境块PEB,PEB中的进程参数字段指示目标进程的进程命令行;读取进程参数字段,以得到目标进程的进程命令行。

    技术研发人员:尚子峰
    受保护的技术使用者:腾讯科技(深圳)有限公司
    技术研发日:2019.09.12
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21046.html

    最新回复(0)