CN116881173B - 接口参数的检测方法、装置、电子设备和计算机可读介质 - Google Patents

接口参数的检测方法、装置、电子设备和计算机可读介质 Download PDF

Info

Publication number
CN116881173B
CN116881173B CN202311141412.2A CN202311141412A CN116881173B CN 116881173 B CN116881173 B CN 116881173B CN 202311141412 A CN202311141412 A CN 202311141412A CN 116881173 B CN116881173 B CN 116881173B
Authority
CN
China
Prior art keywords
information
parameter
program
determining
program interface
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
CN202311141412.2A
Other languages
English (en)
Other versions
CN116881173A (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.)
State Grid Siji Network Security Beijing Co ltd
State Grid Information and Telecommunication Co Ltd
Original Assignee
State Grid Siji Network Security Beijing Co ltd
State Grid Information and Telecommunication 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 State Grid Siji Network Security Beijing Co ltd, State Grid Information and Telecommunication Co Ltd filed Critical State Grid Siji Network Security Beijing Co ltd
Priority to CN202311141412.2A priority Critical patent/CN116881173B/zh
Publication of CN116881173A publication Critical patent/CN116881173A/zh
Application granted granted Critical
Publication of CN116881173B publication Critical patent/CN116881173B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3688Test management for test execution, e.g. scheduling of test suites
    • 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/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本公开的实施例公开了接口参数的检测方法、装置、电子设备和计算机可读介质。该方法的一具体实施方式包括:获取待参数检测程序对应的内存权限;确定待参数检测程序对应的动态库基地址;确定目标操作对象信息;确定待参数检测类信息集合;对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:确定程序接口信息组;确定接口参数信息;对接口参数信息进行异常参数检测,以生成检测结果信息;生成参数异常提示信息。该实施方式避免了恶意程序参数对计算机程序产生污染和损坏的问题,提高了程序运行安全性。

Description

