CN107273298B - 一种加壳工具的测试方法、装置及系统 - Google Patents
一种加壳工具的测试方法、装置及系统 Download PDFInfo
- Publication number
- CN107273298B CN107273298B CN201710550655.XA CN201710550655A CN107273298B CN 107273298 B CN107273298 B CN 107273298B CN 201710550655 A CN201710550655 A CN 201710550655A CN 107273298 B CN107273298 B CN 107273298B
- Authority
- CN
- China
- Prior art keywords
- shell adding
- test
- shell
- sample
- program
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
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
技术领域
本发明涉及软件测试技术领域,尤其涉及一种加壳工具的测试方法、装置及系统。
背景技术
加壳是一种保护文件的常用手段,通过对可执行程序里的资源进行压缩、加密,类似于像在原程序上附加外壳,使得原始程序代码在磁盘文件中一般是以加密后的形式存在的,即只有当被执行时在服务器内存中还原具体的程序代码,这样就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序文件被静态反编译,因此,基于加壳技术的加壳工具也被广泛认可以及应用于保护软件文件。
目前,一般是利用加壳工具对测试样本库中包含的大量可执行程序进行加壳处理,而后验证加壳后的文件是否能够正常运行,从而测试加壳工具的工作稳定性。然而,在测试工作过程中,现有的方法是采用人工对每个可执行程序加壳处理,并手动运行加壳后的文件,验证每个加壳后的文件是否能够正常运行,需要工作人员值守在机器旁,直至样本库中的文件全部被测试完毕,尤其是当样本库中的数据量是很大时,要在短时间内完成测试工作,就需要大量的测试人员进行高强度的测试操作,在这样高强度的工作中,不可避免出现人为的错误,从而无法得到准确的测试加壳工具稳定性的测试结果。
发明内容
有鉴于此,本发明提供一种加壳工具的测试方法、装置及系统,主要目的在于在测试加壳工具稳定性的测试工作中,提高测试结果的准确率。
为了解决上述问题,本发明主要提供如下技术方案:
一方面,本发明提供了一种加壳工具的测试方法,该方法包括:
接收控制器发送的测试命令;
根据所述测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序;
通过运行所述加壳后的可执行程序,记录运行结果;
发送所述运行结果至控制器,以便所述控制器根据所述运行结果生成测试报告。
优选的,所述通过运行所述加壳后的可执行程序,记录运行结果包括:
判断所述加壳后的可执行程序的运行类型,所述运行类型包括命令行程序和图形用户接口程序;
若是命令行程序,则记录所述命令行程序在加壳处理前后所运行的对比结果;
若是图形用户接口程序,则通过运行所述图形用户接口程序,记录所述图形用户接口程序在加壳处理前后所显示界面的界面名称的比对结果。
优选的,所述根据所述测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序包括:
根据所述样本的程序类型确定加壳处理对应的加壳方式;
根据所述加壳方式生成所述样本对应的加壳配置文件;
利用所述加壳配置文件对所述样本进行加壳处理。
优选的,所述根据所述程序类型确定所述加壳处理对应的加壳方式包括:
若所述程序类型是可移植的可执行程序类型,则选择资源段加密加壳,所述资源段加密加壳是所述加壳工具加壳处理所述样本的加壳方式;
若所述程序类型是框架程序类型,则选择名称混淆加壳,所述名称混淆加壳是所述加壳工具加壳处理所述样本的加壳方式。
优选的,根据所述加壳方式生成所述样本对应的加壳配置文件包括:
将所述样本与所述加壳方式加载到配置模块中,所述配置模块用于根据所述加壳方式生成对应的加壳配置文件;
根据所述配置模块返回的提示信息判断是否成功生成加壳配置文件;
若所述提示信息是处理异常时,则将所述配置模块生成加壳配置文件的处理操作记录在运行异常日志中。
另一方面,本发明还提供了一种加壳工具的测试装置,该装置包括:
接收单元,用于接收控制器发送的测试命令;
处理单元,用于根据所述接收单元接收的测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序;
记录单元,用于运行所述处理单元加壳处理的可执行程序,记录运行结果;
发送单元,用于发送所述运行结果至控制器,以便所述控制器根据所述运行结果生成测试报告。
优选的,所述记录单元包括:
判断模块,用于判断所述加壳后的可执行程序的运行类型,所述运行类型包括命令行程序和图形用户接口程序;
第一记录模块,用于当所述判断模块判断所述样本的运行类型是命令行程序时,记录所述命令行程序在加壳处理前后所运行的对比结果;
第二记录模块,用于当所述判断模块判断所述样本的运行类型是图形用户接口程序时,通过运行所述图形用户接口程序,记录所述图形用户接口程序在加壳处理前后所显示界面的界面名称的比对结果。
优选的,所述处理单元包括:
确定模块,用于根据所述样本的程序类型确定加壳处理对应的加壳方式;
生成模块,用于根据所述确定模块确定的加壳方式生成所述样本对应的加壳配置文件;
处理模块,用于利用所述生成模块生成的加壳配置文件对所述样本进行加壳处理。
优选的,所述确定模块包括:
第一选择子模块,当所述程序类型是可移植的可执行程序类型时,选择资源段加密加壳,所述资源段加密加壳是所述加壳工具加壳处理所述样本的加壳方式;
第二选择子模块,当所述程序类型是框架程序类型时,选择名称混淆加壳,所述名称混淆加壳是所述加壳工具加壳处理所述样本的加壳方式。
优选的,所述生成模块包括:
加载子模块,用于将所述样本与所述加壳方式加载到配置模块中,所述配置模块用于根据所述加壳方式生成对应的加壳配置文件;
判断子模块,用于根据所述配置模块返回的提示信息判断是否成功生成加壳配置文件;
记录子模块,用于当所述提示信息是处理异常时,将所述配置模块生成加壳配置文件的处理操作记录在运行异常日志中。
另一方面,本发明还提供了一种加壳工具的测试系统,所述系统包括含有加壳工具的测试装置的控制器以及如上述所述加壳工具的测试装置的测试机;
所述控制器,用于向所述测试机提必要的供测试样本库以及加壳工具并根据预置时间周期,查询本地计算机是否存在所述加壳工具对应的更新包,若存在,则根据所述更新包更新所述加壳工具,将更新后的加壳工具发送至所述测试机,根据所述测试机发送的运行结果,生成测试报告;
所述测试机,用于获取所述控制器发送的测试样本库以及加壳工具,利用所述加壳工具对所述样本进行加壳处理,得到加壳后的可执行程序,通过运行所述加壳后的可执行程序,记录运行结果,并发送所述运行结果至控制器。
借由上述技术方案,本发明提供的技术方案至少具有下列优点:本发明提供的一种加壳工具的测试方法、装置及系统,相对于现有技术中采用人工对样本进行加壳处理以及手动运行加壳后的文件,需要工作人员值守在机器旁来辅助机器工作的方法,本发明构建了对加壳工具的自动化测试框架,基于这个自动化测试框架,利用控制器中存储的控制程序发送测试命令,使得在测试机中完成测试加壳工具的工作稳定性的测试过程,从而用自动化测试取代现有技术中的人工测试方法,避免了在高强度工作中易出现的人为错误,提高了测试结果的准确率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的一种测试加壳工具的方法流程图;
图2为本发明实施例提供的另一种测试加壳工具的方法流程图;
图3为本发明实施例提供的基于自动化测试框架的测试系统;
图4为本发明实施例提供的测试机工作流程示意图;
图5为本发明实施例提供的自动化测试框架中功能模块的组成框图;
图6为本发明实施例提供的一种测试加壳工具的装置的组成框图;
图7为本发明实施例提供的另一种测试加壳工具的装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种加壳工具的测试方法,如图1所示,该方法应用于系统中的测试机,该方法是在测试加壳工具稳定性的测试工作中,构建自动化测试框架,采用自动化测试取代人工测试方法,提高测试结果的准确率,对此本发明实施例提供以下具体步骤:
101、接收控制器发送的测试命令。
其中,测试命令用于调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,基于自动化测试框架(Software Test Automation Framework,STAF)工具构建测试加壳工具的工作稳定性的自动化测试框架,该自动化测试框架中包含控制器和多个测试机,并且在控制器和测试机中安装STAF,以便于通过调用STAF接口将测试任务分发到不同的测试机去执行,并且收集各个测试机中的测试结果,另外,自动化测试框架中的执行引擎让STAF的使用变得更简单,测试人员只需要配置可扩展的标识语言(Extensible MarkupLanguage,XML)文件便实现STAF任务管理。其中,控制器和测试机都是相同的计算机,多个测试机的操作系统可以是32位或者64位的Win7系统、Win8.1系统以及Win10系统,控制器通过调用STAF接口将测试命令发送至测试机,并且测试命令用于指向不同的测试样本与不同的测试机之间的对应关系,即控制器通过发送测试命令实现调用测试机中的加壳工具对应于测试哪个测试样本库,以便于在测试机中自动实现对加壳工具的工作稳定性的测试。
102、根据测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序。
其中,测试样本库中存储多个待加壳处理的可执行程序(executable program,EXE File)样本,可执行程序的文件扩展名是.exe。在本发明实施例中,为了实现测试加壳工具稳定性的目的,测试样本库中的样本是有条件筛选的,被测试样本库中包括命令行(Console User Interface,CUI)程序和图形用户界面(Graphical User Interface,GUI)程序,并且在上述程序中包含32位程序和64位程序。比如,CUI程序可以是在Windows系统下的命令提示符cmd.exe相关的程序,GUI程序可以是扫雷软件、黑白棋软件等等的可执行程序。
其中,加壳工具被应用于对可执行程序进行加壳处理,可以阻止外部程序或者软件对加壳处理后的程序本身进行反汇编分析或者动态分析,以达到保护壳内的可执行程序不被外部程序破坏,保证程序的正常运行。
在本发明实施例中,加壳工具对于样本的具体加壳方式不限定是:压缩加壳、名称混淆加壳、资源段加密加壳以及精简加壳中的一种。其中,压缩加壳是指对加壳处理后的程序进行压缩处理,减小程序的体积,并且可以防止静态反编译。名称混淆加壳是指对源程序中的函数名称进行混淆,以至于静态反编译工具显示的函数名为乱码。资源段加密加壳是指对被保护程序的资源区段进行加密,当运行被加壳的程序时,需要用户使用相应许可进行解密方可使用该程序。精简加壳是指仅用加壳技术对可执行程序进行加壳处理,而不采用压缩、名称混淆以及资源段加密的方式对加壳后的可执行程序进行后续处理。在本发明实施例中,通过上述不同的加壳方式对样本进行加壳处理,得到加壳后的可执行程序。
103、通过运行加壳后的可执行程序,记录运行结果。
在本发明实施例中,当加壳工具对一条样本进行加壳处理后,运行加壳后的可执行程序,记录对应的运行结果,用于验证加壳工具对样本的加壳处理是否会影响样本对应的运行结果。
104、发送运行结果至控制器,以便控制器根据运行结果生成测试报告。
基于上述步骤,在测试机中,当对测试样本库中的每一条样本都进行加壳处理,并记录加壳后的可执行程序对应的运行结果后,控制器调用STAF接口收集各个测试机中记录的运行结果,发送运行结果至控制器,以便于控制器生成测试报告。
本发明实施例提供的一种加壳工具的测试方法、装置及系统,与现有技术中采用人工对样本进行加壳处理以及手动运行加壳后的文件,需要工作人员值守在机器旁来辅助机器工作的方法,本发明实施例构建了对加壳工具的自动化测试框架,基于这个自动化测试框架,利用控制器中存储的控制程序发送测试命令,使得在测试机中完成测试加壳工具的工作稳定性的测试过程,从而用自动化测试取代现有技术中的人工测试方法,避免了在高强度工作中易出现的人为错误,提高了测试结果的准确率。
基于上述实施例中测试加壳工具的工作稳定性的自动化测试框架,本发明实施例还提供了另一种加壳工具的测试方法,如图2所示,该方法应用于系统中的测试机,该方法是在自动化测试框架中的测试机中,根据加壳配置文件实现加壳工具对样本自动加壳处理,并自动验证加壳后可执行程序的运行结果,进而验证加壳工具的工作稳定性,对此本发明实施例提供以下具体步骤:
201、接收控制器发送的测试命令。
在测试加壳工具的工作稳定性的自动化测试框架中,设置预置时间周期,预置时间周期是根据测试的工作量所确定的,用于规定测试样本库的测试时间周期,比如,在本发明实施例中,可以设置预置时间周期是一天,则控制器需要每天查询本地计算机是否存在加壳工具对应的更新包,更新包中的代码包括实现加壳工具的功能添加、删除、维护等等,当存在对应的更新包时,更新加壳工具,控制器通过调用自动化测试框架的STAF接口将更新后的加壳工具发送至测试机,各个测试机同时对更新后的加壳工具进行测试。
202、根据测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序。
第一,根据样本的程序类型确定加壳处理对应的加壳方式。
其中,当加壳工具在加载样本时,可以确定样本的程序类型是可移植的可执行程序(Portable Executable,PE)类型或者是DOTNET(.Net Framework框架)类型,其中,PE格式是微软Win32(Windows操作系统的32位)环境中可移植的可执行程序格式,DOT是分布式对象(Distributed Object Technology,DOT)且DOT与“点”对应的英文单词发音相同,即DOTNET是.Net框架程序。
在本发明实施例中,当样本的程序类型是PE程序类型时,加壳工具支持对样本实现的加壳方式是压缩加壳、资源段加密加壳以及精简加壳,而不支持实现名称混淆加壳,当样本的程序类型是DOTNET程序类型时,加壳工具支持对样本实现的加壳方式是压缩加壳、名称混淆加壳以及精简加壳而不支持实现资源段加密加壳。据此,基于上述两种不同的程序类型分别对应的加壳方式,加壳工具对样本进行不同方式的加壳处理。
第二,根据加壳方式生成样本对应的加壳配置文件。
由于加壳工具是界面化工作的软件,当用户使用加壳工具对可执行程序进行加壳时,是由人工选择加壳方式实现相应加壳处理的,对于本发明实施例,为了实现对加壳工具工作稳定性的自动化测试,设置配置模块用于生成样本对应的加壳配置文件,该加壳配置文件实现指示后续采用何种加壳方式对样本进行的加壳处理,以便于替代上述人工选择加壳方式,实现在自动化测试工作中自动化指示对样本进行加壳处理。
在本发明实施例中,加壳配置文件是配置模块中生成的,对于不同的加壳方式,配置模块生成的加壳配置文件是不同的,基于加壳配置文件,加壳工具可以实现对样本的自动加壳处理。
在本发明实施例中,当样本的程序类型是PE程序类型时,根据其类型对应的加壳方式,配置模块生成压缩加壳的配置文件、资源段加密加壳的配置文件、压缩加壳和资源段加密加壳的配置文件、精简加壳的配置文件,基于上述4种加壳配置文件,实现加壳工具对样本的自动加壳处理。当样本的程序类型是DOTNET程序类型时,配置模块生成压缩加壳的配置文件,名称混淆加壳的配置文件、压缩加壳和名称混淆加壳的配置文件,精简加壳的配置文件,基于上述4种加壳配置文件,实现加壳工具对样本的自动加壳处理。
具体的,首先,将样本与其对应的加壳方式加载到配置模块中,比如,将PE程序类型的样本与其对应的加壳方式(压缩加壳、资源段加密加壳以及精简加壳)加载到配置模块中,为了测试加壳处理的多种可能性,即加壳工具对样本进行压缩加壳处理、资源段加密加壳处理、精简加壳处理、以及同时进行压缩加壳和资源段加密加壳的加壳处理,那么配置模块会生成对应加壳处理的加壳配置文件,包括:压缩加壳的配置文件、资源段加密加壳的配置文件、精简加壳的配置文件、压缩加壳和资源段加密加壳的配置文件,基于上述加壳配置文件,加壳工具自动对样本进行加壳处理。其次,在配置模块生成加壳配置文件完毕后,配置模块会返回相应的提示信息,用于向测试工作人员显示生成加壳配置文件成功或者失败,当加壳配置文件生成成功时,加壳工具可以基于加壳配置文件对样本进行加壳处理,而当返回的提示信息显示处理异常时,即生成加壳配置文件失败,那么将对于配置模块生成加壳配置文件失败的处理操作的相关日志记录在运行异常日志中,作为异常测试数据,以供测试工作人员后续的研究分析。
第三,利用加壳配置文件对样本进行加壳处理。
对于本发明实施例,在测试机中,加壳工具加载加壳配置文件,对样本进行加壳处理,在加壳处理完毕时,加壳工具会返回提示信息显示加壳处理成功或者失败,其中,当提示信息显示加壳处理失败时,将对样本加壳处理失败的处理操作的相关日志记录在运行异常日志中。
需要说明的是,关于加壳处理失败的情况,可能是由于样本已经被其他加壳工具加壳处理过,或者样本不是编程语言生成的可执行程序文件而是由其他文件修改文件扩展名而得到的,比如将文件的后缀.txt修改为.exe,得到可执行程序文件,其中txt是文本文件格式的文件扩展名,exe是可执行程序文件的文件扩展名,对于若存在上述两种情况,加壳工具不会成功实现对样本的加壳处理。
203、判断加壳后可执行程序的运行类型。
在本发明实施例中,被测样本库中包括命令行(Console User Interface,CUI)程序和图形用户界面(Graphical User Interface,GUI)程序,当运行加壳后的可执行程序时,根据其运行界面不同,可以判断加壳后的可执行程序的运行类型是CUI程序还是GUI程序。比如,命令行程序可以是在Windows系统下的命令提示符cmd.exe相关的程序,图形用户界面程序可以是扫雷软件、黑白棋软件等等的可执行程序。
204a、若加壳后的可执行程序的运行类型是命令行程序,则记录命令行程序在加壳处理前后所运行的对比结果。
若加壳后的可执行程序的运行类型是命令行程序,在测试机中分别运行命令行程序以及加壳处理后的命令行程序,并记录对应的运行结果,通过对比命令行程序在加壳处理前和加壳处理后的运行结果,若相同,则表明加壳工具对样本进行加壳处理后,不会影响样本的运行结果,若不相同,则表明加壳工具对样本进行加壳处理后,运行样本出现异常,将对应的运行异常的操作记录在运行异常日志中,用于测试工作人员后续分析研究。
例如,样本是testAdd.exe,当样本在加壳处理前,在Windows系统下的命令提示符界面中输入“cmd\testAdd.exe”,对应的运行结果显示“1+0=03.141592654+2.718281828=5.859874482”,对于命令行程序testAdd.exe,对比其在加壳处理前和加壳处理后的运行结果,对比的结果是相同的,则表明加壳工具对testAdd.exe进行加壳处理后,不会影响其运行,反之,则表明加壳工具对testAdd.exe进行加壳处理后,运行加壳后的testAdd.exe出现异常。
204b、若加壳后的可执行程序的运行类型是图形用户接口程序,则通过运行图形用户接口程序,记录图形用户接口程序在加壳处理前后所显示界面的界面名称的比对结果。
若加壳后的可执行程序的运行类型是图形用户接口程序,则运行加壳处理后的可执行程序,记录其显示结果对应的显示界面名称,将其与加壳处理之前运行样本对应的显示界面名称比较,若相同,则表明加壳处理不会影响对于运行图形用户接口程序对应的显示结果。此外,在运行加壳处理后的可执行程序时,监控其对应的程序窗口界面是否正常启动,或者是否出现报错窗口界面,也可以用于判断运行加壳后的可执行程序是否存在异常的参考,若程序窗口界面不能正常启动或者出现报错窗口界面,则表明加壳工具对样本进行加壳处理后,运行加壳后可执行程序出现异常。
例如,图形用户接口程序是扫雷游戏的可执行程序,当运行加壳处理后的扫雷游戏的可执行程序时,记录显示结果对应的显示界面名称是“扫雷”将其与加壳处理之前运行样本对应的显示界面名称比较是相同的,则表明加壳处理没有影响对于运行扫雷游戏的可执行程序对应的显示结果。。
205、发送运行结果至控制器,以便控制器根据运行结果生成测试报告。
对于本发明实施例中的自动化测试框架,在测试机中依次对样本进行上述步骤的操作,直至加壳工具对每一条样本进行加壳处理并记录加壳处理后样本对应的运行结果,控制器调用STAF接口收集记录的全部运行结果,生成测试报告,以供测试工作人员后续分析研究,比如基于测试报告中,验证加壳处理后的可执行程序对应的运行结果中,运行结果不存在异常的相对数量越大,从而可以确定加壳工具对样本进行加壳处理后,不会影响样本运行的可能性高,即加壳工具的工作性越稳定。
基于上述本发明提供的两个实施例,在测试机中实现对加壳工具的工作稳定性的自动化测试,本发明实施例还提供了一种加壳工具的测试系统,该系统包括控制器和测试机,并且控制器和测试机可以是自动化测试框架中不同的主机,那么关于控制器和测试机的信息交互而实现测试加壳工具的工作稳定性的测试过程,具体的描述,如图3所示,在构建的自动化测试框架中,存在一个控制器以及由控制器管理的多个测试机,多个测试机用于提供多种测试环境,比如:多个测试机的操作系统可以是32位或者64位的Win7系统、Win8.1系统以及Win10系统,并且在控制器和测试机中安装STAF,控制器通过调用STAF中的接口,发送测试样本库、测试方法实现代码、加壳工具至测试机中,控制测试机对加壳工具进行测试,在预置时间周期内测试完毕,收集测试机中记录的运行结果,最终生成测试报告,此外,根据测试的预置时间周期,控制器查询本地计算机是否存在加壳工具的更新包,若存在,则将加壳工具更新后作为最新版本的加壳工具,发送至测试机,即测试最新版本的加壳工具的工作稳定性。
其中,在测试过程中,测试机中的工作流程,如图4所示,对其进行具体描述,包括:首先,获取测试样本,在测试机中每次对一个样本进行测试,获取对应的测试结果,直至将测试样本库中的全部样本测试完毕;其次,根据所判断样本的程序类型确定加壳工具支持可实现的加壳方式,基于加壳方式可以确定加壳工具实现的多种加壳处理,据此,在加壳工具中生成对应多种加壳处理的加壳配置文件,比如对于每一个样本,判断其是可移植的可执行程序类型还是框架程序类型,若是可移植的可执行程序类型,则选择的加壳方式是压缩加壳、资源段加密加壳、精简加壳,若是框架程序类型,则选择的加壳方式是压缩加壳、名称混淆加壳、精简加壳,根据上述不同程序类型对应的加壳方式,加壳工具生成加壳配置文件,用于对样本进行加壳处理;然后,判断加壳工具是否成功生成加壳配置文件,若生成失败,记录对应操作的运行日志,若生成成功,则加壳工具加载加壳配置文件对样本进行加壳处理,根据加壳处理返回的提示信息判断加壳处理是否成功;最后,在加壳处理成功的情况下,验证加壳处理是否会影响样本的运行结果,从而确定加壳工具的工作稳定性,比如当加壳后的可执行程序是CUI程序时,通过比对样本在加壳前后的运行结果,验证加壳处理是否会影响样本的运行结果,再比如,当加壳后的可执行程序是GUI程序时,运行加壳后的可执行程序,通过监控程序窗口是否正常启动、是否存在报错窗口,验证加壳处理是否会影响样本的运行结果。
需要说明的是,基于上述的测试流程,如图3、图4所示,本发明实施例对测试框架中的功能模块作出简要描述,如图5所示,测试框架中功能模块主要包括:通用模块、加壳模块以及验证模块,其中,通用模块中包含判断程序类型的判断模块、记录每个测试步骤的日志的日志模块、以及记录每个样本测试结果的结果模块。此外,加壳模块用于生成加壳配置文件和对样本进行加壳处理,验证模块用于验证加壳工具是否影响样本运行。对于本发明实施例,在测试工作开始之前,控制器中存储的控制程序调用框架内所有功能模块清理测试环境,包括:清理上一次测试的日志、记录结果、加壳配置文件等等,通过上述清理测试环境的操作,避免生成的测试报告中存在不属于本次测试工作的数据结果,防止这些数据结果影响对测试加壳工具的工作稳定性的准确率。
进一步的,作为对上述图1、图2所示方法的实现,本发明实施例提供了一种加壳工具的测试装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置应用于提高测试加壳工具的工作稳定性的准确率,具体如图6所示,该装置包括:
接收单元31,用于接收控制器发送的测试命令;
处理单元32,用于根据所述接收单元31接收的测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序;
记录单元33,用于运行所述处理单元32加壳处理的可执行程序,记录运行结果;
发送单元34,用于发送所述记录单元33记录的运行结果至控制器,以便所述控制器根据所述运行结果生成测试报告。进一步的,如图7所示,所述记录单元33包括:
判断模块331,用于判断所述加壳后的可执行程序的运行类型,所述运行类型包括命令行程序和图形用户接口程序;
第一记录模块332,用于当所述判断模块331判断所述样本的运行类型是命令行程序时,记录所述命令行程序在加壳处理前后所运行的对比结果;
第二记录模块333,用于当所述判断模块331判断所述样本的运行类型是图形用户接口程序时,通过运行所述图形用户接口程序,记录所述图形用户接口程序在加壳处理前后所显示界面的界面名称的比对结果。
进一步的,如图7所示,所述处理单元32包括:
确定模块321,用于根据所述样本的程序类型确定加壳处理对应的加壳方式;
生成模块322,用于根据所述确定模块321确定的加壳方式生成所述样本对应的加壳配置文件;
处理模块323,用于利用所述生成模块322生成的加壳配置文件对所述样本进行加壳处理。
进一步的,如图7所示,所述确定模块321包括:
第一选择子模块3211,当所述程序类型是可移植的可执行程序类型时,选择资源段加密加壳,所述资源段加密加壳是所述加壳工具加壳处理所述样本的加壳方式;
第二选择子模块3212,当所述程序类型是框架程序类型时,选择名称混淆加壳,所述名称混淆加壳是所述加壳工具加壳处理所述样本的加壳方式。
进一步的,如图7所示,所述生成模块322包括:
加载子模块3221,用于将所述样本与所述加壳方式加载到配置模块中,所述配置模块用于根据所述加壳方式生成对应的加壳配置文件;
判断子模块3222,用于根据所述配置模块返回的提示信息判断是否成功生成加壳配置文件;
记录子模块3223,用于当所述提示信息是处理异常时,将所述配置模块生成加壳配置文件的处理操作记录在运行异常日志中。
综上所述,本发明实施例所采用的一种加壳工具的测试方法、装置及系统,通过构建自动化测试框架,实现控制器对多个测试机的控制,即实现在多个不同系统的测试机中测试加壳工具的稳定性,提高了测试工作的效率。此外,在测试机中,基于生成的加壳配置文件,实现加壳工具对样本的自动化加壳处理,而后能够自动地验证加壳后可执行程序的运行结果,即采用自动化测试替代现有技术中人工加壳以及手动验证运行结果的过程,消除了人工工作中不可避免的人为错误,提高了测试加壳工具的工作稳定性的准确率。
所述加壳工具的测试装置包括处理器和存储器,上述获接收单元、处理单元、记录单元和发送单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提高了测试加壳工具的工作稳定性的准确率。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
一种加壳工具的测试方法,所述方法包括:接收控制器发送的测试命令;根据所述测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序;通过运行所述加壳后的可执行程序,记录运行结果;发送所述运行结果至控制器,以便所述控制器根据所述运行结果生成测试报告。
进一步的,所述通过运行所述加壳后的可执行程序,记录运行结果包括:判断所述加壳后的可执行程序的运行类型,所述运行类型包括命令行程序和图形用户接口程序;若是命令行程序,则记录所述命令行程序在加壳处理前后所运行的对比结果;若是图形用户接口程序,则通过运行所述图形用户接口程序,记录所述图形用户接口程序在加壳处理前后所显示界面的界面名称的比对结果。
进一步的,所述根据所述测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序包括:根据所述样本的程序类型确定加壳处理对应的加壳方式;根据所述加壳方式生成所述样本对应的加壳配置文件;利用所述加壳配置文件对所述样本进行加壳处理。
进一步的,所述根据所述程序类型确定所述加壳处理对应的加壳方式包括:若所述程序类型是可移植的可执行程序类型,则选择资源段加密加壳,所述资源段加密加壳是所述加壳工具加壳处理所述样本的加壳方式;若所述程序类型是框架程序类型,则选择名称混淆加壳,所述名称混淆加壳是所述加壳工具加壳处理所述样本的加壳方式。
进一步的,根据所述加壳方式生成所述样本对应的加壳配置文件包括:将所述样本与所述加壳方式加载到配置模块中,所述配置模块用于根据所述加壳方式生成对应的加壳配置文件;根据所述配置模块返回的提示信息判断是否成功生成加壳配置文件;若所述提示信息是处理异常时,则将所述配置模块生成加壳配置文件的处理操作记录在运行异常日志中。
本文中的设备可以是服务器、PC等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:接收控制器发送的测试命令;根据所述测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序;通过运行所述加壳后的可执行程序,记录运行结果;发送所述运行结果至控制器,以便所述控制器根据所述运行结果生成测试报告。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (9)
1.一种加壳工具的测试方法,所述方法应用于测试机,其特征在于,所述方法包括:
接收控制器发送的测试命令;
根据所述测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序,进一步包括:根据所述样本的程序类型确定加壳处理对应的加壳方式,根据所述加壳方式生成所述样本对应的加壳配置文件,利用所述加壳配置文件对所述样本进行加壳处理;
通过运行所述加壳后的可执行程序,记录运行结果;
发送所述运行结果至控制器,以便所述控制器根据所述运行结果生成测试报告。
2.根据权利要求1所述的方法,其特征在于,所述通过运行所述加壳后的可执行程序,记录运行结果包括:
判断所述加壳后的可执行程序的运行类型,所述运行类型包括命令行程序和图形用户接口程序;
若是命令行程序,则记录所述命令行程序在加壳处理前后所运行的对比结果;
若是图形用户接口程序,则通过运行所述图形用户接口程序,记录所述图形用户接口程序在加壳处理前后所显示界面的界面名称的比对结果。
3.根据权利要求1所述的方法,其特征在于,所述根据所述程序类型确定所述加壳处理对应的加壳方式包括:
若所述程序类型是可移植的可执行程序类型,则选择资源段加密加壳,所述资源段加密加壳是所述加壳工具加壳处理所述样本的加壳方式;
若所述程序类型是框架程序类型,则选择名称混淆加壳,所述名称混淆加壳是所述加壳工具加壳处理所述样本的加壳方式。
4.根据权利要求1所述的方法,其特征在于,根据所述加壳方式生成所述样本对应的加壳配置文件包括:
将所述样本与所述加壳方式加载到配置模块中,所述配置模块用于根据所述加壳方式生成对应的加壳配置文件;
根据所述配置模块返回的提示信息判断是否成功生成加壳配置文件;
若所述提示信息是处理异常时,则将所述配置模块生成加壳配置文件的处理操作记录在运行异常日志中。
5.一种加壳工具的测试装置,其特征在于,所述装置包括:
接收单元,用于接收控制器发送的测试命令;
处理单元,用于根据所述接收单元接收的测试命令调用测试机中的加壳工具对测试样本库中存储的样本进行加壳处理,得到加壳后的可执行程序;
其中,所述处理单元包括:确定模块、生成模块、处理模块;
所述确定模块,用于根据所述样本的程序类型确定加壳处理对应的加壳方式;
所述生成模块,用于根据所述确定模块确定的加壳方式生成所述样本对应的加壳配置文件;
所述处理模块,用于利用所述生成模块生成的加壳配置文件对所述样本进行加壳处理;
记录单元,用于运行所述处理单元加壳处理的可执行程序,记录运行结果;
发送单元,用于发送所述运行结果至控制器,以便所述控制器根据所述运行结果生成测试报告。
6.根据权利要求5所述的装置,其特征在于,所述记录单元包括:
判断模块,用于判断所述加壳后的可执行程序的运行类型,所述运行类型包括命令行程序和图形用户接口程序;
第一记录模块,用于当所述判断模块判断所述样本的运行类型是命令行程序时,记录所述命令行程序在加壳处理前后所运行的对比结果;
第二记录模块,用于当所述判断模块判断所述样本的运行类型是图形用户接口程序时,通过运行所述图形用户接口程序,记录所述图形用户接口程序在加壳处理前后所显示界面的界面名称的比对结果。
7.根据权利要求5所述的装置,其特征在于,所述确定模块包括:
第一选择子模块,当所述程序类型是可移植的可执行程序类型时,选择资源段加密加壳,所述资源段加密加壳是所述加壳工具加壳处理所述样本的加壳方式;
第二选择子模块,当所述程序类型是框架程序类型时,选择名称混淆加壳,所述名称混淆加壳是所述加壳工具加壳处理所述样本的加壳方式。
8.根据权利要求5所述的装置,其特征在于,所述生成模块包括:
加载子模块,用于将所述样本与所述加壳方式加载到配置模块中,所述配置模块用于根据所述加壳方式生成对应的加壳配置文件;
判断子模块,用于根据所述配置模块返回的提示信息判断是否成功生成加壳配置文件;
记录子模块,用于当所述提示信息是处理异常时,将所述配置模块生成加壳配置文件的处理操作记录在运行异常日志中。
9.一种加壳工具的测试系统,其特征在于,所述系统包括含有加壳工具的测试装置的控制器以及如权利要求5-8中任一项所述加壳工具的测试装置的测试机;
所述控制器,用于向所述测试机提供必要的测试样本库以及加壳工具,并根据预置时间周期,查询本地计算机是否存在所述加壳工具对应的更新包,若存在,则根据所述更新包更新所述加壳工具,将更新后的加壳工具发送至所述测试机,根据所述测试机发送的运行结果,生成测试报告;
所述测试机,用于获取所述控制器发送的测试样本库以及加壳工具,利用所述加壳工具对所述样本进行加壳处理,得到加壳后的可执行程序,通过运行所述加壳后的可执行程序,记录运行结果,并发送所述运行结果至控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710550655.XA CN107273298B (zh) | 2017-07-07 | 2017-07-07 | 一种加壳工具的测试方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710550655.XA CN107273298B (zh) | 2017-07-07 | 2017-07-07 | 一种加壳工具的测试方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107273298A CN107273298A (zh) | 2017-10-20 |
CN107273298B true CN107273298B (zh) | 2019-02-15 |
Family
ID=60072614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710550655.XA Active CN107273298B (zh) | 2017-07-07 | 2017-07-07 | 一种加壳工具的测试方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107273298B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11846972B2 (en) | 2021-04-14 | 2023-12-19 | National Taiwan University | Method and apparatus for generating software test reports |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527672B (zh) * | 2020-12-21 | 2021-10-22 | 北京深思数盾科技股份有限公司 | 一种针对加壳工具的检测方法及设备 |
CN112818359B (zh) * | 2020-12-31 | 2022-06-03 | 北京深思数盾科技股份有限公司 | 一种文件保护方法及装置 |
CN114265782B (zh) * | 2021-12-27 | 2023-01-24 | 北京深盾科技股份有限公司 | 基于应用程序的加壳工具测试方法、存储介质及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9710370B2 (en) * | 2015-10-13 | 2017-07-18 | Adobe Systems Incorporated | Automated testing of shell scripts |
CN106227652B (zh) * | 2016-07-12 | 2019-05-28 | 合一网络技术(北京)有限公司 | 自动化测试方法及系统 |
CN106294172B (zh) * | 2016-08-17 | 2018-10-30 | 刘华英 | 基于终端设备的app自测方法和装置 |
-
2017
- 2017-07-07 CN CN201710550655.XA patent/CN107273298B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11846972B2 (en) | 2021-04-14 | 2023-12-19 | National Taiwan University | Method and apparatus for generating software test reports |
Also Published As
Publication number | Publication date |
---|---|
CN107273298A (zh) | 2017-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273298B (zh) | 一种加壳工具的测试方法、装置及系统 | |
CN111488578A (zh) | 现代应用程序的连续漏洞管理 | |
US9582418B2 (en) | Confirming the sensitivity of a data object in a managed object heap | |
US8561024B2 (en) | Developing software components and capability testing procedures for testing coded software component | |
US10885201B2 (en) | Apparatus for quantifying security of open-source software package, and apparatus and method for optimizing open-source software package | |
US11106458B2 (en) | System and method for distributed ledger-based software supply chain management | |
US7512933B1 (en) | Method and system for associating logs and traces to test cases | |
US8091066B2 (en) | Automated multi-platform build and test environment for software application development | |
CN108829593A (zh) | 代码覆盖率计算分析方法、装置、设备及存储介质 | |
CN106648741A (zh) | 一种应用系统部署方法及装置 | |
EP2615555A1 (en) | Framework for automated testing of mobile apps | |
US8762989B2 (en) | Application runtime expert for deployment of an application on multiple computer systems | |
US20140053125A1 (en) | Determining project status in a development environment | |
CN107025168B (zh) | 漏洞检测方法及装置 | |
CN111290941A (zh) | 多个接口的测试方法、装置、计算设备和介质 | |
CN108595187A (zh) | 安卓安装包集成软件开发工具包的法、装置及存储介质 | |
US10606586B2 (en) | Application architecture generation | |
CN108965037A (zh) | 安全测试数据的获取和审计分析方法及装置 | |
CN108182058A (zh) | 一种基于云平台的软件开发方法和云开发平台 | |
CN105446868A (zh) | 系统兼容性测试方法、测试用例管理方法及相关装置 | |
JP6282217B2 (ja) | 不正プログラム対策システムおよび不正プログラム対策方法 | |
Strauch et al. | Decision support for the migration of the application database layer to the cloud | |
CN112463588A (zh) | 一种自动化测试系统及方法、存储介质、计算设备 | |
Kupsch et al. | Bad and good news about using software assurance tools | |
CN109729050A (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 |