文件压缩和解压缩方法以及文件压缩和解压缩装置

文档序号:1921476 发布日期:2021-12-03 浏览:19次 >En<

阅读说明:本技术 文件压缩和解压缩方法以及文件压缩和解压缩装置 (File compression and decompression method and file compression and decompression device ) 是由 屈梦梦 李常坤 刘金朋 于 2020-05-27 设计创作,主要内容包括:本公开提供了一种文件压缩方法,该方法包括:检测第一进程是否被启动以用于压缩目标文件;响应于检测到第一进程被启动以用于压缩目标文件,使第一进程的输出重定向至第一程序;响应于第一进程的输出被重定向至第一程序,通过第一程序执行第一方法逻辑并调用第二进程,以使第一程序的输出重定向至第二进程;通过第二进程,对目标文件或者对执行第一方法逻辑而获得的与目标文件关联的中间文件执行压缩操作,以获得目标文件的压缩文件;以及其中,第一进程和第二进程为压缩工具程序,第一程序为自定义程序。本公开还提供了一种文件压缩装置、一种电子设备以及一种计算机可读存储介质。(The present disclosure provides a file compression method, which includes: detecting whether a first process is started for compressing a target file; in response to detecting that the first process is launched for compressing the target file, redirecting output of the first process to the first program; in response to the output of the first process being redirected to the first program, executing a first method logic by the first program and invoking a second process to redirect the output of the first program to the second process; executing, by a second process, a compression operation on the target file or on an intermediate file associated with the target file obtained by executing the first method logic to obtain a compressed file of the target file; and the first process and the second process are compression tool programs, and the first program is a self-defined program. The present disclosure also provides a file compression apparatus, an electronic device, and a computer-readable storage medium.)

文件压缩和解压缩方法以及文件压缩和解压缩装置

技术领域

本公开涉及计算机信息安全软件领域,特别是涉及一种文件压缩方法、一种文件解压缩方法、一种文件压缩装置、一种文件解压缩装置、一种电子设备、一种计算机可读存储介质以及一种计算机程序产品。

背景技术

常用的文件压缩与解压缩方法有一次重定向文件压缩与解压缩方法。

在实现本公开发明构思的过程中,发明人发现:仅采用一次重定向技术的文件压缩与解压缩方法在实际应用中并不完善。例如,当压缩工具的原始进程的输出通过一次重定向而重定向至自定义的程序时,该自定义的程序先执行完预先设定的处理逻辑,之后直接调用系统调用来执行重定向前的原始进程,而该系统调用会将当前执行的该自定义的程序直接替换为压缩工具的原始进程而退出。这使得该自定义的程序由于已退出而无法正常给原始进程返回的返回值,进而导致原始进程异常退出,使得文件压缩与解压缩无法完成。

发明内容

本公开的一个方面提供了一种文件压缩方法,包括:检测第一进程是否被启动以用于压缩目标文件;响应于检测到所述第一进程被启动以用于压缩所述目标文件,使所述第一进程的输出重定向至第一程序;响应于所述第一进程的输出被重定向至所述第一程序,通过所述第一程序执行第一方法逻辑并调用第二进程,以使所述第一程序的输出重定向至所述第二进程;通过所述第二进程,对所述目标文件或者对执行所述第一方法逻辑而获得的与所述目标文件关联的中间文件执行压缩操作,以获得所述目标文件的压缩文件;以及其中,所述第一进程和所述第二进程为压缩工具程序,所述第一程序为自定义程序。

可选地,还包括:在对所述目标文件执行所述压缩操作并获得对应的压缩文件后,通过所述第一程序执行第二方法逻辑以对所述对应的压缩文件执行加密操作。

可选地,所述目标文件包括具有密级标识的加密文件。

可选地,还包括:如果返回值表征所述第二进程已执行完成,则通过所述第一程序删除与所述目标文件关联的中间文件,其中,所述返回值为用于调用所述第二进程的函数向所述第一程序返回的值。

可选地,还包括:在通过所述第二进程执行所述压缩操作之前,确定当前节点的父节点是否为所述第一程序对应的节点,其中,所述当前节点为所述第二进程对应的节点。

可选地,所述检测第一进程是否被启动以用于压缩目标文件,包括:检测是否存在针对所述目标文件的第一操作。

可选地,所述使所述第一进程的输出重定向至第一程序,包括:当预先设置的钩子函数拦截到所述第一进程被启动的消息事件时,通过所述钩子函数函数捕获对应的消息;以及在消息捕获完成后,通过回调函数启动并运行所述第一程序。

