CN112527672B - 一种针对加壳工具的检测方法及设备 - Google Patents

一种针对加壳工具的检测方法及设备 Download PDF

Info

Publication number
CN112527672B
CN112527672B CN202011517740.4A CN202011517740A CN112527672B CN 112527672 B CN112527672 B CN 112527672B CN 202011517740 A CN202011517740 A CN 202011517740A CN 112527672 B CN112527672 B CN 112527672B
Authority
CN
China
Prior art keywords
test sample
running
log file
shell adding
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011517740.4A
Other languages
English (en)
Other versions
CN112527672A (zh
Inventor
孙吉平
孙建伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN202011517740.4A priority Critical patent/CN112527672B/zh
Publication of CN112527672A publication Critical patent/CN112527672A/zh
Application granted granted Critical
Publication of CN112527672B publication Critical patent/CN112527672B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种针对加壳工具的检测方法及设备,该方法包括:利用配置完成的加壳工具对测试样本进行加壳操作;运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件;将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。该检测方法,利用加壳的测试样本的执行结果的相关信息与未加壳的测试样本的执行结果的相关信息进行对比,从主要的内容的对比结果能够实现对加壳工具本身的准确检测,确定其是否能够完成正确的加壳操作。

Description

一种针对加壳工具的检测方法及设备
技术领域
本申请涉及信息测试领域,特别涉及一种针对加壳工具的检测方法及设备。
背景技术
加壳工具用于对软件等数据进行加密保护,如VBP(Virbox Protector,后面简称VBP)等加壳工具,其可以利用虚拟化、混淆、自动移植代码等技术手段对数据进行加密保护。但是在对软件等数据进行加壳后,可能会由于加壳工具的原因而导致加壳后的软件等数据发生错误,甚至会出现加壳后的程序不能运行的现象。而目前并没有好的方式来实现该检测加壳工具是否能够正确完成该加壳操作。
发明内容
本发明实施例的目的在于提供一种针对加壳工具的检测方法及设备,该方法能够对用于目标数据进行加壳的加壳工具进行准确的检测。
为了解决上述技术问题,本发明的实施例采用了如下技术方案:一种针对加壳工具的检测方法,包括:
利用配置完成的加壳工具对测试样本进行加壳操作;
运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件;
将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。
作为可选,所述的运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件,包括:
运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息;
至少基于所述第一函数调用路径和所述第一信息,生成所述第一日志文件。
作为可选,所述的运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息,包括:
运行所述加壳操作后的所述测试样本中的每个所述第一函数,获取所述第一函数的运行次数,并获取存储到预设寄存器中的以下至少一个:函数名以及函数运行结果。
作为可选,所述方法还包括:
运行未进行加壳操作的所述测试样本,至少获取所述测试样本的第二函数调用路径以及存储到预设存储区中的第二信息;
至少基于所述第二函数调用路径和所述第二信息,生成所述第二日志文件。
作为可选,所述的将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,包括:
在所述第一运行结果的相关信息与所述第二运行结果的相关信息相同的情况下,确定所述加壳工具符合预设要求;或者,
在所述第一运行结果的相关信息与所述第二运行结果的相关信息之间的差别程度处于一定范围内的情况下,确定所述加壳工具符合预设要求。
作为可选,所述方法还包括对所述加壳工具进行配置操作,所述配置操作包括:
利用脚本生成所述测试样本对应的加壳选项配置文件;
确定所述测试样本的文件名和输出文件名;
基于操作***构建所述测试样本的测试环境。
作为可选,所述加壳操作包括:
通过调度程序将所述测试样本分发到构建好的测试环境中,使用脚本命令运行加壳工具,以对所述测试样本进行加壳。
本申请实施例还提供了一种针对加壳工具的检测设备,包括:
加壳模块,其配置为利用配置完成的加壳工具对测试样本进行加壳操作;
执行模块,其配置为运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件;
处理模块,其配置为将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。
作为可选,所述执行模块进一步配置为:
运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息;
至少基于所述第一函数调用路径和所述第一信息,生成所述第一日志文件。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,实现如下步骤:
利用配置完成的加壳工具对测试样本进行加壳操作;
运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件;
将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。
本发明实施例的有益效果在于:该针对加壳工具的检测方法,利用加壳的测试样本的执行结果的相关信息与未加壳的测试样本的执行结果的相关信息进行对比,从主要的内容的对比结果能够实现对加壳工具本身的准确检测,确定其是否能够完成正确的加壳操作。
附图说明
图1为本发明实施例的针对加壳工具的检测方法的流程图;
图2为本发明实施例的图1中步骤S2的一个实施例的流程图;
图3为本发明实施例的针对加壳工具的检测方法的一个具体实施例的流程图;
图4为本发明实施例的针对加壳工具的检测设备的结构框图。
具体实施方式
此处参考附图描述本发明的各种方案以及特征。
应理解的是,可以对此处发明的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本发明的范围和精神内的其他修改。
包含在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且与上面给出的对本发明的大致描述以及下面给出的对实施例的详细描述一起用于解释本发明的原理。
通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本发明的这些和其它特性将会变得显而易见。
还应当理解,尽管已经参照一些具体实例对本发明进行了描述,但本领域技术人员能够确定地实现本发明的很多其它等效形式。
当结合附图时,鉴于以下详细说明,本发明的上述和其他方面、特征和优势将变得更为显而易见。
此后参照附图描述本发明的具体实施例;然而,应当理解,所发明的实施例仅仅是本发明的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本发明模糊不清。因此,本文所发明的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本发明。
本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本发明的相同或不同实施例中的一个或多个。
本发明实施例的一种针对加壳工具的检测方法,电子设备可以使用该方法对加壳工具的加壳效果进行检测,该方法包括以下步骤:
利用配置完成的加壳工具对测试样本进行加壳操作;
运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件;
将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。
具体来说,加壳工具使用虚拟化,混淆,自动移植代码等技术手段,将可执行程序的指令进行打乱,重组,或者将部分代码放到虚拟机中进行运行,从而保障被保护后的程序不能被反编译;同时还要保证程序的运行结果是正确的。本实施例中测试样本可以是测试使用的程序或其他相关数据,如与实际加壳对象相同或相似的程序,其可以优选为结构典型的测试程序。配置完成后加壳工具可以对测试样本进行加壳操作。加壳后的测试样本被加密,但其原有的功能仍旧被保留,运行加密后的测试样本,可以生成相应的第一运行结果,以及生成与第一运行结果的相关信息,包括加壳后的测试样本的运行路径(测试样本中的函数的调用路径)、运行逻辑以及函数运行次数等方面的信息。基于该第一运行结果的相关信息,可以生成第一日志文件。该测试样本在未进行加壳之前也可以运行,运行后具有第二运行结果,以及生成与第二运行结果的相关信息,包括测试样本的运行路径、运行逻辑以及函数运行次数等方面的信息,基于该与第二运行结果的相关信息生成第二日志文件。本实施例中可以对比第一日志文件与第二日志文件,从而得到相应的对比结果,如果对比结果符合预设要求,则认为加壳工具符合要求,能够正确完成加壳操作,否则可以认为加壳工具具有缺陷。
该针对加壳工具的检测方法,利用加壳的测试样本的执行结果的相关信息与未加壳的测试样本的执行结果的相关信息进行对比,从主要的内容的对比结果能够实现对加壳工具本身的准确检测,确定其是否能够完成正确的加壳操作。
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。
图1为本发明实施例的针对加壳工具的检测方法的流程图;本申请实施例的针对加壳工具的检测方法,可以应用在电子设备中或应用在针对加壳工具的检测设备中,以对加壳工具进行检测,如图1所示,该方法包括以下步骤:
S1,利用配置完成的加壳工具对测试样本进行加壳操作。
加壳工具需要进行配置,如可以使用调整后的配置模板来对其进行配置,包括配置具体数据,如测试样本的文件名、输出文件名等;还可以进行测试环境的配置,如基于运行的电子设备的操作***,使用搭建测试架构等。配置完成后的加壳工具可以对测试样本进行加壳操作,例如,在测试样本中植入代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给测试样本,从而隐藏程序真正的入口点。当然该加壳操作可以根据实际需要来进行相应的调整。
S2,运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件。
第一运行结果为加壳后的测试样本的运行结果,该第一运行结果可以被存储在寄存器中,运行加壳操作后的测试样本后除生成第一运行结果的同时还生成第一运行结果的相关信息,可以将其看作第一相关信息,包括加壳后的测试样本的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。基于第一运行结果的相关信息生成相应的第一日志文件,该第一日志文件为运行加壳操作后的测试样本后生成的日志文件,其中记录了第一运行结果的相关信息,当然还包括了测试样本运行过程中产生的其他信息。该第一日志文件可以存储在电子设备的存储设备中。
S3,将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。
第二日志文件为未加壳的测试样本在运行过程中生成的日志文件,其包括了第二运行结果的相关信息,可以将其看作第二相关信息,包括未加壳的测试样本的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。当然还记录了测试样本在运行过程中的其他相关信息,如具体的操作信息以及重要事件等。本实施例中,可以将第一日志文件与第二日志文件进行比对,进而比对第一运行结果的相关信息与第二运行结果的相关信息,这包括对比两者的上述的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。根据具体的对比结果可以确定加壳工具是否符合预设要求。包括加壳工具是否出现错误,是否能够正确的完成该加壳操作。
在本申请的一个实施例中,所述的运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件,如图2所示,包括以下步骤:
S21,运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息。
测试样本中包括至少一个第一函数,运行加壳操作后的所述测试样本后,该第一函数也可以具有相应的第一函数调用路径,其可以表征加壳后的测试样本运行时的运行轨迹。第一信息可以为第一函数的函数名、以及至少一个第一函数的函数运行结果,该第一信息存储到预设存储区中,如存储在电子设备的寄存器中,以方便调用该第一信息。
S22,至少基于所述第一函数调用路径和所述第一信息,生成所述第一日志文件。
第一日志文件可以记录处理加壳了的测试样本的电子设备在运行过程中生成的日志,包括电子设备在处理过程中的重要事件。本实施例中在生成该第一日志文件时,可以基于第一函数调用路径和所述第一信息,并结合电子设备处理加壳了的测试样本的过程中出现的其他需要记录的信息,来生成第一日志文件。
在本申请的一个实施例中,所述的运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息,包括:
运行所述加壳操作后的所述测试样本中的每个所述第一函数,获取所述第一函数的运行次数,并获取存储到预设寄存器中的以下至少一个:函数名以及函数运行结果。
具体的,加壳操作后的所述测试样本中包括一个或多个第一函数,第一函数调用路径可以表征加壳后的测试样本运行时的运行轨迹,这包括单一和/或所有的第一函数的调用次数,以及多个第一函数的执行顺序等信息。本实施例中可以运行每一个第一函数,获取相应的第一函数的运行次数,在测试样本中具有多个第一函数的情况下,不但可以获取每个第一函数的运行次数,还可以获取多个第一函数的运行顺序。在一个实施例中,每一个第一函数每被调用一次,就会给予一个唯一的索引号(同一个函数被调用多次,对应的多个索引号不相同)。当测试样本运行完毕,针对每一个第一函数,可以分别统计其对应的索引号的数量,得到该第一函数的运行次数,实现了索引计数。
第一信息可以为第一函数的函数名、以及第一函数的函数运行结果,该函数名以及函数运行结果可以存储到预设寄存器中,以便随后对其进行调用和对比。
在本申请的一个实施例中,如图3所示,所述方法还包括以下步骤:
S4,运行未进行加壳操作的所述测试样本,至少获取所述测试样本的第二函数调用路径以及存储到预设存储区中的第二信息;
S5,至少基于所述第二函数调用路径和所述第二信息,生成所述第二日志文件。
具体来说,未进行加壳操作的测试样本中包含一个或多个第二函数,该第二函数在具体的内容上可以与相对应的加壳了的测试样本中的第一函数的内容相同,第一函数与对应的第二函数可以是仅为加壳和为加壳的区别。本实施例中至少获取未加壳的测试样本的第二函数调用路径,其可以表征未加壳的测试样本运行时的运行轨迹。这包括单一和/或所有的第二函数的调用次数,以及多个第二函数的执行顺序等信息。此外,还可以获取未加壳的测试样本运行后存储到预设存储区中的第二信息,该第二信息可以为第二函数的函数名、以及第二函数的函数运行结果,该函数名以及函数运行结果可以存储到预设寄存器中。
本实施例中可以基于上述的第二函数调用路径和第二信息,当然还可以结合电子设备处理未加壳的测试样本的过程中出现的其他需要记录的信息,生成第二日志文件。进而可以将第一日志文件与第二日志文件进行比对,具体可以将第一日志文件中的第一运行结果的相关信息,与第二日志文件中的第二运行结果的相关信息进行对比。具体包括了将第一函数调用路径与第二函数调用路径进行对比;还包括将第一信息与第二信息进行对比,即,将第一函数的函数名以及函数运行结果,与第二函数的函数名以及函数运行结果进行对比。从而得到相应的的对比结果。
在本申请的一个实施例中,所述的将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,包括:
在所述第一运行结果的相关信息与所述第二运行结果的相关信息相同的情况下,确定所述加壳工具符合预设要求;或者,
在所述第一运行结果的相关信息与所述第二运行结果的相关信息之间的差别程度处于一定范围内的情况下,确定所述加壳工具符合预设要求。
具体来说,一方面,第一运行结果的相关信息与第二运行结果的相关信息相同,可以是第一运行结果中所有的对比内容与第二运行结果中相应的内容均相同,则可以确定加壳工具符合预设要求。例如,第一函数调用路径与第二函数调用路径相同;而且第一函数的函数名以及函数运行结果与第二函数的函数名以及函数运行结果相同,则可以确定加壳工具符合预设要求,能够正确完成加壳操作,即使对测试样本进行了加壳,测试样本也不会出现运行错误或其他问题。
另一方面,第一运行结果的相关信息与第二运行结果的相关信息并不是完全相同。可以是第一运行结果中的对比内容与第二运行结果中相应的内容大部分相同或主要内容相同,则也可以确定加壳工具符合预设要求。例如,第一函数调用路径与第二函数调用路径相同;而且第一函数的函数运行结果与第二函数的函数运行结果相同,仅第一函数的函数名与第二函数的函数名由于生成日志文件的过程中发生了微小变化,则也可以确定加壳工具符合预设要求。
在本申请的一个实施例中,所述方法还包括对所述加壳工具进行配置操作,所述配置操作包括:
利用脚本生成所述测试样本对应的加壳选项配置文件;
确定所述测试样本的文件名和输出文件名;
基于操作***构建所述测试样本的测试环境。
举例说明,可以使用脚本生成测试样本对应的加壳选项配置文件,即.ssp文件,方式可以是根据配置模板进行复制,并且修改待加壳的测试样本的文件名,输出文件名,以及加壳后的测试样本的存储路径。
当加壳工具运行在Windows上时,可以基于staff框架搭建的自动化测试方案,在待测试***上,部署安装staff及python环境。通过staff调度,将测试样本分发到测试***上,使用命令行脚本运行加壳操作。
在本申请的一个实施例中,所述加壳操作包括:
通过调度程序将所述测试样本分发到构建好的测试环境中,使用脚本命令运行加壳工具,以对所述测试样本进行加壳。
本实施中可以使用脚本命令运行加壳工具。但加壳工具在对程序加壳前,可以对待加壳的测试样本进行分析;不同的测试样本,在分析时拿到不同形式的结果,对标准的可执行程序,加壳工具分析时,能得到所有函数的入口地址,并做标记;同时能得到每个函数输入参数和输出参数,并做标记;针对托管程序语言(如C#),分析时,是直接可以得到函数名,做出标记;同时得到函数的输入参数和输出参数,并做标记;这样,可以将测试样本的源程序处理成两种形态,第一,只做标记,并不改变源程序执行,这作为源程序进行保存;第二,使用不同加壳技术,对源程序进行加壳处理,同时将标记植入源程序中,这作为加壳后的源程序;然后通过上述步骤进行调用执行,分别执行加壳后的测试样本以及未加壳的测试样本,生成相应的第一日志文件和第二日志文件。
本申请实施例还提供了一种针对加壳工具的检测设备,该检测设备可以为计算机等电子设备中的设备,也可以是电子设备本身,如图4所示,该检测设备包括:
加壳模块,其配置为利用配置完成的加壳工具对测试样本进行加壳操作。
加壳工具需要进行配置,如加壳模块可以使用调整后的配置模板来对其进行配置,包括配置具体数据,如测试样本的文件名、输出文件名等;还可以进行测试环境的配置,如基于运行的电子设备的操作***,使用搭建测试架构等。配置完成后的加壳工具可以对测试样本进行加壳操作,例如,在测试样本中植入代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给测试样本,从而隐藏程序真正的入口点。当然对于该加壳操作,加壳模块可以根据实际需要来进行相应的调整。
执行模块,其配置为运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件。
第一运行结果为加壳后的测试样本的运行结果,该第一运行结果可以被存储在寄存器中,执行模块运行加壳操作后的测试样本后除生成第一运行结果的同时还生成第一运行结果的相关信息,可以将其看作第一相关信息,包括加壳后的测试样本的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。执行模块基于第一运行结果的相关信息生成相应的第一日志文件,该第一日志文件为运行加壳操作后的测试样本后生成的日志文件,其中记录了第一运行结果的相关信息,当然还包括了测试样本运行过程中产生的其他信息。该第一日志文件可以存储在电子设备的存储设备中。
处理模块,其配置为将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。
第二日志文件为未加壳的测试样本在运行过程中生成的日志文件,其包括了第二运行结果的相关信息,可以将其看作第二相关信息,包括未加壳的测试样本的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。当然还记录了测试样本在运行过程中的其他相关信息,如具体的操作信息以及重要事件等。本实施例中,处理模块可以将第一日志文件与第二日志文件进行比对,进而比对第一运行结果的相关信息与第二运行结果的相关信息,这包括对比两者的上述的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。处理模块根据具体的对比结果可以确定加壳工具是否符合预设要求。包括加壳工具是否出现错误,是否能够正确的完成该加壳操作。
在本申请的一个实施例中,所述执行模块进一步配置为:
运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息;
至少基于所述第一函数调用路径和所述第一信息,生成所述第一日志文件。
具体的,测试样本中包括至少一个第一函数,执行模块运行加壳操作后的所述测试样本后,该第一函数也可以具有相应的第一函数调用路径,其可以表征加壳后的测试样本运行时的运行轨迹。第一信息可以为第一函数的函数名、以及至少一个第一函数的函数运行结果,该第一信息存储到预设存储区中,如存储在电子设备的寄存器中,以方便调用该第一信息。
第一日志文件可以记录处理加壳了的测试样本的电子设备在运行过程中生成的日志,包括电子设备在处理过程中的重要事件。本实施例中执行模块在生成该第一日志文件时,可以基于第一函数调用路径和所述第一信息,并结合电子设备处理加壳了的测试样本的过程中出现的其他需要记录的信息,来生成第一日志文件。
在本申请的一个实施例中,所述执行模块进一步配置为:
运行所述加壳操作后的所述测试样本中的每个所述第一函数,获取所述第一函数的运行次数,并获取存储到预设寄存器中的以下至少一个:函数名以及函数运行结果。
在本申请的一个实施例中,所述执行模块进一步配置为:
运行未进行加壳操作的所述测试样本,至少获取所述测试样本的第二函数调用路径以及存储到预设存储区中的第二信息;
至少基于所述第二函数调用路径和所述第二信息,生成所述第二日志文件。
在本申请的一个实施例中,所述处理模块进一步配置为:
在所述第一运行结果的相关信息与所述第二运行结果的相关信息相同的情况下,确定所述加壳工具符合预设要求;或者,
在所述第一运行结果的相关信息与所述第二运行结果的相关信息之间的差别程度处于一定范围内的情况下,确定所述加壳工具符合预设要求。
在本申请的一个实施例中,所述加壳模块进一步配置为:对所述加壳工具进行配置操作,所述配置操作包括:
利用脚本生成所述测试样本对应的加壳选项配置文件;
确定所述测试样本的文件名和输出文件名;
基于操作***构建所述测试样本的测试环境。
在本申请的一个实施例中,所述加壳操作包括:
通过调度程序将所述测试样本分发到构建好的测试环境中,使用脚本命令运行加壳工具,以对所述测试样本进行加壳。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,实现如下步骤:
利用配置完成的加壳工具对测试样本进行加壳操作;
运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件;
将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件。
具体的,加壳工具需要进行配置,如可以使用调整后的配置模板来对其进行配置,包括配置具体数据,如测试样本的文件名、输出文件名等;还可以进行测试环境的配置,如基于运行的电子设备的操作***,使用搭建测试架构等。配置完成后的加壳工具可以对测试样本进行加壳操作,例如,在测试样本中植入代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给测试样本,从而隐藏程序真正的入口点。当然该加壳操作可以根据实际需要来进行相应的调整。
第一运行结果为加壳后的测试样本的运行结果,该第一运行结果可以被存储在寄存器中,运行加壳操作后的测试样本后除生成第一运行结果的同时还生成第一运行结果的相关信息,可以将其看作第一相关信息,包括加壳后的测试样本的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。基于第一运行结果的相关信息生成相应的第一日志文件,该第一日志文件为运行加壳操作后的测试样本后生成的日志文件,其中记录了第一运行结果的相关信息,当然还包括了测试样本运行过程中产生的其他信息。该第一日志文件可以存储在电子设备的存储设备中。
第二日志文件为未加壳的测试样本在运行过程中生成的日志文件,其包括了第二运行结果的相关信息,可以将其看作第二相关信息,包括未加壳的测试样本的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。当然还记录了测试样本在运行过程中的其他相关信息,如具体的操作信息以及重要事件等。本实施例中,可以将第一日志文件与第二日志文件进行比对,进而比对第一运行结果的相关信息与第二运行结果的相关信息,这包括对比两者的上述的运行结果,运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数等方面的信息。根据具体的对比结果可以确定加壳工具是否符合预设要求。包括加壳工具是否出现错误,是否能够正确的完成该加壳操作。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (10)

1.一种针对加壳工具的检测方法,其特征在于,包括:
利用配置完成的加壳工具对测试样本进行加壳操作;
运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件,其中,所述第一运行结果的相关信息为第一相关信息,包括以下至少一个:加壳后的所述测试样本的运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数;
将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件,其中,所述测试样本在未进行加壳之前运行后具有第二运行结果,所述第二运行结果的相关信息,包括以下至少一个:加壳前的所述测试样本的运行路径、运行逻辑以及所述测试样本中的函数运行次数。
2.根据权利要求1所述的检测方法,其特征在于,所述的运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件,包括:
运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息;
至少基于所述第一函数调用路径和所述第一信息,生成所述第一日志文件。
3.根据权利要求2所述的检测方法,其特征在于,所述的运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息,包括:
运行所述加壳操作后的所述测试样本中的每个所述第一函数,获取所述第一函数的运行次数,并获取存储到预设寄存器中的以下至少一个:函数名以及函数运行结果。
4.根据权利要求1所述的检测方法,其特征在于,所述方法还包括:
运行未进行加壳操作的所述测试样本,至少获取所述测试样本的第二函数调用路径以及存储到预设存储区中的第二信息;
至少基于所述第二函数调用路径和所述第二信息,生成所述第二日志文件。
5.根据权利要求1所述的检测方法,其特征在于,所述的将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,包括:
在所述第一运行结果的相关信息与所述第二运行结果的相关信息相同的情况下,确定所述加壳工具符合预设要求;或者,
在所述第一运行结果中的对比内容与第二运行结果中相应的内容大部分相同或主要内容相同的情况下,确定所述加壳工具符合预设要求。
6.根据权利要求1所述的检测方法,其特征在于,所述方法还包括对所述加壳工具进行配置操作,所述配置操作包括:
利用脚本生成所述测试样本对应的加壳选项配置文件;
确定所述测试样本的文件名和输出文件名;
基于操作***构建所述测试样本的测试环境。
7.根据权利要求6所述的检测方法,其特征在于,所述加壳操作包括:
通过调度程序将所述测试样本分发到构建好的测试环境中,使用脚本命令运行加壳工具,以对所述测试样本进行加壳。
8.一种针对加壳工具的检测设备,其特征在于,包括:
加壳模块,其配置为利用配置完成的加壳工具对测试样本进行加壳操作;
执行模块,其配置为运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件,其中,所述第一运行结果的相关信息为第一相关信息,包括以下至少一个:加壳后的所述测试样本的运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数;
处理模块,其配置为将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件,其中,所述测试样本在未进行加壳之前运行后具有第二运行结果,所述第二运行结果的相关信息,包括以下至少一个:加壳前的所述测试样本的运行路径、运行逻辑以及所述测试样本中的函数运行次数。
9.根据权利要求8所述的检测设备,其特征在于,所述执行模块进一步配置为:
运行加壳操作后的所述测试样本,至少获取所述测试样本的第一函数调用路径以及存储到预设存储区中的第一信息;
至少基于所述第一函数调用路径和所述第一信息,生成所述第一日志文件。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,实现如下步骤:
利用配置完成的加壳工具对测试样本进行加壳操作;
运行加壳操作后的所述测试样本,基于第一运行结果的相关信息生成相应的第一日志文件,其中,所述第一运行结果的相关信息为第一相关信息,包括以下至少一个:加壳后的所述测试样本的运行路径、运行逻辑以及测试样本中的至少一个函数的运行次数;
将第一日志文件与第二日志文件进行比对,以确定所述加壳工具是否符合预设要求,其中,所述第二日志文件为运行未进行加壳操作的所述测试样本,并基于第二运行结果的相关信息生成的文件,其中,所述测试样本在未进行加壳之前运行后具有第二运行结果,所述第二运行结果的相关信息,包括以下至少一个:加壳前的所述测试样本的运行路径、运行逻辑以及所述测试样本中的函数运行次数。
CN202011517740.4A 2020-12-21 2020-12-21 一种针对加壳工具的检测方法及设备 Active CN112527672B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011517740.4A CN112527672B (zh) 2020-12-21 2020-12-21 一种针对加壳工具的检测方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011517740.4A CN112527672B (zh) 2020-12-21 2020-12-21 一种针对加壳工具的检测方法及设备

Publications (2)

Publication Number Publication Date
CN112527672A CN112527672A (zh) 2021-03-19
CN112527672B true CN112527672B (zh) 2021-10-22

Family

ID=75002015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011517740.4A Active CN112527672B (zh) 2020-12-21 2020-12-21 一种针对加壳工具的检测方法及设备

Country Status (1)

Country Link
CN (1) CN112527672B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103839003A (zh) * 2012-11-22 2014-06-04 腾讯科技(深圳)有限公司 恶意文件检测方法及装置
CN104484607A (zh) * 2014-12-16 2015-04-01 上海交通大学 Android应用程序安全性测试的通用方法及***
CN105068932A (zh) * 2015-08-25 2015-11-18 北京安普诺信息技术有限公司 一种Android应用程序加壳的检测方法
CN105630659A (zh) * 2015-12-23 2016-06-01 北京奇虎科技有限公司 应用崩溃日志的获取方法及装置
US9798884B1 (en) * 2016-10-11 2017-10-24 Veracode, Inc. Systems and methods for identifying insider threats in code
CN108133139A (zh) * 2017-11-28 2018-06-08 西安交通大学 一种基于多运行环境行为比对的安卓恶意应用检测***

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103077332B (zh) * 2012-12-28 2015-08-26 飞天诚信科技股份有限公司 一种运行含有自校验的加壳程序的方法和装置
CN105205398B (zh) * 2015-11-04 2018-03-09 北京鼎源科技有限公司 一种基于apk加壳软件动态行为的查壳方法
CN107273298B (zh) * 2017-07-07 2019-02-15 北京深思数盾科技股份有限公司 一种加壳工具的测试方法、装置及***
CN109408400A (zh) * 2018-12-25 2019-03-01 欧普照明股份有限公司 一种软件代码自动测试方法及测试***

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103839003A (zh) * 2012-11-22 2014-06-04 腾讯科技(深圳)有限公司 恶意文件检测方法及装置
CN104484607A (zh) * 2014-12-16 2015-04-01 上海交通大学 Android应用程序安全性测试的通用方法及***
CN105068932A (zh) * 2015-08-25 2015-11-18 北京安普诺信息技术有限公司 一种Android应用程序加壳的检测方法
CN105630659A (zh) * 2015-12-23 2016-06-01 北京奇虎科技有限公司 应用崩溃日志的获取方法及装置
US9798884B1 (en) * 2016-10-11 2017-10-24 Veracode, Inc. Systems and methods for identifying insider threats in code
CN108133139A (zh) * 2017-11-28 2018-06-08 西安交通大学 一种基于多运行环境行为比对的安卓恶意应用检测***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Logging Done Right with PowerShell and the PSFramework Module;Bill Kindle;《https://adamtheautomator.com/powershell-logging/》;20191008;第1-28页 *
数据安全管理***加壳技术研究与实现;高艳军;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20100515;第I138-27页 *

Also Published As

Publication number Publication date
CN112527672A (zh) 2021-03-19

Similar Documents

Publication Publication Date Title
US9317400B2 (en) Code coverage rate determination method and system
JP5430570B2 (ja) システムコールカバレッジ基準による試験スイート削減のための方法
US8397104B2 (en) Creation of test plans
US20100199263A1 (en) Test case pattern matching
US11888885B1 (en) Automated security analysis of software libraries
US20020133807A1 (en) Automation and isolation of software component testing
CN109525556A (zh) 一种用于确定嵌入式***固件中协议漏洞的轻量级方法及***
US10936474B2 (en) Software test program generation
WO2019169760A1 (zh) 测试用例范围确定方法、装置及存储介质
CN110196801B (zh) 一种基于代码覆盖率的测试方法及装置
CN110221933B (zh) 代码缺陷辅助修复方法及***
CN104021072A (zh) 用于评估失效的软件程序的机器和方法
CN111124870A (zh) 一种接口测试方法及装置
US20200143061A1 (en) Method and apparatus for tracking location of input data that causes binary vulnerability
CN110543420A (zh) 一种软件测试方法、***、终端及存储介质
KR20220085290A (ko) 소프트웨어 검증 방법 및 이를 위한 장치
US20120054724A1 (en) Incremental static analysis
CN107272441B (zh) 用于监控错误的方法和用于监控错误的数据处理装置
CN115391230A (zh) 一种测试脚本生成、渗透测试方法、装置、设备及介质
CN117493188A (zh) 接口测试方法及装置、电子设备及存储介质
CN112527672B (zh) 一种针对加壳工具的检测方法及设备
CN109960656B (zh) 程序的检测方法、装置及电子设备
US10481969B2 (en) Configurable system wide tests
CN114064489A (zh) 一种自动化测试方法、装置、设备及可读存储介质
CN107402883A (zh) 一种数据测试处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder