CN113139190A - 程序文件检测方法、装置、电子设备及存储介质 - Google Patents
程序文件检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113139190A CN113139190A CN202010054498.5A CN202010054498A CN113139190A CN 113139190 A CN113139190 A CN 113139190A CN 202010054498 A CN202010054498 A CN 202010054498A CN 113139190 A CN113139190 A CN 113139190A
- Authority
- CN
- China
- Prior art keywords
- code
- file
- detected
- program
- area code
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 66
- 230000006870 function Effects 0.000 claims abstract description 97
- 238000012360 testing method Methods 0.000 claims abstract description 88
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000004044 response Effects 0.000 claims description 4
- 230000035515 penetration Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000008676 import Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Abstract
本申请公开了一种程序文件检测方法、装置、电子设备及存储介质,属于代码检测技术领域。所述方法由计算机设备执行,所述方法包括:获取待检测程序文件的文件内容,待检测程序文件是超级文本预处理语言PHP文件;获取目标关键字,目标关键字是PHP中目标函数的函数名;根据目标关键字,获取第一区域代码与第二区域代码,第一区域代码是文件内容中包含目标关键词的区域代码,第二区域代码是测试载荷代码中包含目标关键词的区域代码;根据第一区域代码与第二区域代码,检测待检测程序文件。本申请可以对利用目标关键词的不同类型的程序漏洞进行检测,从而提高了对待检测程序文件检测的灵活性。
Description
技术领域
本申请实施例涉及代码检测技术领域,特别涉及一种程序文件检测方法、装置、电子设备及存储介质。
背景技术
随着科学技术的进步,人们在日常生活中使用计算机设备的频率越来越高,为防止计算机设备的程序文件包含有恶意程序而对计算机设备造成损失,这些程序文件的安全性一直备受人们关注。
目前,超文本预处理语言(Hypertext Preprocessor,PHP)已经成为互联网主要的开发语言之一。一般的计算机设备中会存在PHP文件,对于这些PHP文件进行程序漏洞检测的方式可以如下,计算机设备中可以设置有针对某个程序漏洞编写的一段检测代码,该检测代码在计算机设备中被包装为检测工具,从而实现在计算机设备中检测该程序漏洞。
对于上述计算机设备中设置有针对性的检测工具的方案,其检测的程序漏洞的种类较为单一,导致进行程序漏洞检测时的灵活性低的问题。
发明内容
本申请实施例提供了一种程序文件检测方法、装置、电子设备及存储介质,可以避免在终端中设置针对性的检测工具,提高计算机设备对程序漏洞检测的灵活性。所述技术方案如下:
一方面,本申请实施例提供了一种程序文件检测方法,所述方法由计算机设备执行,所述方法包括:
获取待检测程序文件的文件内容,所述待检测程序文件是超级文本预处理语言PHP文件;
获取目标关键字,所述目标关键字是PHP中目标函数的函数名;
根据所述目标关键字,获取第一区域代码与第二区域代码,所述第一区域代码是所述文件内容中包含所述目标关键词的区域代码,所述第二区域代码是测试载荷代码中包含所述目标关键词的区域代码;
根据所述第一区域代码与所述第二区域代码,检测所述待检测程序文件。
另一方面,本申请实施例提供了一种程序文件检测装置,所述装置用于计算机设备中,所述装置包括:
内容获取模块,用于获取待检测程序文件的文件内容,所述待检测程序文件是超级文本预处理语言PHP文件;
关键字获取模块,用于获取目标关键字,所述目标关键字是PHP中目标函数的函数名;
代码获取模块,用于根据所述目标关键字,获取第一区域代码与第二区域代码,所述第一区域代码是所述文件内容中包含所述目标关键词的区域代码,所述第二区域代码是测试载荷代码中包含所述目标关键词的区域代码;
文件检测模块,用于根据所述第一区域代码与所述第二区域代码,检测所述待检测程序文件。
另一方面,本申请实施例提供了一种电子设备,所述终端包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述一个方面所述的程序文件检测方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述一个方面的程序文件检测方法。
本申请实施例提供的技术方案可以至少包含如下有益效果:
通过计算机设备获取待检测程序文件的文件内容以及目标关键字,并根据目标关键字获取待检测程序文件的文件内容中包含该目标关键词的区域代码,以及根据该关键字获取测试载荷代码中包含该目标关键词的区域代码,通过获取到的待检测程序文件中的区域代码以及测试载荷代码中的区域代码检测待检测程序文件。当计算机设备需要对包含某个目标关键词的程序文件进行检测时,可以通过该目标关键词获取待检测程序文件中的区域代码以及测试载荷代码中的区域代码,进而对待检测程序文件进行检测,本申请可以对利用该目标关键词的不同类型的程序漏洞进行检测,从而提高了对待检测程序文件检测的灵活性。
附图说明
图1是本申请一示例性实施例提供的一种计算机设备的界面示意图;
图2是本申请一示例性实施例提供的一种程序文件检测方法的方法流程图;
图3是本申请一示例性实施例提供的一种程序文件检测方法的方法流程图;
图4是本申请一示例性实施例涉及的一种第一界面的界面示意图;
图5是本申请一示例性实施例涉及图4的一种第一界面的界面示意图;
图6是本申请一示例性实施例涉及图4的另一种第一界面的界面示意图;
图7是本申请一示例性实施例提供的程序文件检测装置的结构框图;
图8是本申请一示例性实施例提供的一种服务器的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请提供的方案,可以用于人们在日常生活中使用终端时,在终端中运行有应用程序的现实场景中,为了便于理解,下面首先对本申请实施例涉及的一些名词和应用场景进行简单介绍。
漏洞:漏洞是在硬件、软件、协议的实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。其中,程序漏洞可以是指软件程序中程序代码的实现上存在的缺陷。
序列化(Serialization):是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。之后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
反序列化:是序列化的逆过程。
随着科学技术的发展,越来越多的计算机设备出现在人们的日常生活中,人们可以通过计算机设备进行工作、娱乐、学习等。计算机设备中信息的安全性备受人们关注。其中,计算机设备的不安全隐患大都是由计算机设备中各种各样的漏洞导致的,因此,对计算机设备中的漏洞检测是必不可少的。
请参考图1,其示出了本申请一示例性实施例提供的一种计算机设备的界面示意图。如图1所示,其中包含了计算机设备110。
可选的,计算机设备110可以是平板电脑、电子书阅读器、智能眼镜、智能手表、笔记本电脑、膝上型便携计算机和台式计算机等等。
可选的,计算机设备110还可以是一台服务器,该服务器可以是一台服务器,或者由若干台服务器,或者是一个虚拟化平台,或者是一个云计算服务中心。
可选的,计算机设备110中可以展示开发工具界面,程序开发人员可以在该界面中编写代码,创建一个对象。可选的,该对象可以是一段程序代码。并将创建的对象在计算机设备中序列化、执行等。或者,计算机设备也可以将自身中包含的程序代码直接执行。
其中,计算机设备可以支持多种程序语言,比如,计算机设备可以支持Java语言、C语言、C++语言、PHP语言环境、Kotlin语言等。不同的程序语言可以编写不同的程序代码。
目前,为了提高计算机设备的安全性,计算机设备可以对自身的程序文件进行检测,检测各个程序文件是否存在程序漏洞。其中,大多数计算机设备在检测程序漏洞时,都会针对某种程序漏洞编写一段检测代码,并将其包装为检测工具,通过该检测工具对程序文件进行检测。
比如,在Java语言中,可以针对Java的反序列化漏洞CVE(CommonVulnerabilities&Exposures,公共漏洞和暴露),写出一个EXP(Exploit,漏洞利用),并将该EXP包装为检测工具,从而检测Java的反序列化漏洞CVE。对应不同种类的反序列化漏洞CVE,在计算机设备中也可以集成这些不同种类的反序列化漏洞CVE对应的EXP,共同包装为检测工具,便可以检测每个EXP针对性的反序列化漏洞。
其中,对于上述方案的检测,需要针对每种类型的程序漏洞编写一段检测代码,使得该检测代码只能检测该类型的程序漏洞,如果这种类型的程序漏洞在该计算机设备中被修复后,那么,该检测工具中针对该类型的程序漏洞的代码就不能使用,如果需要对其它类型的程序漏洞进行检测,则需要集成更多的检测工具,造成计算机设备中检测程序漏洞的方式单一,导致计算机设备进行程序漏洞检测时的灵活性低的问题。
为了提高计算机设备对程序漏洞检测的灵活性,本申请提供了一种程序文件检测方法,可以实现对不同类型的程序漏洞同时进行排查检测,使得计算机设备中检测程序漏洞的效率更高,更加灵活地检测程序漏洞。请参考图2,其示出了本申请一示例性实施例提供的一种程序文件检测方法的方法流程图。该方法可以用于图1所示的计算机设备中,由该计算机设备执行,如图2所示,该程序文件检测方法可以包括如下几个步骤。
步骤201,获取待检测程序文件的文件内容,待检测程序文件是超级文本预处理语言PHP文件。
即,待检测程序文件是通过PHP语言编写的PHP文件。可选的,计算机设备可以通过读取待检测程序文件的文件内容,从而获取到该待检测程序文件的文件内容。
步骤202,获取目标关键字,目标关键字是PHP中目标函数的函数名。
即,计算机设备可以获取到此次需要检测的目标函数的函数名,将目标函数的函数名作为目标关键字。
步骤203,根据目标关键字,获取第一区域代码与第二区域代码,第一区域代码是文件内容中包含目标关键词的区域代码,第二区域代码是测试载荷代码中包含目标关键词的区域代码。
其中,测试载荷代码可以是用于检测待检测程序文件的程序代码。可选的,测试载荷代码没有程序漏洞。计算机设备可以通过目标关键字,从待检测程序文件的文件内容获取包含目标关键词的区域代码。计算机设备还可以从测试载荷代码中获取包含目标关键词的区域代码。可选的,测试载荷代码可以预先由开发人员编写后存储在计算机设备中。
步骤204,根据第一区域代码与第二区域代码,检测待检测程序文件。
其中,计算机设备可以根据获取到的第一区域代码和第二区域代码来检测待检测程序文件,从而判断该待检测程序文件是否具有程序漏洞。
综上所述,通过计算机设备获取待检测程序文件的文件内容以及目标关键字,并根据目标关键字获取待检测程序文件的文件内容中包含该目标关键词的区域代码,以及根据该关键字获取测试载荷代码中包含该目标关键词的区域代码,通过获取到的待检测程序文件中的区域代码以及测试载荷代码中的区域代码检测待检测程序文件。当计算机设备需要对包含某个目标关键词的程序文件进行检测时,可以通过该目标关键词获取待检测程序文件中的区域代码以及测试载荷代码中的区域代码,进而对待检测程序文件进行检测,本申请可以对利用该目标关键词的不同类型的程序漏洞进行检测,从而提高了对待检测程序文件检测的灵活性。
在一种可能实现的方式中,计算机设备可以展示有第一界面,该第一界面可以用于导入待检测程序文件,以计算机设备通过在第一界面中导入待检测程序文件为例,对上述方法实施例进行举例介绍。
请参考图3,其示出了本申请一示例性实施例提供的一种程序文件检测方法的方法流程图。该方法可以用于图1所示的计算机设备中,由该计算机设备执行,如图3所示,该程序文件检测方法可以包括如下几个步骤。
步骤301,展示第一界面。
可选的,该第一界面可以是计算机设备运行程序检测应用时展示的程序应用界面。
其中,第一界面中可以包含导入控件,计算机设备可以通过第一界面中的导入控件来导入待检测程序文件。请参考图4,其示出了本申请一示例性实施例涉及的一种第一界面的界面示意图。如图4所示,在第一界面400中包含了导入控件401,用户可以通过触发导入控件401,在第一界面400中显示待测路径的选择子界面。
步骤302,接收第一界面中选择的待测路径。
可选的,用户可以在第一界面中选择待测路径,从而使得计算机设备接收到待测路径。
请参考图5,其示出了本申请一示例性实施例涉及图4的一种第一界面的界面示意图,如图5所示,在第一界面500中包含有路径选择子界面501,确认控件502,取消控件503,用户可以在该路径选择子界面501中选择待测路径,并点击确认控件502,使得计算机设备接收到用户选择的待测路径。
步骤303,将待测路径下包含的各个PHP文件获取为各个待检测程序文件。
可选的,计算机设备可以将该待测路径下包含的各个PHP文件都获取为待检测程序文件。比如,待检测路径是C:/User:/文件一,计算机设备可以将文件一中的各个PHP文件都获取为待检测程序文件。
在一种可能实现的方式中,计算机设备可以判断待测路径的最后一个文件是文件夹名称还是文件名称,如果是文件名称,计算机设备将该文件名称对应的文件获取为待检测程序文件,如果是文件夹名称,计算机设备可以按照递归追层的方式将该文件夹下的各个PHP文件的文件路径进行提取,并获取各个文件路径下的文件。
比如,如果待检测路径是C:/User:/文件一.php,计算机设备可以根据文件一的后缀,判断出文件一是文件名称,计算机设备将文件一获取为待检测程序文件。如果待检测路径是C:/User:/文件一,计算机设备可以根据文件一的后缀,判断出文件一是文件夹名称,计算机设备提取文件一中包含的各个PHP文件的路径,并将提取的各个路径下的PHP文件获取为待检测程序文件。可选的,计算机设备判断待测路径的最后一个文件是文件夹名称还是文件名称时,也可以通过待检测路径中最后一个文件的文件类型进行判断,本申请实施例对此并不加以限定。
步骤304,获取各个待检测程序文件的文件内容。
可选的,计算机设备可以读取各个待检测程序文件的文件内容,从而获取到每个待检测程序文件的文件内容。
步骤305,获取目标关键字,目标关键字是PHP中目标函数的函数名。
其中,目标函数可以是开发人员需要检测的程序漏洞中可能使用到的函数。比如,某个程序漏洞可能利用函数一和函数二的调用,将自身携带在对应的程序代码中,此时,开发人员可以将函数一和函数二作为目标关键字来检测该程序漏洞。
在一种可能实现的方式中,第一界面中还可以支持对关键字进行选择的关键字选择子界面,计算机设备可以响应于第一界面中的关键字选择操作,获取目标关键字。可选的,该关键字选择子界面的展示方式可以与图5中路径选择子界面501的展示方式相同,此处不再赘述。
请参考图6,其示出了本申请一示例性实施例涉及图4的另一种第一界面的界面示意图,如图6所示,在第一界面600中包含有关键字选择子界面601,用户可以在该关键字选择子界面601中选择各个关键字,计算机设备可以响应于关键字选择子界面601中的选择操作,将用户选中的各个关键字获取为目标关键字。
可选的,在PHP语言中,开发人员可以调用不同的函数来实现不同的功能,其中,以执行序列化和反序列化的功能为例,需要使用PHP语言中的两个函数serialize()和unserialize(),其中,serialize()函数对应序列化,和unserialize()函数对应反序列化。比如,在PHP中创建了一个对象后,可以通过调用serialize()函数把这个对象转变成一个字符串,保存对象的值方便之后的传递与使用,从而实现序列化。与serialize()相对应,还可以通过调用unserialize()函数,从序列化后的结果中恢复对象,从而实现反序列化。
其中,在序列化过程或者反序列化的实现过程中,计算机设备还会自动使用PHP中的魔术方法(Magic function),采用该方法中不同的魔法函数。其中,魔法函数一般是以下划线开始,比如:__construct()函数、__toString()函数、__sleep()函数、__destruct()函数、__wakeup()函数等。这些函数都是在序列化过程或者反序列化过程中自动调用的,开发人员并不知道。比如,当一个对象创建时,__construct()函数会被调用;当一个对象被当作一个字符串使用时,__toString()函数会被调用;在对象在被序列化之前运行时,__sleep()函数会被调用;当一个对象销毁时,__destruct()函数被调用;当将在序列化之后立即使用时,__wakeup()函数被调用。
可选的,上述目标关键字可以是PHP中各个函数的函数名,比如,该目标关键字可以是unserialize()函数,serialize()函数,__construct()函数,__toString()函数,__sleep()函数,__destruct()函数,__wakeup()函数等。即,目标函数可以是这些函数中的任意一个函数。
步骤306,根据目标关键字,获取第一区域代码与第二区域代码,第一区域代码是文件内容中包含目标关键词的区域代码,第二区域代码是测试载荷代码中包含目标关键词的区域代码。
可选的,计算机设备获取到目标关键字后,可以根据目标关键字,在上述获取到的文件内容中搜索文件内容中包含目标关键词的区域代码,将该段代码作为第一区域代码。计算机设备还可以根据目标关键字,在测试载荷代码中搜索测试载荷代码包含目标关键词的区域代码,将该段代码作为第二区域代码。
比如,上述目标关键字为unserialize()函数,计算机设备可以根据该目标关键字在获取到的文件内容中查找对应unserialize()函数的区域代码,将文件内容中的区域代码作为第一区域代码,从测试载荷代码中查找对应unserialize()函数的区域代码,将测试载荷代码中的区域代码作为第二区域代码。
步骤307,根据第一区域代码与第二区域代码,获取目标测试代码,目标测试代码是第一区域代码中包含的与第二区域代码不同的代码。
其中,计算机设备可以将第一区域代码和第二区域代码进行比对,从第一区域代码中获取目标测试代码。
在一种可能实现的方式中,计算机设备可以检测第一区域代码与第二区域代码的语言逻辑,当第一区域代码与第二区域代码的语言逻辑不同时,获取目标测试代码。即,计算机设备可以将第一区域代码中包含的与第二区域代码中语言逻辑不同的部分获取为目标测试代码。比如,第一区域代码中调用目标函数时,PHP代码编写的方式与第二区域代码中调用目标函数的PHP代码编写方式不同,那么,计算机设备可以将此处第一区域代码中语言逻辑不同的区域代码获取为目标检测代码。
在一种可能实现的方式中,计算机设备可以检测第一区域代码与第二区域代码的实现功能,当第一区域代码与第二区域代码的实现功能不同时,获取目标测试代码。即,计算机设备可以将第一区域代码中包含的与第二区域代码中功能不同的部分获取为目标测试代码。比如,第一区域代码中通过调用目标函数后,可以实现功能一,而在第二区域代码中并未出现调用目标函数有实现功能一的区域代码,那么,计算机设备可以将第一区域代码中通过调用目标函数后实现功能一的区域代码获取为目标检测代码。可选的,在第二区域代码中如果出现调用目标函数实现其它功能的区域代码时,那么,计算机设备也可以将第一区域代码中通过调用目标函数后实现功能一的区域代码获取为目标检测代码。
在一种可能实现的方式中,计算机设备可以检测第一区域代码与第二区域代码的语言逻辑,并检测第一区域代码与第二区域代码的实现功能,当第一区域代码与第二区域代码的语言逻辑不同,且第一区域代码与第二区域代码的实现功能不同时,获取目标测试代码。即,计算机设备可以将第一区域代码中包含的与第二区域代码中功能不同且语言逻辑也不同的部分获取为目标测试代码。比如,计算机设备还可以将第一区域代码中通过调用目标函数后,可以实现功能一,而在第二区域代码中调用目标函数可以实现功能二,且两者调用目标函数的语言逻辑也不同,那么,计算机设备可以将第一区域代码中通过调用目标函数后实现功能一的区域代码获取为目标检测代码。
步骤308,当获取到目标测试代码时,通过预设测试方式运行第一区域代码,获得检测结果。
当计算机设备通过上述步骤获取到了目标测试代码,说明待检测程序文件中的文件内容包含有可能存在程序漏洞,需要对该待检测程序文件的文件内容进行程序漏洞的检测。可选的,此处的预设测试方式可以是白盒测试,黑盒测试以及渗透测试中的任意一种或多种。可选的,该检测结果可以指示待检测程序文件中是否存在程序漏洞。
在一种可能实现的方式中,计算机设备还可以将检测结果显示给用户,从而使得用户看到待检测程序文件中存在程序漏洞的代码。比如,计算机设备可以将待检测程序文件的文件内容展示的工作界面中,并通过不同颜色指示其中存在程序漏洞的文件内容。例如,将存在程序漏洞的文件内容通过红色表示,不存在程序漏洞的文件内容通过黑色表示等。
在一种可能实现的方式中,本步骤中,当计算机设备获取到目标测试代码时,计算机设备也可能直接确定该待检测程序文件存在程序漏洞。即,与测试载荷代码中存在不同的代码时,都认为是存在程序漏洞的。
步骤309,当检测结果指示待检测程序文件未存在程序漏洞时,将第一区域代码添加至测试载荷代码中。
可选的,当某个待检测程序文件的检测结果指示其未存在程序漏洞,且该待检测程序文件中目标函数的语言逻辑与测试载荷代码中目标函数的语言逻辑不同,计算机设备还可以将之前获取的待检测程序文件中的第一区域代码添加在测试载荷代码中。
在一种可能实现的方式中,计算机设备还可以展示测试载荷代码的编写界面;响应于编写界面中PHP代码的添加操作,将编写的PHP代码添加至测试载荷代码中。即,计算机设备可以提供有测试载荷代码的编写界面,用户可以通过自定义编写测试载荷代码,在计算机设备中添加测试载荷代码。
综上所述,通过计算机设备获取待检测程序文件的文件内容以及目标关键字,并根据目标关键字获取待检测程序文件的文件内容中包含该目标关键词的区域代码,以及根据该关键字获取测试载荷代码中包含该目标关键词的区域代码,通过获取到的待检测程序文件中的区域代码以及测试载荷代码中的区域代码检测待检测程序文件。当计算机设备需要对包含某个目标关键词的程序文件进行检测时,可以通过该目标关键词获取待检测程序文件中的区域代码以及测试载荷代码中的区域代码,进而对待检测程序文件进行检测,本申请可以对利用该目标关键词的不同类型的程序漏洞进行检测,从而提高了对待检测程序文件检测的灵活性。
另外,本申请实施例中还可以在测试载荷代码中进行编辑,或者主动将未存在程序漏洞的区域代码添加至测试载荷代码中,可以实现在测试载荷代码中添加新的内容,方便程序漏洞的检测。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图7,其示出了本申请一示例性实施例提供的程序文件检测装置的结构框图。该程序文件检测装置可以用于计算机设备中,以执行图2或者图3所示实施例提供的方法中由计算机设备执行的全部或者部分步骤。该程序文件检测装置可以包括:内容获取模块701,关键字获取模块702,代码获取模块703以及文件检测模块704;
所述内容获取模块701,用于获取待检测程序文件的文件内容,所述待检测程序文件是超级文本预处理语言PHP文件;
所述关键字获取模块702,用于获取目标关键字,所述目标关键字是PHP中目标函数的函数名;
所述代码获取模块703,用于根据所述目标关键字,获取第一区域代码与第二区域代码,所述第一区域代码是所述文件内容中包含所述目标关键词的区域代码,所述第二区域代码是测试载荷代码中包含所述目标关键词的区域代码;
所述文件检测模块704,用于根据所述第一区域代码与所述第二区域代码,检测所述待检测程序文件。
综上所述,通过计算机设备获取待检测程序文件的文件内容以及目标关键字,并根据目标关键字获取待检测程序文件的文件内容中包含该目标关键词的区域代码,以及根据该关键字获取测试载荷代码中包含该目标关键词的区域代码,通过获取到的待检测程序文件中的区域代码以及测试载荷代码中的区域代码检测待检测程序文件。当计算机设备需要对包含某个目标关键词的程序文件进行检测时,可以通过该目标关键词获取待检测程序文件中的区域代码以及测试载荷代码中的区域代码,进而对待检测程序文件进行检测,本申请可以对利用该目标关键词的不同类型的程序漏洞进行检测,从而提高了对待检测程序文件检测的灵活性。
可选的,所述文件检测模块704,包括:第一获取单元和结果获得单元;
所述第一获取单元,用于根据所述第一区域代码与所述第二区域代码,获取目标测试代码,所述目标测试代码是所述第一区域代码中包含的与所述第二区域代码不同的代码;
所述结果获得单元,用于当获取到目标测试代码时,通过预设测试方式运行所述第一区域代码,获得检测结果。
可选的,所述第一获取单元,包括:第一获取子单元或者第二获取子单元或者第三获取子单元;
所述第一获取子单元,用于检测所述第一区域代码与所述第二区域代码的语言逻辑,当所述第一区域代码与所述第二区域代码的语言逻辑不同时,获取所述目标测试代码;
所述第二获取子单元,用于检测所述第一区域代码与所述第二区域代码的实现功能,当所述第一区域代码与所述第二区域代码的实现功能不同时,获取所述目标测试代码;
所述第三获取子单元,用于检测所述第一区域代码与所述第二区域代码的语言逻辑,并检测所述第一区域代码与所述第二区域代码的实现功能,当所述第一区域代码与所述第二区域代码的语言逻辑不同,且所述第一区域代码与所述第二区域代码的实现功能不同时,获取所述目标测试代码。
可选的,所述装置还包括:
第一添加模块,用于当所述检测结果指示所述待检测程序文件未存在漏洞时,将所述第一区域代码添加至所述测试载荷代码中。
可选的,所述预设测试方式包括白盒测试,黑盒测试以及渗透测试中的任意一种。
可选的,所述装置还包括:
第一展示模块,用于展示第一界面;
路径接收模块,用于接收所述第一界面中选择的待测路径;
文件获取模块,用于将所述待测路径下包含的各个PHP文件获取为各个所述待检测程序文件;
所述内容获取模块701,用于获取各个所述待检测程序文件的文件内容。
可选的,所述装置还包括:
第二展示模块,用于展示所述测试载荷代码的编写界面;
第二添加模块,用于响应于所述编写界面中PHP代码的添加操作,将编写的PHP代码添加至所述测试载荷代码中。
图8是本申请一示例性实施例提供的一种服务器的结构示意图。如图8所示,服务器800包括中央处理单元(Central Processing Unit,CPU)801、包括随机存取存储器(Random Access Memory,RAM)802和只读存储器(Read Only Memory,ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述计算机设备800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(Input/OutputSystem,I/O系统)808,和用于存储操作系统812、应用程序813和其他程序模块814的大容量存储设备807。
所述基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为计算机设备800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,带电可擦可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
计算机设备800可以通过连接在所述系统总线805上的网络接口单元811连接到互联网或者其它网络设备。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理单元801通过执行该一个或一个以上程序来实现本申请上述各个实施例提供的方法中,由服务器执行的全部或者部分步骤。
本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上各个实施例所述的程序文件检测方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的程序文件检测方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读存储介质中或者作为计算机可读存储介质上的一个或多个指令或代码进行传输。计算机可读存储介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种程序文件检测方法,其特征在于,所述方法由计算机设备执行,所述方法包括:
获取待检测程序文件的文件内容,所述待检测程序文件是超级文本预处理语言PHP文件;
获取目标关键字,所述目标关键字是PHP中目标函数的函数名;
根据所述目标关键字,获取第一区域代码与第二区域代码,所述第一区域代码是所述文件内容中包含所述目标关键词的区域代码,所述第二区域代码是测试载荷代码中包含所述目标关键词的区域代码;
根据所述第一区域代码与所述第二区域代码,检测所述待检测程序文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一区域代码与所述第二区域代码,检测所述待检测程序文件,包括:
根据所述第一区域代码与所述第二区域代码,获取目标测试代码,所述目标测试代码是所述第一区域代码中包含的与所述第二区域代码不同的代码;
当获取到目标测试代码时,通过预设测试方式运行所述第一区域代码,获得检测结果。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一区域代码与所述第二区域代码,获取目标测试代码,包括:
检测所述第一区域代码与所述第二区域代码的语言逻辑,当所述第一区域代码与所述第二区域代码的语言逻辑不同时,获取所述目标测试代码;或者,
检测所述第一区域代码与所述第二区域代码的实现功能,当所述第一区域代码与所述第二区域代码的实现功能不同时,获取所述目标测试代码;或者,
检测所述第一区域代码与所述第二区域代码的语言逻辑,并检测所述第一区域代码与所述第二区域代码的实现功能,当所述第一区域代码与所述第二区域代码的语言逻辑不同,且所述第一区域代码与所述第二区域代码的实现功能不同时,获取所述目标测试代码。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述检测结果指示所述待检测程序文件未存在程序漏洞时,将所述第一区域代码添加至所述测试载荷代码中。
5.根据权利要求2所述的方法,其特征在于,所述预设测试方式包括白盒测试,黑盒测试以及渗透测试中的任意一种。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
展示第一界面;
接收所述第一界面中选择的待测路径;
将所述待测路径下包含的各个PHP文件获取为各个所述待检测程序文件;
所述获取待检测程序文件的文件内容,包括:
获取各个所述待检测程序文件的文件内容。
7.根据权利要求1至6任一所述的方法,其特征在于,所述方法还包括:
展示所述测试载荷代码的编写界面;
响应于所述编写界面中PHP代码的添加操作,将编写的PHP代码添加至所述测试载荷代码中。
8.一种程序文件检测装置,其特征在于,所述装置用于计算机设备中,所述装置包括:
内容获取模块,用于获取待检测程序文件的文件内容,所述待检测程序文件是超级文本预处理语言PHP文件;
关键字获取模块,用于获取目标关键字,所述目标关键字是PHP中目标函数的函数名;
代码获取模块,用于根据所述目标关键字,获取第一区域代码与第二区域代码,所述第一区域代码是所述文件内容中包含所述目标关键词的区域代码,所述第二区域代码是测试载荷代码中包含所述目标关键词的区域代码;
文件检测模块,用于根据所述第一区域代码与所述第二区域代码,检测所述待检测程序文件。
9.一种电子设备,其特征在于,所述电子设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的程序文件检测方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至7任一所述的程序文件检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010054498.5A CN113139190A (zh) | 2020-01-17 | 2020-01-17 | 程序文件检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010054498.5A CN113139190A (zh) | 2020-01-17 | 2020-01-17 | 程序文件检测方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113139190A true CN113139190A (zh) | 2021-07-20 |
Family
ID=76808540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010054498.5A Pending CN113139190A (zh) | 2020-01-17 | 2020-01-17 | 程序文件检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113139190A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115577363A (zh) * | 2022-09-15 | 2023-01-06 | 华北电力科学研究院有限责任公司 | 恶意代码反序列化利用链的检测方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502896A (zh) * | 2016-10-21 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种函数测试代码的生成方法及装置 |
CN107038380A (zh) * | 2017-04-14 | 2017-08-11 | 华中科技大学 | 一种基于程序特征树的漏洞检测方法及系统 |
CN107944278A (zh) * | 2017-12-11 | 2018-04-20 | 北京奇虎科技有限公司 | 一种内核漏洞检测方法及装置 |
CN108459954A (zh) * | 2017-02-22 | 2018-08-28 | 腾讯科技(深圳)有限公司 | 应用程序漏洞检测方法和装置 |
CN108763928A (zh) * | 2018-05-03 | 2018-11-06 | 北京邮电大学 | 一种开源软件漏洞分析方法、装置和存储介质 |
CN109635569A (zh) * | 2018-12-10 | 2019-04-16 | 国家电网有限公司信息通信分公司 | 一种漏洞检测方法及装置 |
CN110221968A (zh) * | 2019-05-20 | 2019-09-10 | 平安普惠企业管理有限公司 | 软件测试方法及相关产品 |
-
2020
- 2020-01-17 CN CN202010054498.5A patent/CN113139190A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502896A (zh) * | 2016-10-21 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种函数测试代码的生成方法及装置 |
CN108459954A (zh) * | 2017-02-22 | 2018-08-28 | 腾讯科技(深圳)有限公司 | 应用程序漏洞检测方法和装置 |
CN107038380A (zh) * | 2017-04-14 | 2017-08-11 | 华中科技大学 | 一种基于程序特征树的漏洞检测方法及系统 |
CN107944278A (zh) * | 2017-12-11 | 2018-04-20 | 北京奇虎科技有限公司 | 一种内核漏洞检测方法及装置 |
CN108763928A (zh) * | 2018-05-03 | 2018-11-06 | 北京邮电大学 | 一种开源软件漏洞分析方法、装置和存储介质 |
CN109635569A (zh) * | 2018-12-10 | 2019-04-16 | 国家电网有限公司信息通信分公司 | 一种漏洞检测方法及装置 |
CN110221968A (zh) * | 2019-05-20 | 2019-09-10 | 平安普惠企业管理有限公司 | 软件测试方法及相关产品 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115577363A (zh) * | 2022-09-15 | 2023-01-06 | 华北电力科学研究院有限责任公司 | 恶意代码反序列化利用链的检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8627296B1 (en) | Unified unit and integration test with automatic mock creation | |
Ligh et al. | The art of memory forensics: detecting malware and threats in windows, linux, and Mac memory | |
US8499352B2 (en) | Obfuscated malware detection | |
CN105068932B (zh) | 一种Android应用程序加壳的检测方法 | |
TWI575397B (zh) | 利用運行期代理器及動態安全分析之應用程式逐點保護技術 | |
US9177136B2 (en) | Information device, program, method, and computer readable recording medium for preventing execution of malicious program code | |
Lin et al. | Automated forensic analysis of mobile applications on Android devices | |
US10599558B1 (en) | System and method for identifying inputs to trigger software bugs | |
US10078510B1 (en) | Late-stage software feature reduction tool for security and performance | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN104346148A (zh) | 获取程序性能消耗信息的方法、装置及系统 | |
CN109388946A (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
US10275595B2 (en) | System and method for characterizing malware | |
CN111753302A (zh) | 检测代码漏洞的方法、装置、计算机可读介质及电子设备 | |
US11868465B2 (en) | Binary image stack cookie protection | |
US20190005226A1 (en) | Automatic unpacking of executables | |
CN108228312A (zh) | 通过解释器执行代码的系统和方法 | |
CN113139190A (zh) | 程序文件检测方法、装置、电子设备及存储介质 | |
JP6018344B2 (ja) | 動的読み込みコード解析装置、動的読み込みコード解析方法及び動的読み込みコード解析プログラム | |
CN113805861B (zh) | 基于机器学习的代码生成方法、代码编辑系统及存储介质 | |
CN115794583A (zh) | 一种内核分析方法及装置 | |
CN114880667A (zh) | 一种脚本检测方法及装置 | |
CN113935847A (zh) | 线上流程的风险处理方法、装置、服务器及介质 | |
KR102549124B1 (ko) | 난독화 된 vbscript를 탐지하고 복호화하기 위한 방법 및 이를 위한 장치 | |
CN111984944B (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 |