本公开的另一个方面提供了一种文件解压缩方法,包括:检测第三进程是否被启动以用于解压缩目标加密压缩包;响应于检测到所述第三进程被启动以用于解压缩所述目标加密压缩包,使所述第三进程的输出重定向至第二程序;响应于所述第三进程的输出被重定向至所述第二程序,执行以下操作:先通过所述第二程序执行解密操作,再调用第四进程以使所述第二程序的输出重定向至所述第四进程,进而通过所述第四进程对执行所述解密操作而获得的解密压缩包执行解压缩操作,以获得所述目标加密压缩包的解压文件;或者先调用第四进程以使所述第二程序的输出重定向至所述第四进程,进而通过所述第四进程对所述目标加密压缩包执行解压缩操作,进而通过所述第二程序对执行所述解压缩操作而获得的解压缩加密文件执行解密操作,以获得所述目标加密压缩包的解压文件;其中,所述第三进程和所述第四进程为解压缩工具程序,所述第二程序为自定义程序。

可选地,所述解压文件包括具有密级标识的加密文件。

可选地,还包括:如果返回值表征所述第四进程已执行完成,则通过所述第二程序删除与所述加密解压文件关联的中间文件,其中,所述返回值为用于调用所述第四进程的函数向所述第二程序返回的值。

可选地,还包括:在通过所述第四进程执行所述解压缩操作之前,确定当前节点的父节点是否为所述第二程序对应的节点,其中,所述当前节点为所述第四进程对应的节点。

可选地,所述检测第三进程是否被启动以用于解压缩目标加密压缩包,包括:检测是否存在针对所述目标加密压缩包的第二操作。

可选地,所述使所述第三进程的输出重定向至第二程序,包括:当预先设置的钩子函数拦截到所述第三进程被启动的消息事件时,通过钩子函数捕获对应的消息;以及在消息捕获完成后,通过回调函数启动并运行所述第二程序。

本公开的又一个方面提供了一种文件压缩装置,包括:第一检测模块,用于检测第一进程是否被启动以用于压缩目标文件;第一重定向模块,用于响应于检测到所述第一进程被启动以用于压缩所述目标文件,使所述第一进程的输出重定向至第一程序;第二重定向模块,用于响应于所述第一进程的输出被重定向至所述第一程序,通过所述第一程序执行第一方法逻辑并调用第二进程,以使所述第一程序的输出重定向至所述第二进程;压缩模块,用于通过所述第二进程,对所述目标文件或者对执行所述第一方法逻辑而获得的与所述目标文件关联的中间文件执行压缩操作,以获得所述目标文件的压缩文件;以及其中,所述第一进程和所述第二进程为压缩工具程序,所述第一程序为自定义程序。

本公开的再一个方面提供了一种文件解压缩装置,包括:第二检测模块,用于检测第三进程是否被启动以用于解压缩目标加密压缩包;第三重定向模块,用于响应于检测到所述第三进程被启动以用于解压缩所述目标加密压缩包,使所述第三进程的输出重定向至第二程序;处理模块,用于响应于所述第二进程的输出被重定向至所述第二程序,执行以下操作:先通过所述第二程序执行解密操作,再调用第四进程以使所述第二程序的输出重定向至所述第四进程,进而通过所述第四进程对执行所述解密操作而获得的解密压缩包执行解压缩操作,以获得所述目标加密压缩包的解压文件;或者先调用第四进程以使所述第二程序的输出重定向至所述第四进程,进而通过所述第四进程对所述目标加密压缩包执行解压缩操作,进而通过所述第二程序对执行所述解压缩操作而获得的解压缩加密文件执行解密操作,以获得所述目标加密压缩包的解压文件;其中,所述第三进程和所述第四进程为解压缩工具程序,所述第二程序为自定义程序。

本公开的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本公开实施例的方法。

本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现本公开实施例的方法。

本公开的另一方面提供了一种计算机程序产品,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现本公开实施例的方法。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本公开实施例的适于文件压缩、解压缩方法和装置的应用场景;

图2示意性示出了根据本公开实施例的文件压缩方法的流程图;

图3示意性示出了根据本公开实施例的重定向第一进程的输出的示意图;

图4示意性示出了根据本公开实施例的文件解压缩方法的流程图;

图5示意性示出了根据本公开实施例的文件压缩装置的框图;

图6示意性示出了根据本公开实施例的文件解压缩装置的框图;以及

图7示意性示出了根据本公开实施例的电子设备的框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。

本公开的实施例提供了一种文件压缩、解压缩方法以及能够应用该文件压缩、解压缩方法的文件压缩、解压缩装置。其中该文件压缩方法包括如下操作。检测第一进程是否被启动以用于压缩目标文件。响应于检测到该第一进程被启动以用于压缩该目标文件,使该第一进程的输出重定向至第一程序。响应于该第一进程的输出被重定向至该第一程序,通过该第一程序执行第一方法逻辑并调用第二进程,以使该第一程序的输出重定向至该第二进程。通过该第二进程,对该目标文件或者对执行该第一方法逻辑而获得的与该目标文件关联的中间文件执行压缩操作,以获得该目标文件的压缩文件。其中,该第一进程和该第二进程为压缩工具程序,该第一程序为自定义程序。

图1示意性示出了根据本公开实施例的适于文件压缩、解压缩方法和装置的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他环境或场景。

如图1所示,该界面中显示有没有加密的文件1(如一个普通的visio文档)、加密文件2(如一个具有密级标识的Word文档)以及包含多个文件但这多个文件中的至少之一为加密文件的文件3(如文件3中包含一个具有密级标识的Word文档和一个普通的visio文档)和压缩文件4。其中,与压缩文件4对应的压缩前的文件的类型可以是文件1、文件2、文件3中的任意一种。

如果用户针对此界面上显示的文件1~文件4中的任意一个或者多个执行压缩操作,则可以使用本公开提供的文件压缩方法来实现该压缩操作。

如果用户针对此界面上显示的文件4执行解压缩操作,则可以使用本公开提供的文件解压缩方法来实现该解压缩操作。

以下将结合附图和具体实施例详细阐述本公开。

图2示意性示出了根据本公开实施例的文件压缩方法的流程图。

如图2所示,该方法例如可以包括操作S210~S240。

在操作S210,检测第一进程是否被启动以用于压缩目标文件。

在本公开实施例中,可以对原有的压缩工具进行改进,从而实现对原有压缩工具的定制。其中,原有的压缩工具例如可以包括各种格式的压缩工具,本公开实施例在此不做限定。例如,原有的压缩工具可以包括支持以下格式的压缩工具中的至少之一:zip、gzip、unzip、tar、lsar、7z、7za、7zr、rar、unrar、compress、gtar等格式。

具体地,针对原有的压缩工具定制新的压缩工具例如可以包括:保留原有压缩工具的原始进程;在保留原始进程的基础上,增加新的自定义程序。该自定义程序用于执行预定的加密逻辑。其中,操作S210中涉及的第一进程例如可以为原有的压缩工具自带的压缩工具程序,即前述的原始进程。

在本公开实施例中,操作S210例如可以包括:检测是否存在针对目标文件的第一操作。该第一操作可以包括至少一次点击操作或触控操作。

例如,在一个实施例中,如果检测到用户先使用鼠标左键点击了如图1所示的“文件1”,又点击了鼠标右键,进而在点击鼠标右键后显示的界面上点击了诸如“添加到压缩文件(A)…”的条目,则表明检测到上述第一进程被触发,并开始启动、运行。在此示例中,“文件1”即为需要压缩的目标文件。在其他示例中,如图1所示的文件2~文件4中的一个或者多个可以为需要压缩的目标文件。

作为一个可选的实施例,目标文件例如可以包括具有密级标识的加密文件。在本公开实施例中,密级标识可以是特定的密级标识,或者也可以是任意的密级标识。在本公开实施例中,可以仅对密级加密文件实现普通压缩(即仅执行压缩相关操作),也可以同时对密级加密文件实现加密压缩(即执行压缩相关操作和加密相关操作)。其中加密压缩可以使得压缩包更加安全。

其中,在安全软件应用场景下,对具有密级标识的加密文件进行加密压缩,可以提供密级标识保持功能。即,在执行压缩操作过程中,可以使密级标识始终跟随每一步操作得到的结果文件,由此可以使针对带有密级标识的加密文件进行压缩而得到的压缩包与原加密文件保持一致,即两者具备同样的加密属性,都带有相同的密级标识。

接下来,在操作S220,响应于检测到第一进程被启动以用于压缩目标文件,使第一进程的输出重定向至第一程序。

其中,操作S220中的涉及的第一程序例如可以是在保留原始进程的基础上新增加的自定义程序。并且,操作S220为压缩过程中的一次重定向操作。

需要说明的是,操作S220中,检测到第一进程被启动例如可以包括:检测到第一进程在一次压缩事件中被首次启动。并且,本公开实施例提供的文件压缩方法中各步骤的执行主体例如可以是操作系统的内核。

作为一个实施例,在操作S220,例如,一旦内核感知到存在相关压缩工具的启动操作以用于压缩某个加密文件,则可以直接在内核中拦截该压缩工具的原始进程,同时将该原始进程的输出重定向至新增加的自定义程序,以便通过执行该自定义程序的预设方法逻辑来实现对该加密文件的处理。

再接下来,在操作S230,响应于第一进程的输出被重定向至第一程序,通过第一程序执行第一方法逻辑并调用第二进程,以使第一程序的输出重定向至第二进程。

然后,在操作S240,通过第二进程,对目标文件或者对执行第一方法逻辑而获得的与目标文件关联的中间文件执行压缩操作,以获得目标文件的压缩文件。

具体地,在本公开实施例中,定制后的压缩工具在一个实施例中例如可以仅用于对待压缩的文件(如目标文件)实现压缩操作,或者在另一个实施例中可以对待压缩的文件实现加密操作和压缩操作。

进一步,对待压缩的文件实现加密操作和压缩操作。

在一个实施例中,例如可以先执行加密操作,后执行压缩操作。

或者,在另一个实施例中,例如可以先执行压缩操作,后执行加密操作。具体地,作为一种可选的实施例,该方法例如还可以包括:在对目标文件执行压缩操作并获得对应的压缩文件后,通过第一程序执行第二方法逻辑以对对应的压缩文件执行加密操作。