接口参数的检测方法、装置、电子设备和计算机可读介质
技术领域
本公开的实施例涉及计算机技术领域,具体涉及接口参数的检测方法、装置、电子设备和计算机可读介质。
背景技术
随着互联网相关技术的发展,应用程序服务化已成为一种趋势,随之产生的是大量的访问请求流量。目前,在进行恶意程序参数识别时,通常采用的方式往往是针对访问请求流量层面的异常检测。
然而,发明人发现,当采用上述方式时,经常会存在如下技术问题:
第一,访问请求在传输过程中往往处于加密状态,使得无法对访问请求所携带的程序参数进行异常检测,而恶意程序参数可能会对计算机程序产生污染和损坏,影响程序运行安全性;
第二,访问请求所对应的程序接口的字节码往往对应不同的操作权限、采用单一的方式通过字节码进行程序参数获取,可能无法有效地获取程序参数,使得无法进行针对程序参数的异常检测,导致当程序参数为恶意程序参数时,可能影响程序运行安全性;
第三,由于恶意程序参数对应的攻击方式往往不同,因此导致恶意程序参数的参数形式往往存在差异,采用单一的恶意程序参数确定方式,难以有效地对恶意程序参数进行识别,导致程序运行安全性较差。
该背景技术部分中所公开的以上信息仅用于增强对本发明构思的背景的理解,并因此,其可包含并不形成本国的本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的内容部分用于以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。本公开的内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
本公开的一些实施例提出了接口参数的检测方法、装置、电子设备和计算机可读介质,来解决以上背景技术部分提到的技术问题中的一项或多项。
第一方面,本公开的一些实施例提供了一种接口参数的检测方法,该方法包括:根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限,其中,上述待参数检测程序包括用于对数据库内数据进行修改的程序;响应于得到上述内存权限,确定上述待参数检测程序对应的动态库基地址;根据上述动态库基地址,确定目标操作对象信息;根据上述目标操作对象信息,确定待参数检测类信息集合;对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:确定上述待参数检测类信息对应的程序接口信息组;对于上述程序接口信息组中的每个程序接口信息,确定上述程序接口信息对应的接口参数信息;对接口参数信息进行异常参数检测,以生成检测结果信息;响应于确定上述检测结果信息表征参数异常,生成参数异常提示信息。
第二方面,本公开的一些实施例提供了一种接口参数的检测装置,装置包括:获取单元,被配置成根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限,其中,上述待参数检测程序包括用于对数据库内数据进行修改的程序;第一确定单元,被配置成响应于得到上述内存权限,确定上述待参数检测程序对应的动态库基地址;第二确定单元,被配置成根据上述动态库基地址,确定目标操作对象信息;第三确定单元,被配置成根据上述目标操作对象信息,确定待参数检测类信息集合;执行单元,被配置成对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:确定上述待参数检测类信息对应的程序接口信息组;对于上述程序接口信息组中的每个程序接口信息,确定上述程序接口信息对应的接口参数信息;对接口参数信息进行异常参数检测,以生成检测结果信息;响应于确定上述检测结果信息表征参数异常,生成参数异常提示信息。
第三方面,本公开的一些实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述第一方面任一实现方式所描述的方法。
第四方面,本公开的一些实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现上述第一方面任一实现方式所描述的方法。
本公开的上述各个实施例具有如下有益效果:通过本公开的一些实施例的接口参数的检测方法,避免了因恶意程序参数所可能造成的针对计算机程序的污染和损坏,以此提高了程序运行安全性。具体来说,造成计算机程序安全性较低的原因在于:访问请求在传输过程中往往处于加密状态,使得无法对访问请求所携带的程序参数进行异常检测,而恶意程序参数可能会对计算机程序产生污染和损坏,影响程序运行安全性。实践中,存在侵入性的异常参数可能会对计算机程序造成污染。此外,病毒类型的异常参数也可能会造成计算机程序的损坏,因此,影响了程序运行安全性。基于此,本公开的一些实施例的接口参数的检测方法,首先,根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限,其中,上述待参数检测程序包括用于对数据库内数据进行修改的程序。实践中,针对待参数检测程序的异常参数检测,往往需要将待参数检测程序读入内存中,而不同的内存区域往往对应不同的访问权限,因此,在对待参数检测程序进行参数检测前,需要获取对应的内存权限。其次,响应于得到上述内存权限,确定上述待参数检测程序对应的动态库基地址。实践中,动态库往往加载有程序运行时所需的代码和数据,因此通过确定动态库基地址,可以实现对动态库中代码和数据的访问。接着,根据上述动态库基地址,确定目标操作对象信息。除此之外,根据上述目标操作对象信息,确定待参数检测类信息集合。实践中,针对面向对象编程,类为重要的、且常用的数据结构,通过得到待参数检测类信息,可以以类为中介实现对类中包含的函数的参数检测。最后,对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:第一步,确定上述待参数检测类信息对应的程序接口信息组。实践中,对程序的污染和损坏往往以程序接口为入口,因此,确定程序接口信息可以定位待参数检测的程序接口。第二步,对于上述程序接口信息组中的每个程序接口信息,确定上述程序接口信息对应的接口参数信息。以此得到待检测的接口参数。第三步,对接口参数信息进行异常参数检测,以生成检测结果信息。通过异常参数检测,以此可以判断是否存在恶意程序参数。第四步,响应于确定上述检测结果信息表征参数异常,生成参数异常提示信息。通过此种方式,避免了因访问请求在传输过程中往往处于加密状态,使得无法对访问请求所携带的程序参数进行异常检测的问题。由此,实现了对恶意程序参数的有效识别,避免了恶意程序参数对计算机程序产生污染和损坏的问题,以及提高了程序运行安全性。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
图1是根据本公开的接口参数的检测方法的一些实施例的流程图;
图2是根据本公开的接口参数的检测装置的一些实施例的结构示意图;
图3是适于用来实现本公开的一些实施例的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
下面将参考附图并结合实施例来详细说明本公开。
参考图1,示出了根据本公开的接口参数的检测方法的一些实施例的流程100。该接口参数的检测方法,包括以下步骤:
步骤101,根据待参数检测程序的程序句柄信息,获取待参数检测程序对应的内存权限。
在一些实施例中,接口参数的检测方法的执行主体(例如,计算设备)可以根据待参数检测程序的程序句柄信息,获取待参数检测程序对应的内存权限。其中,待参数检测程序可以是待对对应的接口参数进行参数检测的程序。例如,待参数检测程序可以是用于对数据库内数据进行修改的程序。具体的,待参数检测程序对应的接口参数可以是用于对数据库进行数据修改的参数。上述程序句柄信息是用来标识待参数检测程序的、程序句柄的标识符信息。上述内存权限表征针对上述待参数检测程序对应的内存区域的操作权限。例如,内存权限可以包括:读取权限、写入权限和执行权限。
在一些实施例的一些可选的实现方式中,上述执行主体根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限,可以包括以下步骤:
第一步,根据上述程序句柄信息,确定上述程序句柄信息对应内存区域的内存权限信息。
其中,上述内存权限信息表征针对上述内存区域的内存操作权限。具体的,上述内存权限信息可以包括:内存区域读取权限、内存区域写入权限和内存区域修改权限。上述内存区域是加载上述待参数检测程序的内存存储区域。
作为示例,首先,由于程序句柄为指向内存区域的指针,因此,上述执行主体可以通过程序句柄信息,定位到存储上述待参数检测程序的内存区域。其次,由于内存中不同的存储区域往往对应不同的访问权限,因此,上述执行主体可以根据上述待参数检测程序的内存存储区域的相对位置,确定上述内存权限。
第二步,根据上述内存权限信息,申请上述内存权限信息对应的访问令牌。
其中,访问令牌表征用于申请获取内存权限信息对应的内存操作权限的对象。具体的,访问令牌可以是用于描述进程或线程对应的、处于生效状态下的安全规则的对象。实践中,不同访问令牌往往对应不同的数据操作权限。因此,上述执行主体可以申请对应有内存权限信息对应的内存操作权限的访问令牌,以实现对上述内存区域的内存操作。
第三步,响应于申请到上述访问令牌,通过上述访问令牌和上述内存权限信息,获取上述待参数检测程序对应的内存权限。
实践中,若仅需对上述参数检测程序进行读取操作和修改操作,上述执行主体可以通过上述访问令牌,获取针对上述待参数检测程序对应内存区域的内存区域读取权限和内存区域修改权限。
步骤102,响应于得到内存权限,确定待参数检测程序对应的动态库基地址。
在一些实施例中,响应于得到上述内存权限,上述执行主体可以确定上述待参数检测程序对应的动态库基地址。其中,动态库基地址为动态链接库加载到内存中时的起始地址。动态链接库是待参数检测程序在程序运行时、动态加载的、可以被多个程序共用的代码和数据的库。实践中,上述执行主体可以使用操作系统提供的函数(例如,GetModuleHandle()函数)确定上述待参数检测程序对应的动态库基地址。
在一些实施例的一些可选的实现方式中,响应于得到上述内存权限,上述执行主体确定上述待参数检测程序对应的动态库基地址,可以包括以下步骤:
第一步,确定上述待参数检测程序对应的内存地址。
实践中,上述执行主体可以通过上述程序句柄信息,定位至上述内存地址。具体定位方式可以参见步骤101中的内容,在此不再赘述。
第二步,根据上述内存地址,读取上述内存地址对应位置的数据信息。
其中,上述数据信息可以表征内存地址内存储的上述待参数检测程序。实践中,首先,上述执行主体可以通过程序句柄信息,跳转至上述内存地址。然后,上述执行主体可以以上述内存地址为基地址,进行数据顺序读取,以得到上述数据信息。
第三步,对上述数据信息进行动态库过滤,得到动态库名称。
其中,动态库名称表征待参数检测程序中的动态链接库的库名称。
实践中,上述执行主体可以根据库类型,从上述数据信息中确定上述动态库名称。
第四步,根据上述动态库名称,进行动态库基地址追踪,以确定上述动态库基地址。
其中,动态库基地址表征动态库名称对应的动态链接库的基地址。实践中,上述执行主体可以使用操作系统提供的函数(例如,dladdr()函数),获取动态库名称对应的动态链接库的基地址,作为上述动态库基地址。
步骤103,根据动态库基地址,确定目标操作对象信息。
在一些实施例中,上述执行主体可以根据上述动态库基地址,确定目标操作对象信息。其中,上述目标操作对象信息包括目标操作对象的关键符号地址、目标操作对象字段类型和目标操作对象字段值。实践中,上述执行主体可以根据上述动态库基地址,通过解析可移植可执行文件(Portable Executable,PE)结构的方式,确定目标操作对象信息。
在一些实施例的一些可选的实现方式中,上述执行主体根据上述动态库基地址,确定目标操作对象信息,可以包括以下步骤:
第一步,对上述动态库基地址进行解析,生成目标相对地址。
其中,目标相对地址表征目标关键符号的相对地址。例如,目标关键符号可以是“_JVM_EnqueueOperation@20”。
作为示例,首先,上述执行主体可以通过符号解析工具,确定目标关键符号的地址偏移量,作为目标相对地址。
第二步,根据上述动态库基地址和上述目标相对地址进行地址偏移,得到上述目标关键符号对应的目标绝对地址。
其中,目标绝对地址表征目标关键符号的绝对地址。
第三步,获取操作对象信息集合。
其中,操作对象信息集合中的操作对象信息包括:操作对象关键符号地址和操作对象内存地址。其中,操作对象关键符号地址是操作对象在可执行文件或动态库中的地址。操作对象内存地址是操作对象在程序运行时分配的实际内存地址。其中,操作对象可以是对Instrument类实例化得到的Instrument对象。
实践中,首先,上述执行主体可以使用符号解析机制,获取操作对象关键符号地址。然后,上述执行主体可以在程序运行时通过调试器获取操作对象内存地址。
第四步,对于上述操作对象信息集合中的每个操作对象信息,响应于确定上述操作对象信息包括的操作对象关键符号地址与上述目标绝对地址地址匹配,将上述操作对象信息对应的操作对象确定为目标操作对象。
实践中,上述执行主体可以响应于确定上述操作对象信息包括的操作对象关键符号地址与上述目标绝对地址一致,将上述操作对象信息对应的操作对象确定为目标操作对象。
第五步,根据上述目标操作对象对应的操作对象信息包括的操作对象内存地址,获取目标操作对象的访问权限。
其中,上述目标操作对象的访问权限是操作对象的、用于进行数据访问的权限。
第六步,响应于获取到上述目标操作对象的访问权限,确定上述目标操作对象对应的目标操作对象字段类型和相对偏移量。
其中,上述目标操作对象字段类型是目标操作对象的字段类型。例如,字段类型可以是整数类型。其中,上述相对偏移量是目标操作对象对应的内存地址相对于动态库基地址的偏移量。
第七步,根据上述相对偏移量,确定目标操作对象字段值。
实践中,目标操作对象字段值是Instrument对象对应的数据结构内的字段值。实践中,因为Instrument对象对应的数据结构固定,因此,数据结构内的字段值在内存中的相对位置固定,因此,上述执行主体可以通过相对偏移量定位Instrument对象对应的数据结构内的字段值,得到上述目标操作对象字段值。
第八步,将上述目标操作对象对应的操作对象信息包括的操作对象关键符号地址、上述目标操作对象字段类型和上述目标操作对象字段值,确定为上述目标操作对象信息。
步骤104,根据目标操作对象信息,确定待参数检测类信息集合。
在一些实施例中,上述执行主体可以根据上述目标操作对象信息,确定待参数检测类信息集合。其中,待参数检测类信息是指需要进行参数检测的类。其中,类是面向程序编程中的一种信息封装方式。具体的,待参数检测类信息可以包括类名。例如,待参数检测类信息对应的类可以是上述待参数检测程序中已加载的类,因此,上述执行主体可以通过调用函数(例如,getAllLoadedClasses()函数)确定上述待参数检测类信息集合。
在一些实施例的一些可选的实现方式中,上述执行主体根据上述目标操作对象信息,确定待参数检测类信息集合,可以包括以下步骤:
第一步,根据上述目标操作对象信息包括的操作对象关键符号地址和上述动态库基地址,生成目标操作对象实际地址。
实践中,上述执行主体可以对操作对象关键符号地址和上述动态库基地址求和,得到目标操作对象实际地址。
第二步,通过上述目标操作对象实际地址,对上述目标操作对象信息包括的操作对象关键符号地址进行地址更新,得到更新后目标操作对象信息。
实践中,上述执行主体可以将上述目标操作对象信息包括的操作对象关键符号地址更新为目标操作对象实际地址,得到更新后目标操作对象信息。
第三步,确定上述更新后目标操作对象信息对应的已加载类信息集合。
其中,已加载类信息表征已加载的类。具体的,已加载类信息可以包括已加载的类对应的类名。实践中,上述执行主体可以通过更新后目标操作对象信息对应的操作对象,获取待参数检测程序中已加载的类,得到已加载类信息集合。
第四步,对于上述已加载类信息集合中的每个已加载类信息,响应于确定上述已加载类信息对应的类为待监控类列表中的类,将上述已加载类信息确定为上述待参数检测类信息集合中的待参数检测类信息。
其中,上述待监控类列表表征待进行监控的类。
步骤105,对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:
步骤1051,确定待参数检测类信息对应的程序接口信息组。
在一些实施例中,上述执行主体可以确定上述待参数检测类信息对应的程序接口信息组。其中,程序接口信息为程序的编程接口信息。实践中,程序接口信息可以表征API(Application Programming Interface,应用程序编程接口)名称。
实践中,上述执行主体可以使用反射机制确定上述待参数检测类信息对应的程序接口信息组。
在一些实施例的一些可选的实现方式中,上述执行主体确定上述待参数检测类信息对应的程序接口信息组,可以包括以下步骤:
子步骤1,确定上述待参数检测类信息对应的构造函数和操作函数,以生成构造函数信息集合和操作函数信息集合。
其中,构造函数信息可以表征构造函数的函数名。操作函数信息可以表征操作函数的函数名。
子步骤2,分别对上述构造函数信息集合和上述操作函数信息集合进行函数信息过滤,得到过滤后构造函数信息集合和过滤后操作函数信息集合。
其中,过滤后构造函数信息对应的构造函数为包含有接口参数的构造函数。过滤后操作函数信息对应的操作函数为包含有接口参数的操作函数。
子步骤3,将上述过滤后构造函数信息集合中的过滤后构造函数信息确定为程序接口信息,以及将上述过滤后操作函数信息集合中的过滤后操作函数信息确定为程序接口信息,得到上述程序接口信息组。
步骤1052,对于程序接口信息组中的每个程序接口信息,确定程序接口信息对应的接口参数信息。
在一些实施例中,对于上述程序接口信息组中的每个程序接口信息,上述执行主体可以确定上述程序接口信息对应的接口参数信息。其中,接口参数信息表征程序接口信息对应的程序接口的接口参数。实践中,接口参数可以是程序接口的形式参数(形参)和形式参数对应的参数值。
实践中,上述执行主体可以通过使用开发工具(例如,Swagger工具)解析程序接口信息,以确定上述程序接口信息对应的接口参数信息。
可选地,程序接口信息包括:程序接口名称信息和程序接口内容信息。其中,程序接口名称信息表征程序接口信息对应的程序接口的接口名称。程序接口内容信息表征程序接口信息对应的程序接口的接口内容。实践中,程序接口内容信息可以是程序接口信息对应的程序接口包含的程序代码。
在一些实施例的一些可选的实现方式中,上述执行主体确定上述程序接口信息对应的接口参数信息,可以包括以下步骤:
第一步,响应于确定上述程序接口信息对应的程序接口为待监控程序接口,确定上述程序接口信息包括的程序接口内容信息对应的字节码。
其中,上述待监控程序接口为待进行监控的程序接口。实践中,上述执行主体可以通过使用编译器工具(例如,Java Compiler编译器)对程序接口信息包括的程序接口内容信息进行编译,以确定上述程序接口信息包括的程序接口内容信息对应的字节码。
第二步,响应于确定上述字节码不允许修改且上述程序接口信息包括的程序接口内容信息不允许修改,执行以下第一变更操作:
子步骤1,确定上述程序接口信息包括的程序接口内容信息的参数传递方式。
实践中,上述执行主体可以使用调试器工具(例如,Eclipse Debugger调试器)解析程序接口信息包括的程序接口内容信息,以确定上述程序接口信息包括的程序接口内容信息的参数传递方式。
作为示例,参数传递方式可以是参数堆栈方式。
子步骤2,确定上述程序接口信息包括的程序接口内容信息的栈帧结构。
其中,栈帧结构是用于存储函数局部变量、参数和返回地址等信息的内存区域的结构。作为示例,栈帧结构可以是标准栈帧结构。
实践中,上述执行主体可以使用调试器工具(例如,IntelliJ IDEA Debugger调试器)解析程序接口信息包括的程序接口内容信息,以确定上述程序接口信息包括的程序接口内容信息的栈帧结构。
子步骤3,根据上述参数传递方式和上述栈帧结构,生成参数偏移量。
其中,参数偏移量是指在栈帧结构中,函数参数(例如,形式参数)相对于栈帧起始位置的偏移量。
子步骤4,根据上述程序接口信息包括的程序接口内容信息,生成钩子函数信息。
其中,钩子函数信息可以表征程序接口信息对应的程序接口的钩子函数(例如,Hook函数)。
实践中,上述执行主体可以将参数获取代码添加至上述程序接口内容信息对应代码之前,得到钩子函数信息。
子步骤5,基于上述参数偏移量和上述钩子函数信息,生成上述程序接口信息对应的接口参数信息。
实践中,首先,上述执行主体可以通过执行钩子函数信息对应的钩子函数,以及通过上述参数偏移量,确定接口参数信息在上述栈帧结构中的偏移量。然后,上述执行主体可以读取偏移量对应位置的字节码序列。接着,上述执行主体可以对字节码序列进行反编码,得到接口参数信息。
第三步,响应于确定上述字节码允许修改且上述程序接口信息包括的程序接口内容信息不允许修改,执行以下第二变更操作 :
通过预先设置的埋点函数,确定上述程序接口信息对应的接口参数信息。
其中,埋点函数表征预先在代码中埋入的、用于进行数据获取的代码片段。
实践中,上述执行主体可以在上述程序接口信息对应的程序接口被调用时,通过执行上述埋点函数,使用反射技术得到上述程序接口信息对应的接口参数信息。
第四步,响应于确定上述字节码允许修改且上述程序接口信息包括的程序接口内容信息允许修改,执行以下第三变更操作:
子步骤1,创建与上述程序接口信息包括的程序接口名称信息相同的变更函数。
子步骤2,将参数获取代码和上述程序接口内容信息添加至上述变更函数,得到重写函数。
其中,上述参数获取代码的代码位置位于上述程序接口内容信息对应代码之前。参数获取代码是获取参数的程序代码。重写函数是用于在程序接口信息对应的程序接口的基础上、增添参数获取代码后的函数。
子步骤3,调用上述重写函数,得到上述程序接口信息对应的接口参数信息。
上述“在一些实施例的一些可选的实现方式中”的内容作为本公开的一个发明点,解决了背景技术提及的技术问题二,即“访问请求所对应的程序接口的字节码往往对应不同的操作权限、采用单一的方式通过字节码进行程序参数获取,可能无法有效地获取程序参数,使得无法进行针对程序参数的异常检测,导致当程序参数为恶意程序参数时,可能影响程序运行安全性”。实践中,访问请求所对应的程序接口的字节码存在两种操作权限,即,字节码不允许修改和字节码允许修改。采用单一的方式通过字节码进行程序参数获取,可能无法准确地获取程序参数,使得无法针对程序参数进行异常检测,导致当程序参数为恶意程序参数时,可能影响程序运行安全性的问题。基于此,响应于确定上述程序接口信息对应的程序接口为待监控程序接口,本公开首先,确定上述程序接口信息包括的程序接口内容信息对应的字节码。通过确定字节码,可以进一步确定字节码对应的操作权限。接着,响应于确定上述字节码不允许修改且上述程序接口信息包括的程序接口内容信息不允许修改,上述执行主体可以执行以下第一变更操作:第一步,确定上述程序接口信息包括的程序接口内容信息的参数传递方式。第二步,确定上述程序接口信息包括的程序接口内容信息的栈帧结构。第三步,根据上述参数传递方式和上述栈帧结构,生成参数偏移量。实践中,若想获取函数的参数,需要得到参数的位置信息。其中,参数偏移量是指在栈帧结构中,函数参数(例如,形式参数)相对于栈帧起始位置的偏移量,因此,生成参数偏移量可以用于读取函数参数。第四步,根据上述程序接口信息包括的程序接口内容信息,生成钩子函数信息。实践中,在字节码不允许修改且上述程序接口信息包括的程序接口内容信息不允许修改的情况下,可以通过钩子函数信息对应的钩子函数,无侵入式的获得接口参数信息。第五步,基于上述参数偏移量和上述钩子函数信息,生成上述程序接口信息对应的接口参数信息。然后,响应于确定上述字节码允许修改且上述程序接口信息包括的程序接口内容信息不允许修改,上述执行主体可以执行以下第二变更操作:通过预先设置的埋点函数,确定上述程序接口信息对应的接口参数信息。最后,响应于确定上述字节码允许修改且上述程序接口信息包括的程序接口内容信息允许修改,上述执行主体可以执行以下第三变更操作:第一步,创建与上述程序接口信息包括的程序接口名称信息相同的变更函数。第二步,将参数获取代码和上述程序接口内容信息添加至上述变更函数,得到重写函数,其中,上述参数获取代码的代码位置位于上述程序接口内容信息对应代码之前。第三步,调用上述重写函数,得到上述程序接口信息对应的接口参数信息。以此通过包含有参数获取代码的重写函数,得到程序接口信息对应的接口参数信息。通过此种方式,可以有效地获取程序参数,侧面避免了因无法有效获取参数而可能造成的无法进行针对程序参数的异常检测的问题,进而避免了当程序参数为恶意程序参数时,可能影响程序运行安全性的问题。
步骤1053,对接口参数信息进行异常参数检测,以生成检测结果信息。
在一些实施例中,上述执行主体可以对上述接口参数信息进行异常参数检测,以生成检测结果信息。其中,检测结果信息表征接口参数信息对应的接口参数是否参数异常。实践中,当程序接口信息对应的程序接口被调用时,会通过接口参数信息对应的形参传入参数值,因此,需要对接口参数信息进行异常参数检测,以保证传入的参数值的有效和无异常。
可选地,上述接口参数信息包括:接口参数属性信息和接口参数属性值信息。其中,接口参数属性信息表征接口参数的属性。接口参数属性值信息表征接口参数的属性值。例如,接口参数信息可以是{接口参数属性信息:[Name,Sex],接口参数属性值信息:[‘张三’,‘男’]}。
在一些实施例的一些可选的实现方式中,上述执行主体对接口参数信息进行异常参数检测,以生成检测结果信息,可以包括以下步骤:
第一步,通过预先训练的属性值处理模型包括的属性值特征提取模型,对上述接口参数属性值信息进行属性值特征提取,以生成属性值特征。
其中,属性值特征提取模型是对于属性值进行特征提取的模型。实践中,属性值特征提取模型可以包括K个串行连接的卷积层。
实践中,上述执行主体可以将上述接口参数属性值信息输入预先训练的属性值处理模型包括的属性值特征提取模型,生成属性值特征。
第二步,根据上述属性值处理模型包括的属性值类型确定模型和上述属性值特征,生成候选属性值类型。
其中,属性值类型确定模型是用于确定属性值类型的模型。实践中,属性值类型确定模型可以是多分类器(全连接层)。
第三步,响应于确定上述候选属性值类型与上述接口参数属性信息不匹配,生成表征参数异常的检测结果信息。
实践中,上述执行主体响应于确定上述候选属性值类型与上述接口参数属性信息不一致,生成表征参数异常的检测结果信息。
第四步,通过上述属性值特征与病毒特征库中的病毒特征进行特征比对。
其中,病毒特征库是用于存储已知计算机病毒的病毒特征的数据库。
第五步,响应于比对结果表征上述接口参数属性值信息包含病毒特征,生成表征参数异常的检测结果信息。
上述“在一些实施例的一些可选的实现方式中”中的内容作为本公开的一个发明点,解决了背景技术提及的技术问题三,即“由于恶意程序参数对应的攻击方式往往不同,因此导致恶意程序参数的参数形式往往存在差异,采用单一的恶意程序参数确定方式,难以有效地对恶意程序参数进行识别,导致程序运行安全性较差”。实践中,由于恶意程序参数对应的攻击方式多样,恶意程序的参数形式也会因此而存在差异。因此,采用单一的方式无法有效地对多种形式的恶意参数进行有效确定,使得无法保证了程序运行安全性。基于此,本公开首先,通过预先训练的属性值处理模型包括的属性值特征提取模型,对上述接口参数属性值信息进行属性值特征提取,以生成属性值特征。接着,根据上述属性值处理模型包括的属性值类型确定模型和上述属性值特征,生成候选属性值类型。其次,响应于确定上述候选属性值类型与上述接口参数属性信息不匹配,生成表征参数异常的检测结果信息。实践中,当上述候选属性值类型与上述接口参数属性信息不同时,表明接口参数信息包括的接口参数属性值信息的实际值类型异常,此时接口参数属性值信息可能为恶意程序参数。然后,通过上述属性值特征与病毒特征库中的病毒特征进行特征比对。最后,响应于比对结果表征上述接口参数属性值信息包含病毒特征,生成表征参数异常的检测结果信息。通过此种方式,可以有效地对恶意程序参数进行识别,保证了程序运行安全性。
步骤1054,响应于确定检测结果信息表征参数异常,生成参数异常提示信息。
在一些实施例中,响应于确定上述检测结果信息表征参数异常,上述执行主体可以生成参数异常提示信息。其中,参数异常提示信息为用于提示参数是否异常的信息。实践中,参数异常提示信息可以是“检测到潜在威胁”。
本公开的上述各个实施例具有如下有益效果:通过本公开的一些实施例的接口参数的检测方法,避免了因恶意程序参数所可能造成的针对计算机程序的污染和损坏,以此提高了程序运行安全性。具体来说,造成计算机程序安全性较低的原因在于:访问请求在传输过程中往往处于加密状态,使得无法对访问请求所携带的程序参数进行异常检测,而恶意程序参数可能会对计算机程序产生污染和损坏,影响程序运行安全性。实践中,存在侵入性的异常参数可能会对计算机程序造成污染。此外,病毒类型的异常参数也可能会造成计算机程序的损坏,因此,影响了程序运行安全性。基于此,本公开的一些实施例的接口参数的检测方法,首先,根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限,其中,上述待参数检测程序包括用于对数据库内数据进行修改的程序。实践中,针对待参数检测程序的异常参数检测,往往需要将待参数检测程序读入内存中,而不同的内存区域往往对应不同的访问权限,因此,在对待参数检测程序进行参数检测前,需要获取对应的内存权限。其次,响应于得到上述内存权限,确定上述待参数检测程序对应的动态库基地址。实践中,动态库往往加载有程序运行时所需的代码和数据,因此通过确定动态库基地址,可以实现对动态库中代码和数据的访问。接着,根据上述动态库基地址,确定目标操作对象信息。除此之外,根据上述目标操作对象信息,确定待参数检测类信息集合。实践中,针对面向对象编程,类为重要的、且常用的数据结构,通过得到待参数检测类信息,可以以类为中介实现对类中包含的函数的参数检测。最后,对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:第一步,确定上述待参数检测类信息对应的程序接口信息组。实践中,对程序的污染和损坏往往以程序接口为入口,因此,确定程序接口信息可以定位待参数检测的程序接口。第二步,对于上述程序接口信息组中的每个程序接口信息,确定上述程序接口信息对应的接口参数信息。以此得到待检测的接口参数。第三步,对接口参数信息进行异常参数检测,以生成检测结果信息。通过异常参数检测,以此可以判断是否存在恶意程序参数。第四步,响应于确定上述检测结果信息表征参数异常,生成参数异常提示信息。通过此种方式,避免了因访问请求在传输过程中往往处于加密状态,使得无法对访问请求所携带的程序参数进行异常检测的问题。由此,实现了对恶意程序参数的有效识别,避免了恶意程序参数对计算机程序产生污染和损坏的问题,以及提高了程序运行安全性。
进一步参考图2,作为对上述各图所示方法的实现,本公开提供了一种接口参数的检测装置的一些实施例,这些装置实施例与图1所示的那些方法实施例相对应,该接口参数的检测装置具体可以应用于各种电子设备中。
如图2所示,一些实施例的接口参数的检测装置200包括:获取单元201、第一确定单元202、第二确定单元203、第三确定单元204和执行单元205。其中,获取单元201,被配置成根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限,其中,上述待参数检测程序包括用于对数据库内数据进行修改的程序;第一确定单元202,被配置成响应于得到上述内存权限,确定上述待参数检测程序对应的动态库基地址;第二确定单元203,被配置成根据上述动态库基地址,确定目标操作对象信息;第三确定单元204,被配置成根据上述目标操作对象信息,确定待参数检测类信息集合;执行单元205,被配置成对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:确定上述待参数检测类信息对应的程序接口信息组;对于上述程序接口信息组中的每个程序接口信息,确定上述程序接口信息对应的接口参数信息;对上述接口参数信息进行异常参数检测,以生成检测结果信息;响应于确定上述检测结果信息表征参数异常,生成参数异常提示信息。
可以理解的是,该接口参数的检测装置200中记载的诸单元与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征以及产生的有益效果同样适用于接口参数的检测装置200及其中包含的单元,在此不再赘述。
下面参考图3,其示出了适于用来实现本公开的一些实施例的电子设备(例如,计算设备)300的结构示意图。图3示出的电子设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图3所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图3示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图3中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的一些实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的一些实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的一些实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开的一些实施例的方法中限定的上述功能。
需要说明的是,本公开的一些实施例中记载的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的一些实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的一些实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限,其中,上述待参数检测程序包括用于对数据库内数据进行修改的程序;响应于得到上述内存权限,确定上述待参数检测程序对应的动态库基地址;根据上述动态库基地址,确定目标操作对象信息;根据上述目标操作对象信息,确定待参数检测类信息集合;对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:确定上述待参数检测类信息对应的程序接口信息组;对于上述程序接口信息组中的每个程序接口信息,确定上述程序接口信息对应的接口参数信息;对上述接口参数信息进行异常参数检测,以生成检测结果信息;响应于确定上述检测结果信息表征参数异常,生成参数异常提示信息。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的一些实施例的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的一些实施例中的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、第一确定单元、第二确定单元、第三确定单元和执行单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“根据待参数检测程序的程序句柄信息,获取上述待参数检测程序对应的内存权限的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
以上描述仅为本公开的一些较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (7)

