CN112948276A - 模糊测试方法、装置和电子设备 - Google Patents
模糊测试方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112948276A CN112948276A CN202110463973.9A CN202110463973A CN112948276A CN 112948276 A CN112948276 A CN 112948276A CN 202110463973 A CN202110463973 A CN 202110463973A CN 112948276 A CN112948276 A CN 112948276A
- Authority
- CN
- China
- Prior art keywords
- software
- file
- tested
- malformed
- message
- 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.)
- Pending
Links
Images
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/3684—Test management for test design, e.g. generating new test cases
-
- 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
Abstract
本发明提供了一种模糊测试方法、装置和电子设备,涉及计算机软件的技术领域,模糊测试工具首先获取用于模糊测试的畸形文件,待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且自定义代码中预设了畸形文件的存储路径,接下来,模糊测试工具只需要通过预设消息重放函数向待测试软件发送打开文件的目标消息,即可监测到待测试软件读取并解析上述存储路径下的畸形文件时的运行状态。该方法不需要大量的逆向工程技术来分析函数参数对应的结构体类型以及函数间的调用依赖关系,测试范围也不限于只提供API接口的函数,打破了现有技术中的模糊测试方法的测试局限性,同时也节省了大量的时间成本。
Description
技术领域
本发明涉及计算机软件的技术领域,尤其是涉及一种模糊测试方法、装置和电子设备。
背景技术
一款软件从无到有会经历很多的开发阶段,并且由不同的人来参与开发,所以最终产出的软件功能会存在一些问题,有些问题可被用来实施网络攻击,而模糊测试技术能够有效的发现这些问题。
传统的模糊测试方法为:首先通过逆向分析技术确定待测软件的动态链接库导出函数的参数类型以及函数间的依赖关系,然后编写加载器加载动态链接库并调用这些导出函数,最后利用模糊测试工具来测试这个加载器,从而间接测试动态链接库中的代码。但是,上述方法需要运用大量的逆向工程技术来分析导出函数参数所对应的结构体类型以及函数间调用的顺序,并且该方法只能对动态链接库中提供了API接口的函数进行测试。
综上所述,现有技术中的模糊测试方法存在测试局限性且需要大量的时间成本。
发明内容
本发明的目的在于提供一种模糊测试方法、装置和电子设备,打破了现有技术中的模糊测试方法的测试局限性,同时也节省了大量的时间成本。
第一方面,本发明提供一种模糊测试方法,应用于模糊测试工具,所述方法包括:获取畸形文件;其中,所述畸形文件用于对待测试软件进行模糊测试;通过预设消息重放函数向所述待测试软件发送打开文件的目标消息,其中,所述目标消息包括:按钮ID和WM_COMMAND消息;监测所述待测试软件的目标运行状态;其中,所述目标运行状态表示所述待测试软件基于所述目标消息读取并解析所述畸形文件时的运行状态;所述待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且所述自定义代码中预设了所述畸形文件的存储路径。
在可选的实施方式中,所述方法还包括:捕获所述待测试软件基于用户的选择指令确定的打开文件的按钮ID和WM_COMMAND消息;将所述按钮ID和所述WM_COMMAND消息进行封装,得到所述预设消息重放函数。
在可选的实施方式中,所述方法还包括:备份导致所述待测试软件处于异常运行状态的畸形文件。
第二方面,本发明提供一种模糊测试方法,应用于待测试软件,所述方法包括:将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码;其中,所述自定义代码中预设了模糊测试所使用的畸形文件的存储路径;接收模糊测试工具重放的打开文件的目标消息;其中,所述目标消息包括:按钮ID和WM_COMMAND消息;基于所述目标消息调用所述自定义代码以获取所述畸形文件的存储路径;读取并解析所述畸形文件的存储路径下的畸形文件,并将运行状态反馈至所述模糊测试工具。
在可选的实施方式中,所述方法还包括:导入测试用动态链接库,以使所述待测试软件启动时自动加载所述测试用动态链接库;其中,所述测试用动态链接库中预设代码转换线程,所述代码转换线程用于将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码。
第三方面,本发明提供一种模糊测试装置,应用于模糊测试工具,所述装置包括:获取模块,用于获取畸形文件;其中,所述畸形文件用于对待测试软件进行模糊测试;发送模块,用于通过预设消息重放函数向所述待测试软件发送打开文件的目标消息,其中,所述目标消息包括:按钮ID和WM_COMMAND消息;监测模块,用于监测所述待测试软件的目标运行状态;其中,所述目标运行状态表示所述待测试软件基于所述目标消息读取并解析所述畸形文件时的运行状态;所述待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且所述自定义代码中预设了所述畸形文件的存储路径。
在可选的实施方式中,所述装置还包括:捕获模块,用于捕获所述待测试软件基于用户的选择指令确定的打开文件的按钮ID和WM_COMMAND消息;封装模块,用于将所述按钮ID和所述WM_COMMAND消息进行封装,得到所述预设消息重放函数。
第四方面,本发明提供一种模糊测试装置,应用于待测试软件,所述装置包括:转换模块,用于将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码;其中,所述自定义代码中预设了模糊测试所使用的畸形文件的存储路径;接收模块,用于接收模糊测试工具重放的打开文件的目标消息;其中,所述目标消息包括:按钮ID和WM_COMMAND消息;调用模块,用于基于所述目标消息调用所述自定义代码以获取所述畸形文件的存储路径;读取解析模块,用于读取并解析所述畸形文件的存储路径下的畸形文件,并将运行状态反馈至所述模糊测试工具。
第五方面,本发明提供一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述前述实施方式中任一项所述的方法的步骤。
第六方面,本发明提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行前述实施方式中任一项所述的方法。
本发明提供的模糊测试方法,应用于模糊测试工具,包括:获取畸形文件;其中,所述畸形文件用于对待测试软件进行模糊测试;通过预设消息重放函数向所述待测试软件发送打开文件的目标消息,其中,所述目标消息包括:按钮ID和WM_COMMAND消息;监测所述待测试软件的目标运行状态;其中,所述目标运行状态表示所述待测试软件基于所述目标消息读取并解析所述畸形文件时的运行状态;所述待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且所述自定义代码中预设了所述畸形文件的存储路径。
现有的模糊测试方法只能对待测试软件所依赖的动态链接库中具有API接口的代码进行测试,并且需要逆向这些API接口的参数,存在一定的局限性以及需要大量的时间成本。与现有技术相比,本发明提供的模糊测试方法中,模糊测试工具首先获取用于模糊测试的畸形文件,并且,待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且自定义代码中预设了所述畸形文件的存储路径,接下来,模糊测试工具只需要通过预设消息重放函数向待测试软件发送打开文件的目标消息,即可监测到待测试软件读取并解析上述存储路径下的畸形文件时的运行状态。本发明方法不需要大量的逆向工程技术来分析函数参数对应的结构体类型以及函数间的调用依赖关系,且测试范围也不限于只提供API接口的函数,打破了现有技术中的模糊测试方法的测试局限性,同时也节省了大量的时间成本。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种模糊测试方法的流程图;
图2为本发明实施例提供的另一种模糊测试方法的流程图;
图3为本发明实施例提供的一种模糊测试装置的功能模块图;
图4为本发明实施例提供的另一种模糊测试装置的功能模块图;
图5为本发明实施例提供的一种电子设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
一款软件从无到有会经历很多的开发阶段,并且由不同的人来参与开发,所以最终产出的软件功能会存在一些问题,有些问题可被用来实施网络攻击,而模糊测试技术能够有效的发现这些问题。模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。
但是,传统的模糊测试方法需要运用大量的逆向工程技术来分析导出函数参数所对应的结构体类型以及函数间调用的顺序,并且该方法只能对动态链接库中提供了API接口的函数进行测试,因此,现有的模糊测试方法存在一定的局限性,并且还需要耗费大量的时间成本。有鉴于此,本发明实施例提供了一种模糊测试方法,用以缓解上文中所提出的技术问题。
实施例一
图1为本发明实施例提供的一种模糊测试方法的流程图,该方法应用于模糊测试工具,如图1所示,该方法具体包括如下步骤:
步骤S102,获取畸形文件。
本发明实施例的执行主体为对待测试软件进行测试的模糊测试工具,例如WinAFL,在执行模糊测试时,模糊测试工具首先应获取畸形文件,其中,畸形文件用于对待测试软件进行模糊测试,畸形文件是指正常文件中的数据被修改后得到的文件,例如,一个可以正常显示的图片,通过随机修改图片中的数据,就能够得到一个畸形图片,该畸形图片即可作为测试用的畸形文件。
若模糊测试工具采用WinAFL,那么WinAFL可以通过执行以下代码以得到畸形文件:afl-fuzz.exe-i.\in-o.\out-target_module fuzz.dll-target_method fuzz--gui.exe,其中,afl-fuzz.exe是winafl中的主程序,通过执行上面这行代码,winafl就会自动将in文件夹中的某个文件的内容随机修改后保存到out文件夹下的.cur_input文件中。
步骤S104,通过预设消息重放函数向待测试软件发送打开文件的目标消息。
常规的文件打开流程为:当用户点击待测试软件提供的图形界面上的打开文件的按钮时,操作系统会向待测试软件发送一个WM_COMMAND类型的消息,接着待测试软件会处理该消息并调用操作系统提供的GetOpenFileName函数,进而在图形界面上弹出一个对话框,让用户选择文件,当用户选择文件并点击对话框中的确定按钮后,GetOpenFileName函数就会将用户选择的文件所对应的路径传递给待测试软件,待测试软件就会根据该路径打开并解析上述文件。
为了提高模糊测试方法的测试效率,本发明实施例利用操作系统(例如windows系统)提供的消息机制模拟人工打开文件的操作,即通过调用预设消息重放函数的方式来向待测试软件发送打开文件的目标消息,其中,目标消息包括:按钮ID和WM_COMMAND消息,按钮ID具体为数字编号,类似于身份证号码,每个按钮ID用来唯一标识一个按钮。
在本发明实施例中,待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且自定义代码中预设了畸形文件的存储路径。因此,待测试软件在接收到打开文件的目标消息后,将基于该目标消息调用其转换后的自定义代码,自定义代码将畸形文件的存储路径告知待测试软件,因此,待测试软件可以得到畸形文件的存储路径,并进一步的读取并解析该路径下的畸形文件,从而绕过现有技术中通过弹框以等待用户选择文件的这一个步骤。
步骤S106,监测待测试软件的目标运行状态。
待测试软件对畸形文件进行读取及解析的过程中,模糊测试工具的监测程序将实时监测待测试软件的目标运行状态,其中,目标运行状态表示待测试软件基于上述目标消息读取并解析畸形文件时的运行状态,且目标运行状态包括以下两种情况:正常运行状态,异常运行状态;且待测试软件也会在程序运行状态出现异常时将异常消息反馈给模糊测试工具的监测程序。
由于待测试软件在解析畸形文件过程中会调用其所依赖的动态链接库中的函数,且并不限于提供了API接口的函数,因此,本发明方法打破了现有技术中的模糊测试方法的测试局限性,用户也可以在一次模糊测试结束后查看代码覆盖率。
进一步的,还可以通过控制重复执行上述步骤S102至步骤S106(每次执行使用的畸形文件不同),以完成预设比例的代码覆盖率的测试任务,或者完成对指定函数的测试。
现有的模糊测试方法只能对待测试软件所依赖的动态链接库中具有API接口的代码进行测试,并且需要逆向这些API接口的参数,存在一定的局限性以及需要大量的时间成本。与现有技术相比,本发明提供的模糊测试方法中,模糊测试工具首先获取用于模糊测试的畸形文件,并且,待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且自定义代码中预设了所述畸形文件的存储路径,接下来,模糊测试工具只需要通过预设消息重放函数向待测试软件发送打开文件的目标消息,即可监测到待测试软件读取并解析上述存储路径下的畸形文件时的运行状态。本发明方法不需要大量的逆向工程技术来分析函数参数对应的结构体类型以及函数间的调用依赖关系,且测试范围也不限于只提供API接口的函数,打破了现有技术中的模糊测试方法的测试局限性,同时也节省了大量的时间成本。
上文中对本发明实施例提供的模糊测试方法进行了描述,下面对该方法所涉及的其他步骤进行介绍。
在一个可选的实施方式中,本发明方法还包括如下内容:备份导致待测试软件处于异常运行状态的畸形文件。
具体的,模糊测试就是通过创建大量畸形文件,并找到那些能够使待测试软件崩溃的畸形文件。通过上文中的描述可知,在待测试软件对畸形文件进行读取及解析的过程中,模糊测试工具的监测程序将实时监测待测试软件的运行状态,如果待测试软件运行过程中出现异常,那么上述监测程序将备份导致待测试软件处于异常运行状态的畸形文件,进而可为软件漏洞的修复提供重要数据。
由于每次文件打开过程的消息都是一样的,为了提高模糊测试的测试效率,发明人想到利用操作系统提供的消息机制模拟人工打开文件的操作,因此,在一个可选的实施方式中,本发明方法还包括如下步骤:
步骤S201,捕获待测试软件基于用户的选择指令确定的打开文件的按钮ID和WM_COMMAND消息。
步骤S202,将按钮ID和WM_COMMAND消息进行封装,得到预设消息重放函数。
具体的,在用户人工操作打开文件的过程中,利用消息捕获工具(例如,spy++)将待测试软件基于用户的选择指令确定的打开文件的按钮ID和WM_COMMAND消息进行捕获,然后再将按钮ID和WM_COMMAND消息封装成预设消息重放函数(例如SendMessage函数),当模糊测试工具调用上述预设消息重放函数时(即调用预设消息重放函数所导出的API),即可利用操作系统提供的SendMessage函数重放这些消息,进而实现单击按钮的模拟。
综上所述,本发明实施例所提供的模糊测试方法中,待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且自定义代码中预设了所述畸形文件的存储路径,并利用操作系统提供的消息机制模拟用户点击按钮的操作,因此,模糊测试工具通过捕获并重放打开文件时的消息即可实现让待测试软件打开并解析畸形文件,不仅节省了大量逆向软件的时间,并且还可以测试未提供API接口的函数,打破了现有技术中的模糊测试方法的测试局限性。
实施例二
图2为本发明实施例提供的另一种模糊测试方法的流程图,该方法应用于待测试软件,如图2所示,该方法具体包括如下步骤:
步骤S302,将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码。
上述实施例一以执行主体为模糊测试工具的角度描述了对待测试软件执行模糊测试的方法,为了更清楚的介绍该测试方法,本实施例将在执行主体为待测试软件的角度上对本发明提供的模糊测试方法进行介绍。
具体的,在对待测试软件进行模糊测试时,待测试软件首先需要将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,一般地,可以选择使用HOOK技术完成上述代码转换的操作,且代码转换后,自定义代码中预设了模糊测试所使用的畸形文件的存储路径。
步骤S304,接收模糊测试工具重放的打开文件的目标消息。
待测试软件在进行模糊测试时,模糊测试工具会预先生成测试用的畸形文件,然后通过调用预设消息重放函数的方式向待测试软件重放打开文件的目标消息,其中,目标消息包括:按钮ID和WM_COMMAND消息。
步骤S306,基于目标消息调用自定义代码以获取畸形文件的存储路径。
步骤S308,读取并解析畸形文件的存储路径下的畸形文件,并将运行状态反馈至模糊测试工具。
待测试软件在接收到打开文件的目标消息后,将根据目标消息调用代码转换后的自定义代码,进而通过自定义代码获取到测试用的畸形文件路径,然后对该路径下的畸形文件进行读取并解析,在该解析畸形文件的过程中,待测试程序会将其运行状态上报至模糊测试工具,如果出现异常运行状态,那么模糊测试工具将会将导致异常的畸形文件进行备份,进而为漏洞修复提供重要数据支撑。
待测试软件在文件解析过程中会调用其所依赖的动态链接库中的函数,且所调用的函数会根据畸形文件的不同而变化,与函数是否提供API接口无关,因此,本发明方法打破了现有技术中的模糊测试方法的测试局限性,通过控制重复执行上述步骤S302至步骤S308(每次解析的畸形文件不同)可完成预设比例的代码覆盖率的测试任务,或者完成对指定函数的测试。
本发明实施例提供的模糊测试方法与上述实施例一中的方法所具备的有益效果相同,此处不再赘述。
在一个可选的实施方式中,本发明方法还包括如下步骤:导入测试用动态链接库,以使待测试软件启动时自动加载测试用动态链接库。
为了进一步的提高模糊测试方法的测试效率,还可以预先构建测试用动态链接库,其中,测试用动态链接库中预设代码转换线程,代码转换线程用于将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码。构建结束后,待测试软件将测试用动态链接库导入,这样一来,待测试软件启动时将自动加载测试用动态链接库,当测试用动态链接库加载后,就会执行上述代码转换线程,完成自定义代码的转换。
实施例三
本发明实施例还提供了一种模糊测试装置,该模糊测试装置应用于模糊测试工具,主要用于执行上述实施例一所提供的模糊测试方法,以下对本发明实施例提供的模糊测试装置做具体介绍。
图3是本发明实施例提供的一种模糊测试装置的功能模块图,如图3所示,该装置主要包括:获取模块100,发送模块200,监测模块300,其中:
获取模块100,用于获取畸形文件;其中,畸形文件用于对待测试软件进行模糊测试。
发送模块200,用于通过预设消息重放函数向待测试软件发送打开文件的目标消息,其中,目标消息包括:按钮ID和WM_COMMAND消息。
监测模块300,用于监测待测试软件的目标运行状态;其中,目标运行状态表示待测试软件基于目标消息读取并解析畸形文件时的运行状态;待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且自定义代码中预设了畸形文件的存储路径。
现有的模糊测试方法只能对待测试软件所依赖的动态链接库中具有API接口的代码进行测试,并且需要逆向这些API接口的参数,存在一定的局限性以及需要大量的时间成本。与现有技术相比,本发明提供了一种模糊测试装置,首先获取用于模糊测试的畸形文件,并且,待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且自定义代码中预设了所述畸形文件的存储路径,接下来只需要通过预设消息重放函数向待测试软件发送打开文件的目标消息,即可监测到待测试软件读取并解析上述存储路径下的畸形文件时的运行状态。本发明装置不需要大量的逆向工程技术来分析函数参数对应的结构体类型以及函数间的调用依赖关系,且测试范围也不限于只提供API接口的函数,打破了现有技术中的模糊测试方法的测试局限性,同时也节省了大量的时间成本。
可选的,该装置还包括:
捕获模块,用于捕获待测试软件基于用户的选择指令确定的打开文件的按钮ID和WM_COMMAND消息。
封装模块,用于将按钮ID和WM_COMMAND消息进行封装,得到预设消息重放函数。
可选的,该装置还包括:备份模块,用于备份导致待测试软件处于异常运行状态的畸形文件。
实施例四
本发明实施例还提供了一种模糊测试装置,该模糊测试装置应用于待测试软件,主要用于执行上述实施例二所提供的模糊测试方法,以下对本发明实施例提供的模糊测试装置做具体介绍。
图4是本发明实施例提供的另一种模糊测试装置的功能模块图,如图4所示,该装置主要包括:转换模块400,接收模块500,调用模块600,读取解析模块700,其中:
转换模块400,用于将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码;其中,自定义代码中预设了模糊测试所使用的畸形文件的存储路径。
接收模块500,用于接收模糊测试工具重放的打开文件的目标消息;其中,目标消息包括:按钮ID和WM_COMMAND消息。
调用模块600,用于基于目标消息调用自定义代码以获取畸形文件的存储路径。
读取解析模块700,用于读取并解析畸形文件的存储路径下的畸形文件,并将运行状态反馈至模糊测试工具。
可选的,该装置还包括:
导入模块,用于导入测试用动态链接库,以使待测试软件启动时自动加载测试用动态链接库;其中,测试用动态链接库中预设代码转换线程,代码转换线程用于将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码。
实施例五
参见图5,本发明实施例提供了一种电子设备,该电子设备包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。
其中,存储器61可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线62可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的一种模糊测试方法、装置和电子设备的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
此外,术语“水平”、“竖直”、“悬垂”等术语并不表示要求部件绝对水平或悬垂,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种模糊测试方法,其特征在于,应用于模糊测试工具,所述方法包括:
获取畸形文件;其中,所述畸形文件用于对待测试软件进行模糊测试;
通过预设消息重放函数向所述待测试软件发送打开文件的目标消息,其中,所述目标消息包括:按钮ID和WM_COMMAND消息;
监测所述待测试软件的目标运行状态;其中,所述目标运行状态表示所述待测试软件基于所述目标消息读取并解析所述畸形文件时的运行状态;所述待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且所述自定义代码中预设了所述畸形文件的存储路径。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
捕获所述待测试软件基于用户的选择指令确定的打开文件的按钮ID和WM_COMMAND消息;
将所述按钮ID和所述WM_COMMAND消息进行封装,得到所述预设消息重放函数。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:备份导致所述待测试软件处于异常运行状态的畸形文件。
4.一种模糊测试方法,其特征在于,应用于待测试软件,所述方法包括:
将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码;其中,所述自定义代码中预设了模糊测试所使用的畸形文件的存储路径;
接收模糊测试工具重放的打开文件的目标消息;其中,所述目标消息包括:按钮ID和WM_COMMAND消息;
基于所述目标消息调用所述自定义代码以获取所述畸形文件的存储路径;
读取并解析所述畸形文件的存储路径下的畸形文件,并将运行状态反馈至所述模糊测试工具。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
导入测试用动态链接库,以使所述待测试软件启动时自动加载所述测试用动态链接库;其中,所述测试用动态链接库中预设代码转换线程,所述代码转换线程用于将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码。
6.一种模糊测试装置,其特征在于,应用于模糊测试工具,所述装置包括:
获取模块,用于获取畸形文件;其中,所述畸形文件用于对待测试软件进行模糊测试;
发送模块,用于通过预设消息重放函数向所述待测试软件发送打开文件的目标消息,其中,所述目标消息包括:按钮ID和WM_COMMAND消息;
监测模块,用于监测所述待测试软件的目标运行状态;其中,所述目标运行状态表示所述待测试软件基于所述目标消息读取并解析所述畸形文件时的运行状态;所述待测试软件预先将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码,且所述自定义代码中预设了所述畸形文件的存储路径。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
捕获模块,用于捕获所述待测试软件基于用户的选择指令确定的打开文件的按钮ID和WM_COMMAND消息;
封装模块,用于将所述按钮ID和所述WM_COMMAND消息进行封装,得到所述预设消息重放函数。
8.一种模糊测试装置,其特征在于,应用于待测试软件,所述装置包括:
转换模块,用于将操作系统提供的GetOpenFileName函数的原始代码转换为自定义代码;其中,所述自定义代码中预设了模糊测试所使用的畸形文件的存储路径;
接收模块,用于接收模糊测试工具重放的打开文件的目标消息;其中,所述目标消息包括:按钮ID和WM_COMMAND消息;
调用模块,用于基于所述目标消息调用所述自定义代码以获取所述畸形文件的存储路径;
读取解析模块,用于读取并解析所述畸形文件的存储路径下的畸形文件,并将运行状态反馈至所述模糊测试工具。
9.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至5中任一项所述的方法的步骤。
10.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110463973.9A CN112948276A (zh) | 2021-04-27 | 2021-04-27 | 模糊测试方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110463973.9A CN112948276A (zh) | 2021-04-27 | 2021-04-27 | 模糊测试方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112948276A true CN112948276A (zh) | 2021-06-11 |
Family
ID=76233543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110463973.9A Pending CN112948276A (zh) | 2021-04-27 | 2021-04-27 | 模糊测试方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948276A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535554A (zh) * | 2021-07-12 | 2021-10-22 | 青岛中科英泰商用系统股份有限公司 | 一种Android系统设备的自动测试系统及其方法 |
-
2021
- 2021-04-27 CN CN202110463973.9A patent/CN112948276A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535554A (zh) * | 2021-07-12 | 2021-10-22 | 青岛中科英泰商用系统股份有限公司 | 一种Android系统设备的自动测试系统及其方法 |
CN113535554B (zh) * | 2021-07-12 | 2024-03-12 | 青岛中科英泰商用系统股份有限公司 | 一种Android系统设备的自动测试系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105787364B (zh) | 任务的自动化测试方法、装置及系统 | |
CN111104315A (zh) | 一种测试脚本生成方法及装置、计算机可读存储介质 | |
CN105589805B (zh) | 一种代码覆盖率报告的生成方法和装置 | |
CN107729255B (zh) | 软件测试方法、装置及系统 | |
CN108121633B (zh) | 异常捕获方法及装置 | |
US20150317232A1 (en) | Method And Apparatus For Positioning Crash | |
CN111258913A (zh) | 算法自动测试方法、装置、计算机系统及可读存储介质 | |
CN111124911A (zh) | 一种自动化测试方法、装置、设备及可读存储介质 | |
CN114064208A (zh) | 检测应用服务状态的方法、装置、电子设备及存储介质 | |
CN110399275B (zh) | 异常展示方法及装置 | |
CN112948276A (zh) | 模糊测试方法、装置和电子设备 | |
CN113849330A (zh) | 一种监测、分析应用故障原因的方法、设备及存储介质 | |
CN107590389B (zh) | 安全性测试方法及装置、电子设备、计算机存储介质 | |
CN113238935A (zh) | 应用测试方法、系统、设备、介质及计算机程序产品 | |
CN117493188A (zh) | 接口测试方法及装置、电子设备及存储介质 | |
CN109992511B (zh) | 获取代码测试覆盖率的装置及方法 | |
CN111708712A (zh) | 用户行为测试用例的生成方法、流量回放方法及电子设备 | |
CN109086185B (zh) | 一种存储集群的故障检测方法、装置、设备及存储介质 | |
CN110688173A (zh) | 一种跨平台界面框架中组件的定位方法、装置及电子设备 | |
CN110990289A (zh) | 一种自动提交bug的方法、装置、电子设备及存储介质 | |
CN114500348B (zh) | 一种cdn网关测试方法及系统 | |
CN113535580B (zh) | 一种cts测试方法、装置及测试设备 | |
CN112596750B (zh) | 应用测试方法、装置、电子设备及计算机可读存储介质 | |
CN109309748B (zh) | 云手机硬件质量批量测试方法与系统 | |
CN109800170B (zh) | 一种基于api测试平台的测试方法,设备及可读存储介质 |
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 |