对应地,如果定制后的压缩工具仅用于对待压缩的文件实现压缩操作,则操作S230中,第一程序通过执行第一方法逻辑可以仅对用户通过命令行或者文档管理器输入的信息进行解析,并根据解析结果确定压缩工具是否正在对待压缩的目标文件(包括图1中所示的任意一种或几种文件类型)进行压缩。如果确定压缩工具正在对目标文件进行压缩,则调用第二进程并执行操作S240。可以理解,此种情况下,执行操作S240仅包括通过第二进程对待压缩的目标文件执行压缩操作,以获得该目标文件的压缩包(即压缩文件)。

或者,如果定制后的压缩工具用于对待压缩的文件实现先加密后压缩的操作,则操作S230中,第一程序通过执行第一方法逻辑可以先对用户通过命令行或者文档管理器输入的信息进行解析,并根据解析结果确定压缩工具是否正在对待压缩的目标文件(包括图1中所示的任意一种或几种文件类型)进行压缩。如果确定压缩工具正在对目标文件进行压缩,则第一程序再通过执行第一方法逻辑对目标文件执行加密操作以获得对应的加密文件。待加密操作执行完成,第一程序再调用第二进程并执行操作S240。可以理解,此种情况下,执行操作S240仅包括通执行第一方法逻辑而获得的与目标文件关联的中间文件(如前述的对应的加密文件)执行压缩操作,以获得目标文件的压缩文件。

或者,如果定制后的压缩工具用于对待压缩的文件实现先压缩后加密的操作,则操作S230中,第一程序通过执行第一方法逻辑可以先对用户通过命令行或者文档管理器输入的信息进行解析,并根据解析结果确定压缩工具是否正在对待压缩的目标文件(包括图1中所示的任意一种或几种文件类型)进行压缩。如果确定压缩工具正在对目标文件进行压缩,则第一程序再调用第二进程并执行操作S240。进而在操作S240执行完成后,再通过第一程序执行第二方法逻辑,以便能够对通过执行操作S240而获得的压缩文件执行加密操作,从而获得对应的加密压缩文件。可以理解,此种情况下,执行操作S240执行操作S240仅包括通过第二进程对待压缩的目标文件执行压缩操作,以获得该目标文件的压缩文件。

其中,操作S230和操作S240中涉及的第二进程例如可以为原有的压缩工具自带的压缩工具程序,即前述的原始进程。并且,该第二进程与前述的第一进程可以为同一进程;或者,该第二进程与前述的第一进程还可以为不同的进程。

此外,操作S230中,通过第一程序调用第二进程以使第一程序的输出重定向至第二进程为压缩过程中的二次重定向。

具体地,操作S230中,第一程序例如可以通过名为system的函数调用第二进程来实现二次重定向。该函数至少有以下两个优点:

(1)仅采用一次重定向操作的文件压缩方法,自定义程序由于会被替换为压缩工具的原始进程而直接退出,由此导致自定义程序无法获得原始进程返回的返回值,进而导致原始进程异常退出,使得文件压缩无法完成。与此不同,该函数启动第二进程执行压缩操作时,第二进程不会将第一程序替换掉,因而第一程序可以获得第二进程返回的返回值,因而第二进程不会异常退出,使得文件压缩可以顺利完成。即本公开实施例通过采用两次重定向操作的文件压缩方法,可以克服采用一次重定向操作的文件压缩方法中存在的缺陷。

(2)该函数在第二进程退出前不会返回,而是会等待第二进程退出后才返回。并且,该函数在返回时会将第二进程的退出码以及执行压缩操作的结果码以及压缩完成的压缩包的存储路径返回给第一程序。由此第一程序可以基于该函数返回的返回值执行相关操作。例如,在先执行加密操作后执行压缩操作的实施例中,第一程序可以基于该函数返回的返回值,删除执行加密操作而产生的中间文件。由此可以克服采用一次重定向操作的文件压缩方法中,自定义程序由于会被替换为压缩工具的原始进程而直接退出所导致的大量重定向而产生的中间文件无法被删除的缺陷。再例如,在先执行压缩操作后执行加密操作的实施例中,第一程序可以基于该函数返回的返回值,先执行加密操作再删除第二进程执行压缩操作而产生的中间文件。由此也可以克服采用一次重定向操作的文件压缩方法无法删除中间文件的缺陷。

此外,操作S230和操作S240中,通过二次重定向调用第二进程,可以直接通过压缩工具的原始进程完成压缩操作,除了自定义第一程序之外不需要新增额外的自定义压缩程序,因此实现方案相对简单,并且可以同时支持多种格式的原有压缩工具来完成更多的业务逻辑,以便能适应较为复杂的应用场景。