1.一种接口参数的检测方法,包括:
根据待参数检测程序的程序句柄信息,获取所述待参数检测程序对应的内存地址,其中,所述待参数检测程序包括用于对数据库内数据进行修改的程序;
响应于得到所述内存地址,确定所述待参数检测程序对应的动态库基地址;
根据所述动态库基地址,确定目标操作对象信息;
根据所述目标操作对象信息,确定待参数检测类信息集合;
对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:
确定所述待参数检测类信息对应的程序接口信息组;
对于所述程序接口信息组中的每个程序接口信息,确定所述程序接口信息对应的接口参数信息;
对接口参数信息进行异常参数检测,以生成检测结果信息;
响应于确定所述检测结果信息表征参数异常,生成参数异常提示信息,其中,所述响应于得到所述内存地址,确定所述待参数检测程序对应的动态库基地址,包括:
根据所述内存地址,读取所述内存地址对应位置的数据信息;
对所述数据信息进行动态库过滤,得到动态库名称;
根据所述动态库名称,进行动态库基地址追踪,以确定所述动态库基地址;其中,
所述确定所述待参数检测类信息对应的程序接口信息组,包括:
确定所述待参数检测类信息对应的构造函数和操作函数,以生成构造函数信息集合和操作函数信息集合;
分别对所述构造函数信息集合和所述操作函数信息集合进行函数信息过滤,得到过滤后构造函数信息集合和过滤后操作函数信息集合;
将所述过滤后构造函数信息集合中的过滤后构造函数信息确定为程序接口信息,以及将所述过滤后操作函数信息集合中的过滤后操作函数信息确定为程序接口信息,得到所述程序接口信息组;其中,
所述确定所述程序接口信息对应的接口参数信息,其中,所述程序接口信息包括:程序接口名称信息和程序接口内容信息,包括:
响应于确定所述程序接口信息对应的程序接口为待监控程序接口,确定所述程序接口信息包括的程序接口内容信息对应的字节码;
响应于确定所述字节码不允许修改且所述程序接口信息包括的程序接口内容信息不允许修改,执行以下第一变更操作:
确定所述程序接口信息包括的程序接口内容信息的参数传递方式;
确定所述程序接口信息包括的程序接口内容信息的栈帧结构;
根据所述参数传递方式和所述栈帧结构,生成参数偏移量;
根据所述程序接口信息包括的程序接口内容信息,生成钩子函数信息;
基于所述参数偏移量和所述钩子函数信息,生成所述程序接口信息对应的接口参数信息;
响应于确定所述字节码允许修改且所述程序接口信息包括的程序接口内容信息不允许修改,执行以下第二变更操作:
通过预先设置的埋点函数,确定所述程序接口信息对应的接口参数信息;
响应于确定所述字节码允许修改且所述程序接口信息包括的程序接口内容信息允许修改,执行以下第三变更操作:
创建与所述程序接口信息包括的程序接口名称信息相同的变更函数;
将参数获取代码和所述程序接口内容信息添加至所述变更函数,得到重写函数,其中,所述参数获取代码的代码位置位于所述程序接口内容信息对应代码之前;
调用所述重写函数,得到所述程序接口信息对应的接口参数信息;其中,
所述对接口参数信息进行异常参数检测,以生成检测结果信息,其中,所述接口参数信息包括:接口参数属性信息和接口参数属性值信息,包括:
通过预先训练的属性值处理模型包括的属性值特征提取模型,对所述接口参数属性值信息进行属性值特征提取,以生成属性值特征;
根据所述属性值处理模型包括的属性值类型确定模型和所述属性值特征,生成候选属性值类型;
响应于确定所述候选属性值类型与所述接口参数属性信息不匹配,生成表征参数异常的检测结果信息;
通过所述属性值特征与病毒特征库中的病毒特征进行特征比对;
响应于比对结果表征所述接口参数属性值信息包含病毒特征,生成表征参数异常的检测结果信息。
2.根据权利要求1所述的方法,其中,所述根据待参数检测程序的程序句柄信息,获取所述待参数检测程序对应的内存地址,包括:
根据所述程序句柄信息,确定所述程序句柄信息对应内存区域的内存权限信息,其中,所述内存权限信息表征针对所述内存区域的可操作权限;
根据所述内存权限信息,申请所述内存权限信息对应的访问令牌;
响应于申请到所述访问令牌,通过所述访问令牌和所述内存权限信息,获取所述待参数检测程序对应的内存地址。
3.根据权利要求2所述的方法,所述根据所述动态库基地址,确定目标操作对象信息,包括:
对所述动态库基地址进行解析,生成目标相对地址,其中,所述目标相对地址表征目标关键符号的相对地址;
根据所述动态库基地址和所述目标相对地址进行地址偏移,得到所述目标关键符号对应的目标绝对地址;
获取操作对象信息集合,其中,所述操作对象信息集合中的操作对象信息包括:操作对象关键符号地址和操作对象内存地址;
对于所述操作对象信息集合中的每个操作对象信息,响应于确定所述操作对象信息包括的操作对象关键符号地址与所述目标绝对地址地址匹配,将所述操作对象信息对应的操作对象确定为目标操作对象;
根据所述目标操作对象对应的操作对象信息包括的操作对象内存地址,获取目标操作对象的访问权限;
响应于获取到所述目标操作对象的访问权限,确定所述目标操作对象对应的目标操作对象字段类型和相对偏移量;
根据所述相对偏移量,确定目标操作对象字段值;
将所述目标操作对象对应的操作对象信息包括的操作对象关键符号地址、所述目标操作对象字段类型和所述目标操作对象字段值,确定为所述目标操作对象信息。
4.根据权利要求3所述的方法,其中,所述根据所述目标操作对象信息,确定待参数检测类信息集合,包括:
根据所述目标操作对象信息包括的操作对象关键符号地址和所述动态库基地址,生成目标操作对象实际地址;
通过所述目标操作对象实际地址,对所述目标操作对象信息包括的操作对象关键符号地址进行地址更新,得到更新后目标操作对象信息;
确定所述更新后目标操作对象信息对应的已加载类信息集合;
对于所述已加载类信息集合中的每个已加载类信息,响应于确定所述已加载类信息对应的类为待监控类列表中的类,将所述已加载类信息确定为所述待参数检测类信息集合中的待参数检测类信息。
5.一种接口参数的检测装置,包括:
获取单元,被配置成根据待参数检测程序的程序句柄信息,获取所述待参数检测程序对应的内存地址,其中,所述待参数检测程序包括用于对数据库内数据进行修改的程序;
第一确定单元,被配置成响应于得到所述内存地址,确定所述待参数检测程序对应的动态库基地址;
第二确定单元,被配置成根据所述动态库基地址,确定目标操作对象信息;
第三确定单元,被配置成根据所述目标操作对象信息,确定待参数检测类信息集合;
执行单元,被配置成对于待参数检测类信息集合中的每个待参数检测类信息,执行以下处理步骤:确定所述待参数检测类信息对应的程序接口信息组;对于所述程序接口信息组中的每个程序接口信息,确定所述程序接口信息对应的接口参数信息;对接口参数信息进行异常参数检测,以生成检测结果信息;响应于确定所述检测结果信息表征参数异常,生成参数异常提示信息,其中,所述响应于得到所述内存地址,确定所述待参数检测程序对应的动态库基地址,包括:
根据所述内存地址,读取所述内存地址对应位置的数据信息;
对所述数据信息进行动态库过滤,得到动态库名称;
根据所述动态库名称,进行动态库基地址追踪,以确定所述动态库基地址;其中,
所述确定所述待参数检测类信息对应的程序接口信息组,包括:
确定所述待参数检测类信息对应的构造函数和操作函数,以生成构造函数信息集合和操作函数信息集合;
分别对所述构造函数信息集合和所述操作函数信息集合进行函数信息过滤,得到过滤后构造函数信息集合和过滤后操作函数信息集合;
将所述过滤后构造函数信息集合中的过滤后构造函数信息确定为程序接口信息,以及将所述过滤后操作函数信息集合中的过滤后操作函数信息确定为程序接口信息,得到所述程序接口信息组;其中,
所述确定所述程序接口信息对应的接口参数信息,其中,所述程序接口信息包括:程序接口名称信息和程序接口内容信息,包括:
响应于确定所述程序接口信息对应的程序接口为待监控程序接口,确定所述程序接口信息包括的程序接口内容信息对应的字节码;
响应于确定所述字节码不允许修改且所述程序接口信息包括的程序接口内容信息不允许修改,执行以下第一变更操作:
确定所述程序接口信息包括的程序接口内容信息的参数传递方式;
确定所述程序接口信息包括的程序接口内容信息的栈帧结构;
根据所述参数传递方式和所述栈帧结构,生成参数偏移量;
根据所述程序接口信息包括的程序接口内容信息,生成钩子函数信息;
基于所述参数偏移量和所述钩子函数信息,生成所述程序接口信息对应的接口参数信息;
响应于确定所述字节码允许修改且所述程序接口信息包括的程序接口内容信息不允许修改,执行以下第二变更操作:
通过预先设置的埋点函数,确定所述程序接口信息对应的接口参数信息;
响应于确定所述字节码允许修改且所述程序接口信息包括的程序接口内容信息允许修改,执行以下第三变更操作:
创建与所述程序接口信息包括的程序接口名称信息相同的变更函数;
将参数获取代码和所述程序接口内容信息添加至所述变更函数,得到重写函数,其中,所述参数获取代码的代码位置位于所述程序接口内容信息对应代码之前;
调用所述重写函数,得到所述程序接口信息对应的接口参数信息;其中,
所述对接口参数信息进行异常参数检测,以生成检测结果信息,其中,所述接口参数信息包括:接口参数属性信息和接口参数属性值信息,包括:
通过预先训练的属性值处理模型包括的属性值特征提取模型,对所述接口参数属性值信息进行属性值特征提取,以生成属性值特征;
根据所述属性值处理模型包括的属性值类型确定模型和所述属性值特征,生成候选属性值类型;
响应于确定所述候选属性值类型与所述接口参数属性信息不匹配,生成表征参数异常的检测结果信息;
通过所述属性值特征与病毒特征库中的病毒特征进行特征比对;
响应于比对结果表征所述接口参数属性值信息包含病毒特征,生成表征参数异常的检测结果信息。
6.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至4中任一所述的方法。
7.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至4中任一所述的方法。
CN202311141412.2A 2023-09-06 2023-09-06 接口参数的检测方法、装置、电子设备和计算机可读介质 Active CN116881173B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311141412.2A CN116881173B (zh) 2023-09-06 2023-09-06 接口参数的检测方法、装置、电子设备和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311141412.2A CN116881173B (zh) 2023-09-06 2023-09-06 接口参数的检测方法、装置、电子设备和计算机可读介质