并且,在本公开实施例中,例如,如果待压缩的目标文件是一个普通文件(比如如图1所示的文件1),则在操作S230和操作S240,例如可以仅对此目标文件执行压缩操作。再例如,如果待压缩的目标文件是一个加密文件或者涉及加密的文件(如如图1所示的文件2和文件3、以及原始文件涉及加密文件的文件4),则在操作S230和操作S240,例如可以对此目标文件,同时执行压缩操作和加密操作。

基于二次重定向技术的上述优点,在一个实施例中,该方法例如还可以包括:如果返回值表征第二进程已执行完成,则通过第一程序删除与目标文件关联的中间文件,其中,返回值为用于调用第二进程的函数向第一程序返回的值。

应该理解,在本公开实施例中,如果对待压缩的文件(目标文件)既执行加密操作又执行压缩操作,并且如果先对该文件执行了加密操作得到一加密文件,再在此基础上对该加密文件执行压缩操作得到一加密压缩文件,则此时中间文件包括前述加密文件。或者,如果先对该文件执行了压缩操作得到一压缩文件,再在此基础上对该压缩文件执行加密操作得到一加密压缩文件,则此时中间文件包括前述压缩文件。

此外,在本公开实施例中,在执行压缩操作时,可以对待压缩的文件进行重命名,并且可以将重命名的压缩文件保存在指定路径下。由此可以避免新生成的压缩文件覆盖同名的已有压缩文件,并由此影响同名的已有压缩文件的加密属性。

通过本公开实施例,在利用原有的压缩工具定制新的压缩工具并用于文件压缩时,可以采用两次重定向技术,即在压缩工具的原始进程启动后先将其输出重定向至自定义的程序以实现一次重定向,再通过该自定义的程序调用压缩工具的原始进程以实现二次重定向,并且在二次重定向后自定义的程序不会被压缩工具的原始进程(第二进程)所替代,第一程序可以获得第二进程返回的返回值,因而第二进程不会异常退出,使得文件压缩可以顺利完成,并且可以删除临时产生的中间文件,避免产生大量的冗余文件。而单次重定向技术(即一次重定向技术)由于自定义的程序会直接替换为压缩工具的原始进程而退出,因而临时产生的中间文件通常无法被删除,由此导致产生大量的冗余文件。

此外,为了使本公开实施例提供的方法能够同时支持对多种格式的压缩工具的定制,本公开实施例采用二次重定向技术,将自定义的程序重定向至压缩工具自带的原始程序以执行压缩操作,因而不需要针对每种格式的压缩工具都自定义对应的压缩程序,这使得实现方案相对简单,工作量也小。而单次重定向技术(即一次重定向技术)则需要针对每种格式的原有压缩工具分别自定义相应的压缩程序用于执行压缩操作,因而工作量大,并且不同的压缩工具通常具有不同的压缩包处理程序行为,这会进一步加大改造工作,即使改造也只能适配一部分版本,由此可见采用单次重定向技术的改进方案可行性不高。

作为一种可选的实施例,该方法例如还可以包括:在通过第二进程执行压缩操作之前,确定当前节点的父节点是否为第一程序对应的节点,其中,当前节点为第二进程对应的节点。

应该理解,第二进程和第一进程都是压缩工具的原始进程。虽然,在一个实施例中,第二进程和第一进程可以是同一进程,但是第一进程是压缩开始时通过用户请求发起的,第二进程则是压缩开始后通过自定义程序的二次重定向发起的。原始进程经由不同的对象发起后通常需要执行不同的操作。例如,原始进程(第一程序)经由用户请求发起,则直接进行重定向,使自定义的程序启动并运行;原始进程(第二进程)经由自定义的程序发起,则直接使原始进程运行并执行压缩操作。

基于此,在本公开实施例中,在第二进程执行压缩操作之前,可以在内核中判断第二进程本次执行压缩操作是否是由自定义的程序发起的。如果是,则运行第二进程并执行压缩操作。否则,使第二进程的输出重定向至自定义的程序以先实现一次重定向,进而实现二次重定向,以最终实现文件压缩。

可以理解,通过本公开实施例提供的文件压缩方法,内核的重定向管理模块在监控到某一需要重定向的原始进程后,可以在内核重定向逻辑先将该原始进程的输出重定向到自定义的程序。在自定义的程序执行完预设的运算逻辑后,再进入内核重定向逻辑。此时内核先检测对应的进程是否是由第一次重定向后的进程(即第一程序)调用的。如果是,则此时只需对密标文件进行压缩操作即可。

作为一种可选的实施例,使第一进程的输出重定向至第一程序例如可以包括:当预先设置的钩子函数拦截到第一进程被启动的消息事件时,通过钩子函数捕获对应的消息;以及在消息捕获完成后,通过函数启动并运行第一程序。

参考图3,例如可以预先在内核中设置钩子函数,用于专门拦截各压缩工具响应于用户请求而启动的消息事件。一旦钩子函数拦截到这样的消息事件,则开始执行钩子函数函数来捕获本次消息事件的消息,并在消息捕获完成后,执行预先设定的回调函数,以启动并运行第一程序,从而实现一次重定向(即第一次重定向)。

具体地,该重定向技术利用内核驱动模块表来获取内核符号表及和地址空间,对内核代码段进行读、写、执行操作,将机器指令重定向到某个特定指令(即自定义程序的指令),此时,该特定指令具备了原机器指令所具备的操作系统资源,该指令执行完成后退出,对内核而言,将认可原始指令执行成功,回收资源后,该操作系统任务完成。

图4示意性示出了根据本公开实施例的文件解压缩方法的流程图。

如图4所示,该方法包括操作S410~S430。

在操作S410,检测第三进程是否被启动以用于解压缩目标加密压缩包。

与本公开实施例提供的文件压缩方法类似,在本公开实施例中,可以对原有的解压缩工具进行改进,从而实现对原有解压缩工具的定制。其中,原有的解压缩工具例如可以包括各种格式的解压缩工具,本公开实施例在此不做限定。例如,原有的解压缩工具可以包括支持以下格式的解压缩工具中的至少之一:zip、gzip、unzip、tar、lsar、7z、7za、7zr、rar、unrar、compress、gtar等格式。

具体地,针对原有的解压缩工具定制新的解压缩工具例如可以包括:保留原有解压缩工具的原始进程;在保留原始进程的基础上,增加新的自定义程序。该自定义程序用于执行预定的解密逻辑。其中,操作S410中涉及的第三进程例如可以为原有的解压缩工具自带的压缩工具程序,即前述的原始进程。

在本公开实施例中,操作S410例如可以包括:检测是否存在针对目标加密压缩包的第二操作。该第二操作与前述实施例中的第一操作类似,也可以包括至少一次点击操作或触控操作。

在操作S420,响应于检测到第三进程被启动以用于解压缩目标加密压缩包,使第三进程的输出重定向至第二程序。

其中,与前述实施例中文件压缩方法中涉及的第一程序类似,本公开实施例中的操作S420中的涉及的第二程序例如可以是在保留原始进程的基础上新增加的自定义程序。并且,操作S420为解压缩过程中的一次重定向操作。

需要说明的是,操作S420中,检测到第三进程被启动例如可以包括:检测到第三进程在一次解压缩事件中被首次启动。并且,本公开实施例提供的文件解压缩方法中各步骤的执行主体例如也可以是操作系统的内核。

作为一个实施例,在操作S420,例如,一旦内核感知到存在相关解压缩工具的启动操作以用于解压缩某个加密压缩包,则可以直接在内核中拦截该解压缩工具的原始进程,同时将该解原始进程的输出重定向至新增加的自定义程序,以便通过执行该自定义程序的预设方法逻辑来实现对该加密压缩包的处理。

在操作S430,响应于第三进程的输出被重定向至第二程序,执行操作S440或S450中的相关步骤。

操作S440,先通过第二程序执行解密操作,再调用第四进程以使第二程序的输出重定向至第四进程(解压缩操作中的第二次重定向),进而通过第四进程对执行解密操作而获得的解密压缩包执行解压缩操作,以获得目标加密压缩包的解压文件。

操作S450,先调用第四进程以使第二程序的输出重定向至第四进程(解压缩操作中的第二次重定向),进而通过第四进程对目标加密压缩包执行解压缩操作,进而通过第二程序对执行解压缩操作而获得的解压缩加密文件执行解密操作,以获得目标加密压缩包的解压文件。

其中,第三进程和第四进程为解压缩工具程序,第二程序为自定义程序。

作为一个可选的实施例,解压文件例如可以包括具有密级标识的加密文件。

在本公开实施例中,密级标识可以是特定的密级标识,或者也可以是任意的密级标识。在本公开的前述实施例中,可以仅对密级加密文件实现普通压缩(即仅执行压缩相关操作),也可以同时对密级加密文件实现加密压缩(即执行压缩相关操作和加密相关操作)。其中加密压缩可以使得压缩包更加安全。由此在本公开实施例中,对应地可以对普通压缩包仅执行解压操作,而对加密压缩包执行解压缩和解密操作。而解压和解密的顺序与前述实施例中压缩和加密的顺序正好相反。例如如果加密压缩操作是先压缩后加密的,则解密解压缩操作应是先解密后解压缩的。再例如如果加密压缩操作是先加密后压缩的,则解密解压缩操作应是先解压缩后解密的。

其中,在安全软件应用场景下,对具有密级标识的加密压缩文件进行解加密压缩,也可以提供密级标识保持功能。即,在执行解压缩操作过程中,可以使密级标识始终跟随每一步操作得到的结果文件,由此可以使针对带有密级标识的加密压缩文件进行解压缩而得到的解压包中的文件与原加密文件保持一致,即两者具备同样的加密属性,都带有相同的密级标识。

通过本公开实施例,可以生成加密压缩包,也可以加密压缩包进行解密和解压缩,并且在解密和解压缩之后,能够将加密压缩包中被压缩的文件还原为与压缩前一致的状态。