Publications (2)

Publication Number Publication Date
CN116881173A CN116881173A (zh) 2023-10-13
CN116881173B true CN116881173B (zh) 2023-11-28

Family

ID=88271857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311141412.2A Active CN116881173B (zh) 2023-09-06 2023-09-06 接口参数的检测方法、装置、电子设备和计算机可读介质

Country Status (1)

Country Link
CN (1) CN116881173B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115622776A (zh) * 2022-10-08 2023-01-17 浙江网商银行股份有限公司 数据访问方法以及装置
CN116155628A (zh) * 2023-04-20 2023-05-23 中国工商银行股份有限公司 网络安全检测方法、训练方法、装置、电子设备和介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210382986A1 (en) * 2020-06-03 2021-12-09 ArecaBay, Inc. Dynamic, Runtime Application Programming Interface Parameter Labeling, Flow Parameter Tracking and Security Policy Enforcement

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115622776A (zh) * 2022-10-08 2023-01-17 浙江网商银行股份有限公司 数据访问方法以及装置
CN116155628A (zh) * 2023-04-20 2023-05-23 中国工商银行股份有限公司 网络安全检测方法、训练方法、装置、电子设备和介质

Also Published As

Publication number Publication date
CN116881173A (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
US11086987B2 (en) Malware detection in event loops
US11507669B1 (en) Characterizing, detecting and healing vulnerabilities in computer code
US9720798B2 (en) Simulating black box test results using information from white box testing
US11650905B2 (en) Testing source code changes
US10380349B2 (en) Security analysis using relational abstraction of data structures
Hassanshahi et al. Web-to-application injection attacks on android: Characterization and detection
US20220198003A1 (en) Detecting added functionality in open source package
TW201721497A (zh) 用以檢測運作時期所產生碼中之惡意碼的系統及方法
CN109255235B (zh) 基于用户态沙箱的移动应用第三方库隔离方法
US20220261894A1 (en) Method and apparatus for issuing smart contract
WO2021228036A1 (en) Modification of codified infrastructure for orchestration in multi-cloud environment
CN107944278A (zh) 一种内核漏洞检测方法及装置
CN113886825A (zh) 代码检测方法、装置、系统、设备及存储介质
US11528291B2 (en) Methods and apparatus for defending against exploitation of vulnerable software
US10902151B2 (en) Cognitive API policy manager
CN109739582B (zh) 函数调用方法、装置、电子设备和计算机可读存储介质
US9064042B2 (en) Instrumenting computer program code by merging template and target code methods
CN116881173B (zh) 接口参数的检测方法、装置、电子设备和计算机可读介质
US20230141948A1 (en) Analysis and Testing of Embedded Code
Abidi et al. Practical attestation for edge devices running compute heavy machine learning applications
Cam et al. Detect repackaged android applications by using representative graphs
JP7464663B2 (ja) プライバシー保持アプリケーションおよびデバイスエラー検出
CN117648700A (zh) 安全漏洞检测方法、装置、介质及电子设备
Bian et al. Generic Vulnerability Analysis Based on Large-Scale Automotive Software
CN115757136A (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