由于生成加密压缩包时可以先加密后压缩,也可以先压缩后加密,因此解压缩这样的加密压缩包可以先解压缩后解密,也可以先解密后解压缩。其中,本公开实施例中的操作(1)为先解密后解压缩,而本公开实施例中的操作(2)为先解压缩后解密。

具体地,在本公开实施例中,第二程序例如可以通过名为system的函数调用第四进程来实现解压缩操作中的第二次重定向。采用该函数的优点与前述实施例中压缩文件时采用该函数的优点类似,在此不再赘述。

并且,通过二次重定向调用第四进程,可以直接通过解压缩工具的原始进程完成解压缩操作,除了自定义第二程序之外不需要新增额外的自定义解压缩程序,因此实现方案相对简单,并且可以同时支持多种格式的原有解压缩工具来完成更多的业务逻辑,以便能适应较为复杂的应用场景。

基于二次重定向技术的上述优点,在一个实施例中,该方法例如还可以包括:如果返回值表征第四进程已执行完成,则通过第二程序删除与加密解压文件关联的中间文件,其中,返回值为用于调用第四进程的函数向第二程序返回的值。

应该理解,在本公开实施例中,如果对待解压缩的文件(目标加密压缩包)先对该文件执行了解密操作得到一解密文件,再在此基础上对该解密文件执行解压缩操作得到一解密解压缩文件,则此时中间文件包括前述解密文件。或者,如果先对该文件执行了解压缩操作得到一解压缩文件,再在此基础上对该解压缩文件执行解密操作得到一解密解压缩文件,则此时中间文件包括前述解压缩文件。

通过本公开实施例,在利用原有的解压缩工具定制新的解压缩工具并用于加密文件的解压缩时,可以采用两次重定向技术,即在解压缩工具的原始进程启动后先将其输出重定向至自定义的程序以实现一次重定向,再通过该自定义的程序调用解压缩工具的原始进程以实现二次重定向,并且在二次重定向后自定义的程序不会被解压缩工具的原始进程(第四进程)所替代,第二程序可以获得第四进程返回的返回值,因而第四进程不会异常退出,使得文件解压缩可以顺利完成,并且可以删除临时产生的中间文件,避免产生大量的冗余文件。而单次重定向技术(即一次重定向技术)由于自定义的程序会直接替换为解压缩工具的原始进程而退出,因而临时产生的中间文件通常无法被删除,由此导致产生大量的冗余文件。

此外,为了使本公开实施例提供的方法能够同时支持对多种格式的解压缩工具的定制,本公开实施例采用二次重定向技术,将自定义的程序重定向至解压缩工具自带的原始程序以执行解压缩操作,因而不需要针对每种格式的解压缩工具都自定义对应的解压缩程序,这使得实现方案相对简单,工作量也小。而单次重定向技术(即一次重定向技术)则需要针对每种格式的原有解压缩工具分别自定义相应的解压缩程序用于执行解压缩操作,因而工作量大,并且不同的解压缩工具通常具有不同的解压缩包处理程序行为,这会进一步加大改造工作,即使改造也只能适配一部分版本,由此可见采用单次重定向技术的改进方案可行性不高。

作为一种可选的实施例,该方法例如还可以包括:在通过第四进程执行解压缩操作之前,确定当前节点的父节点是否为第二程序对应的节点,其中,当前节点为第四进程对应的节点。

应该理解,第四进程和第三进程都是解压缩工具的原始进程。虽然,在一个实施例中,第四进程和第三进程可以是同一进程,但是第三进程是解压缩开始时通过用户请求发起的,第四进程则是解压缩开始后通过自定义程序的二次重定向发起的。原始进程经由不同的对象发起后通常需要执行不同的操作。例如,原始进程(第三程序)经由用户请求发起,则直接进行重定向,使自定义的程序启动并运行;原始进程(第四进程)经由自定义的程序发起,则直接使原始进程运行并执行解压缩操作。

基于此,在本公开实施例中,在第四进程执行压缩操作之前,可以在内核中判断第四进程本次执行解压缩操作是否是由自定义的程序发起的。如果是,则运行第四进程并执行解压缩操作。否则,使第四进程的输出重定向至自定义的程序以先实现一次重定向,进而实现二次重定向,以最终实现文件解压缩。

可以理解,通过本公开实施例提供的文件解压缩方法,内核的重定向管理模块在监控到某一需要重定向的原始进程后,可以在内核重定向逻辑先将该原始进程的输出重定向到自定义的程序。在自定义的程序执行完预设的运算逻辑后,再进入内核重定向逻辑。此时内核先检测对应的进程是否是由第一次重定向后的进程(即第二程序)调用的。如果是,则此时只需对密标文件的加密压缩包进行解压缩操作即可。

作为一种可选的实施例,使第三进程的输出重定向至第二程序,包括:当预先设置的钩子函数拦截到第三进程被启动的消息事件时,通过钩子函数函数捕获对应的消息;以及在消息捕获完成后,通过回调函数启动并运行第二程序。

可以理解,本公开实施例中的文件解压缩方法中涉及的从解压缩工具的原始进程到自定义的程序的重定向方法与本公开前述实施例中的文件压缩方法中涉及的从压缩工具的原始进程到自定义的程序的重定向方法类似,本公开实施例在此不再赘述。

图5示意性示出了根据本公开实施例的文件压缩装置的框图。

如图5所示,该文件压缩装置500包括第一检测模块501、第一重定向模块502、第二重定向模块503和压缩模块504。该文件压缩装置500可以执行上面参考文件压缩方法实施例部分描述的方法,在此不再赘述。

具体地,第一检测模块501,用于检测第一进程是否被启动以用于压缩目标文件。

第一重定向模块502,用于响应于检测到第一进程被启动以用于压缩目标文件,使第一进程的输出重定向至第一程序。

第二重定向模块503,用于响应于第一进程的输出被重定向至第一程序,通过第一程序执行第一方法逻辑并调用第二进程,以使第一程序的输出重定向至第二进程。

压缩模块504,用于通过第二进程,对目标文件或者对执行第一方法逻辑而获得的与目标文件关联的中间文件执行压缩操作,以获得目标文件的压缩文件。

其中,第一进程和第二进程为压缩工具程序,第一程序为自定义程序。

作为一种可选的实施例,该装置例如还可以包括:删除模块,用于在返回值表征第二进程已执行完成的情况下,通过第一程序删除与目标文件关联的中间文件,其中,返回值为用于调用第二进程的函数向第一程序返回的值。

作为另一种可选的实施例,该装置例如还可以包括:确定模块,在通过第二进程执行压缩操作之前,确定当前节点的父节点是否为第一程序对应的节点,其中,当前节点为第二进程对应的节点。

图6示意性示出了根据本公开实施例的文件解压缩装置的框图。

如图6所示,该文件解压缩装置600包括第二检测模块601、第三重定向模块602和处理模块603。该文件解压缩装置600可以执行上面参考文件解压缩方法实施例部分描述的方法,在此不再赘述。

具体地,第二检测模块601,用于检测第三进程是否被启动以用于解压缩目标加密压缩包。

第三重定向模块602,用于响应于检测到第三进程被启动以用于解压缩目标加密压缩包,使第三进程的输出重定向至第二程序。

处理模块603,用于响应于第二进程的输出被重定向至第二程序,执行以下操作:先通过第二程序执行解密操作,再调用第四进程以使第二程序的输出重定向至第四进程,进而通过第四进程对执行解密操作而获得的解密压缩包执行解压缩操作,以获得目标加密压缩包的解压文件;或者先调用第四进程以使第二程序的输出重定向至第四进程,进而通过第四进程对目标加密压缩包执行解压缩操作,进而通过第二程序对执行解压缩操作而获得的解压缩加密文件执行解密操作,以获得目标加密压缩包的解压文件。其中,第三进程和第四进程为解压缩工具程序,第二程序为自定义程序。

作为一种可选的实施例,该装置例如还可以包括:删除模块,用于在返回值表征第四进程已执行完成的情况下,通过第二程序删除与加密解压文件关联的中间文件,其中,返回值为用于调用第四进程的函数向第二程序返回的值。

作为另一种可选的实施例,该装置例如还可以包括:确定模块,用于在通过第四进程执行解压缩操作之前,确定当前节点的父节点是否为第二程序对应的节点,其中,当前节点为第四进程对应的节点。

需要说明的是,装置部分的实施例方式与对应的方法部分的实施例方式对应类似,并且所达到的技术效果也对应类似,在此不再赘述。

根据本公开的实施例的模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,第一检测模块501、第一重定向模块502、第二重定向模块503和压缩模块504中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一检测模块501、第一重定向模块502、第二重定向模块503和压缩模块504中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一检测模块501、第一重定向模块502、第二重定向模块503和压缩模块504中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图7示意性示出了根据本公开实施例的电子设备的框图。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,电子设备700包括处理器710、计算机可读存储介质720。该电子设备700可以执行根据本公开实施例的方法。

具体地,处理器710例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器710还可以包括用于缓存用途的板载存储器。处理器710可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

计算机可读存储介质720,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;等等。

计算机可读存储介质720可以包括计算机程序721,该计算机程序721可以包括代码/计算机可执行指令,其在由处理器710执行时使得处理器710执行根据本公开实施例的方法或其任何变形。

计算机程序721可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序721中的代码可以包括一个或多个程序模块,例如包括721A、模块721B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器710执行时,使得处理器710可以执行根据本公开实施例的方法或其任何变形。

根据本公开的实施例,第一检测模块501、第一重定向模块502、第一压缩模块503、第二重定向模块504和第二压缩模块505中的至少一个可以实现为参考图7描述的计算机程序模块,其在被处理器710执行时,可以实现上面描述的相应操作。

本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:日志管理方法、装置、服务端和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!