CN111752600A - 代码异常检测方法、装置、计算机设备及存储介质 - Google Patents
代码异常检测方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111752600A CN111752600A CN202010628920.3A CN202010628920A CN111752600A CN 111752600 A CN111752600 A CN 111752600A CN 202010628920 A CN202010628920 A CN 202010628920A CN 111752600 A CN111752600 A CN 111752600A
- Authority
- CN
- China
- Prior art keywords
- code
- code block
- file
- executed
- abnormal
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了代码异常检测方法、装置、计算机设备及存储介质,属于测试领域。本发明可应用于系统测试过程中。本发明的代码异常检测方法、装置、计算机设备及存储介质,通过预先加载待执行文件,逐个对待执行文件中的第一代码块添加异常编译代码,生成可对自身的代码块进行异常捕获功能的第二代码块;根据第二代码块生成与待执行文件对应的目标执行文件;在执行目标执行文件时,若目标执行文件中的第二代码块异常,可通过异常编译代码将相应的第二代码块转换为源码,从而达到快速获取异常代码块对应的源码目的,耗时短、效率高。
Description
技术领域
本发明涉及测试领域,尤其涉及代码异常检测方法、装置、计算机设备及存储介质。
背景技术
随着微服务架构的盛行,一个系统往往被拆分成多个子系统来完成一个业务功能。由此产生的问题是:线上异常定位难且定位时间长。目前对于线上异常定位主要采用两种方法:一种是基于日志级别进行大数据分析;另一种是线下本地拉取代码进行分析。对于第一种方法而言,考虑到一条调用链上可存在多个子系统以及数十个接口,每个子系统都会在各自的接口级别打印日志,一旦某一个环境报错,将会级联引发其相关子系统打印错误日志,进而将真正发生异常的日志淹没,存在异常定位难且定位时间长的缺陷。对于第二种方法而言,由于java语言的特性,线上运行的代码都是二进制的字节码,即使通过监控定位到异常代码,也无法查看线上源码进行快速异常锁定,仍然需要取线下本地拉取代码进行分析,存在耗时长、效率低的缺陷。
发明内容
针对现有系统的代码线上异常定位难且定位时间长的问题,现提供一种旨在可线上动态捕获异常代码的代码异常检测方法、装置、计算机设备及存储介质,本发明还可应用于智慧城市领域中,从而推动智慧城市的建设。
为实现上述目的,本发明提供一种代码异常检测方法,应用于虚拟机中,包括:
加载待执行文件,所述待执行文件包括至少一个第一代码块;
分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块;
根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件;
执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码。
优选的,所述异常编译代码为反编译逻辑代码,或
所述异常编译代码包括异常捕获代码和反编译逻辑代码。
优选的,所述分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块,包括:
检测所述待执行文件中的各个所述第一代码块是否符合预设条件;
当所述第一代码块符合所述预设条件时,在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块;
当所述第一代码块不符合所述预设条件时,在所述第一代码块中添加异常捕获代码和反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块。
优选的,所述预设条件为所述第一代码块包括所述异常捕获代码,异常捕获代码为exception字节码;
所述当所述第一代码块符合所述预设条件时,在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块包括:
当所述第一代码块包括exception字节码时,在所述第一代码块的结尾处添加所述反编译逻辑代码,以生成所述第二代码块。
优选的,所述根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件,包括:
根据所述待执行文件中各个所述第一代码块的逻辑顺序,将与所述第一代码块对应的所述第二代码块按照所述逻辑顺序进行组合,生成与所述待执行文件对应的所述目标执行文件。
优选的,所述执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码,包括:
当采用多线程执行所述目标执行文件时,每个线程对应一个所述第二代码块,执行所述线程以加载相应的所述第二代码块,若第二代码块正常,则正常执行;若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为源码,显示所述源码;
优选的,所述执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码,包括:
当采用单线程执行所述目标执行文件时,根据所述目标执行文件的逻辑顺序依次执行所述目标执行文件中的所述第二代码块,若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为源码,显示所述源码。
为实现上述目的,本发明还提供一种代码异常检测装置,应用于虚拟机中,包括:
加载单元,用于加载待执行文件,所述待执行文件包括至少一个第一代码块;
修改单元,用于分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块;
生成单元,用于根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件;
执行单元,用于执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码。
为实现上述目的,本发明还提供一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储程序区存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明提供的代码异常检测方法、装置、计算机设备及存储介质,通过预先加载待执行文件,逐个对待执行文件中的第一代码块添加异常编译代码,生成可对自身的代码块进行异常捕获功能的第二代码块;根据第二代码块生成与待执行文件对应的目标执行文件;在执行目标执行文件时,若目标执行文件中的第二代码块异常,可通过异常编译代码将相应的第二代码块转换为源码,从而达到快速获取异常代码块对应的源码目的,耗时短、效率高。
附图说明
图1为本发明所述的代码异常检测方法的一种实施例的流程图;
图2为本发明对待执行文件中各个第一代码块添加异常编译代码的一种实施例的流程图;
图3为本发明所述的代码异常检测装置的一种实施例的模块图;
图4为本发明所述修改单元的一种实施例的内部模块图;
图5为本发明计算机设备的一个实施例的硬件架构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明提供的代码异常检测方法、装置、计算机设备及存储介质,适用于智慧政务、智慧城管、智慧社区、智慧安防、智慧物流、智慧医疗、智慧教育、智慧环保、智慧交通等场景中,可应用于系统测试过程中。本发明通过预先加载待执行文件,逐个对待执行文件中的第一代码块添加异常编译代码,生成可对自身的代码块进行异常捕获功能的第二代码块;根据第二代码块生成与待执行文件对应的目标执行文件;在执行目标执行文件时,若目标执行文件中的第二代码块异常,可通过异常编译代码将相应的第二代码块转换为源码,从而达到快速获取异常代码块对应的源码目的,耗时短、效率高。
实施例一
请参阅图1,本实施例提供了一种代码异常检测方法,应用于虚拟机中,包括下述步骤:
S1.加载待执行文件,所述待执行文件包括至少一个第一代码块;
需要说明的是:第一代码块采用java字节码,该字节码可通过java虚拟机编译而成,字节码可以是二进制字节码或十六进制字节码;待执行文件为类文件。
在本实施例中,通过虚拟机对待执行文件进行预加载,以便于对待执行文件中的第一代码块进行动态修改。
在实际应用中,虚拟机采用Java Instrumentation API接口在虚拟机中注册ClassFileTransformer接口,ClassFileTransformer接口通过addTransformer方法增加一个类转换器。当待执行文件(类文件)进行预先加载时,通过ClassFileTransformer接口调用类转换器,类转换器采用redefineClasses方法对待执行文件进行类重定义。
S2.分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块;
需要说明的是:所述异常编译代码采用以下至少一种代码:
反编译逻辑代码,或由异常捕获代码和反编译逻辑代码构成的代码。
在本实施例中,对待执行文件中的第一代码块逐个进行修改,通过对第一代码块添加异常编译代码,获取可对自身的代码块进行异常捕获功能的第二代码块。
进一步地,参阅图2步骤S2可包括:
S21.检测所述待执行文件中的各个所述第一代码块是否符合预设条件,若是,执行步骤S22;若否,执行步骤S23;
其中,所述预设条件为所述第一代码块包括所述异常捕获代码;异常捕获代码可采用exception字节码。
在实际应用中,需根据待执行文件中第一代码块的逻辑顺序,逐个检测第一代码块是否包括异常捕获代码;当第一代码块包括异常捕获代码时,执行步骤S22;当第一代码块不包括异常捕获代码时,执行步骤S23。
S22.在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块;
若第一代码块包括exception字节码,则第一代码块具有异常捕获功能,需在第一代码块的结尾处添加反编译逻辑代码,生成第二代码块,以使第二代码块具有反编译功能;当执行第二代码块时,若第二代码块存在异常,可通过异常编译代码将相应的第二代码块的java字节码转换为采用java语言编写的源码,以实现精准定位异常的目的。
在实际应用中,通过类转换器对第一代码块进行修改,插入反编译逻辑代码,生成第二代码块。
S23.在所述第一代码块中添加异常捕获代码和反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块。
若第一代码块中不包括exception字节码,则第一代码块不具有异常捕获功能,需在第一代码块的结尾处添加异常捕获代码和反编译逻辑代码,以使第二代码块具有异常捕获功能和反编译功能。
在实际应用中,通过类转换器对第一代码块进行修改,插入异常捕获代码和反编译逻辑代码,生成第二代码块。
S3.根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件;
具体地,在步骤S3中根据所述待执行文件中各个所述第一代码块的逻辑顺序,将与所述第一代码块对应的所述第二代码块按照所述逻辑顺序进行组合,生成与所述待执行文件对应的所述目标执行文件。
在本实施例中,当完成对待执行文件中所有的第一代码块修改后,将获取的第二代码块根据对应的第一代码块在待执行文件中的逻辑顺序进行组合,进而生成具有异常捕获功能和反编译功能的目标执行文件。
S4.执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码。
在本实施例中,虚拟机将目标执行文件加载内存中,执行相应的操作。
进一步地,在步骤S4中,当采用多线程执行所述目标执行文件时,每个线程对应一个所述第二代码块,执行所述线程以加载相应的所述第二代码块,若第二代码块正常,则正常执行;若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为采用java语言编写的源码,显示所述源码;
在本实施例中,若虚拟机采用多线程执行目标执行文件,同时通过多个线程加载相应的第二代码块,若某多个第二代码块出现异常,则分别生成报错消息,并通过异常编译代码对第二代码块转换为源码,显示多个异常的可读的源码;若其余的第二代码块均正常,则正常执行。
进一步地,在步骤S4中,当采用单线程执行所述目标执行文件时,根据所述目标执行文件的逻辑顺序依次执行所述目标执行文件中的所述第二代码块,若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为源码,显示所述源码。
在本实施例中,若虚拟机采用单线程执行目标执行文件,根据目标执行文件的逻辑顺序依次执行目标执行文件中的第二代码块,若第二代码块异常,则停止执行其他代码块,生成报错消息,并通过异常编译代码将当前的第二代码块转换为可读的源码,显示源码。
在本实施例中,代码异常检测方法通过预先加载待执行文件,逐个对待执行文件中的第一代码块添加异常编译代码,进而修改第一代码块,生成可对自身的代码块进行异常捕获功能的第二代码块;根据第二代码块生成与待执行文件对应的目标执行文件;在执行目标执行文件时,若目标执行文件中的第二代码块异常,可通过异常编译代码将相应的第二代码块转换为源码,提升了代码异常定位的效率,达到了动态展示异常源码的目的,减少了到本地拉取源码的时间。本发明还具有对源码零侵入的优点。
实施例二
请参阅图3,本实施例提供了一种代码异常检测装置1,应用于虚拟机中,包括:加载单元11、修改单元12、生成单元13和执行单元14;其中,
加载单元11,用于加载待执行文件,所述待执行文件包括至少一个第一代码块;
需要说明的是:第一代码块采用java字节码,该字节码可通过java虚拟机编译而成;待执行文件为类文件。
在本实施例中,通过虚拟机对待执行文件进行预加载,以便于对待执行文件中的第一代码块进行动态修改。
在实际应用中,虚拟机采用Java Instrumentation API接口在虚拟机中注册ClassFileTransformer接口,ClassFileTransformer接口通过addTransformer方法增加一个类转换器。当待执行文件(类文件)进行预先加载时,通过ClassFileTransformer接口调用类转换器,类转换器采用redefineClasses方法对待执行文件进行类重定义。
修改单元12,用于分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块;
需要说明的是:所述异常编译代码采用以下至少一种代码:
反编译逻辑代码,或由异常捕获代码和反编译逻辑代码构成的代码。
在本实施例中,对待执行文件中的第一代码块逐个进行修改,通过对第一代码块添加异常编译代码,获取可对自身的代码块进行异常捕获功能的第二代码块。
进一步地,参阅图4修改单元12可包括:检测模块121、第一添加模块122和第二添加模块123;
检测模块121,用于检测所述待执行文件中的各个所述第一代码块是否符合预设条件;
其中,所述预设条件为所述第一代码块包括所述异常捕获代码;异常捕获代码可采用exception字节码。
在实际应用中,需根据待执行文件中第一代码块的逻辑顺序,逐个检测第一代码块是否包括异常捕获代码。
第一添加模块122,用于在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块;
若第一代码块包括exception字节码,则第一代码块具有异常捕获功能,需在第一代码块的结尾处添加反编译逻辑代码,生成第二代码块,以使第二代码块具有反编译功能;当执行第二代码块时,若第二代码块存在异常,可通过异常编译代码将相应的第二代码块转换为源码,以实现精准定位异常的目的。
在实际应用中,通过类转换器对第一代码块进行修改,插入反编译逻辑代码,生成第二代码块。
第二添加模块123,用于在所述第一代码块中添加异常捕获代码和反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块。
若第一代码块中不包括exception字节码,则第一代码块不具有异常捕获功能,需在第一代码块的结尾处添加异常捕获代码和反编译逻辑代码,以使第二代码块具有异常捕获功能和反编译功能。
在实际应用中,通过类转换器对第一代码块进行修改,插入异常捕获代码和反编译逻辑代码,生成第二代码块。
生成单元13,用于根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件;
具体地,生成单元13根据所述待执行文件中各个所述第一代码块的逻辑顺序,将与所述第一代码块对应的所述第二代码块按照所述逻辑顺序进行组合,生成与所述待执行文件对应的所述目标执行文件。
在本实施例中,当完成对待执行文件中所有的第一代码块修改后,将获取的第二代码块根据对应的第一代码块在待执行文件中的逻辑顺序进行组合,进而生成具有异常捕获功能和反编译功能的目标执行文件。
执行单元14,用于执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码。
在本实施例中,虚拟机将目标执行文件加载内存中,执行相应的操作。
进一步地,当采用多线程执行所述目标执行文件时,每个线程对应一个所述第二代码块,执行所述线程以加载相应的所述第二代码块,若第二代码块正常,则正常执行;若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为源码,显示所述源码;
在本实施例中,若虚拟机采用多线程执行目标执行文件,同时通过多个线程加载相应的第二代码块,若某多个第二代码块出现异常,则分别生成报错消息,并通过异常编译代码对第二代码块转换为源码,显示多个异常的可读的源码;若其余的第二代码块均正常,则正常执行。
进一步地,当采用单线程执行所述目标执行文件时,根据所述目标执行文件的逻辑顺序依次执行所述目标执行文件中的所述第二代码块,若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为源码,显示所述源码。
在本实施例中,若虚拟机采用单线程执行目标执行文件,根据目标执行文件的逻辑顺序依次执行目标执行文件中的第二代码块,若第二代码块异常,则停止执行其他代码块,生成报错消息,并通过异常编译代码将当前的第二代码块转换为可读的源码,显示源码。
在本实施例中,代码异常检测装置1通过预先加载待执行文件,逐个对待执行文件中的第一代码块添加异常编译代码,进而修改第一代码块,生成可对自身的代码块进行异常捕获功能的第二代码块;根据第二代码块生成与待执行文件对应的目标执行文件;在执行目标执行文件时,若目标执行文件中的第二代码块异常,可通过异常编译代码将相应的第二代码块转换为源码,提升了代码异常定位的效率,达到了动态展示异常源码的目的,减少了到本地拉取源码的时间。本发明还具有对源码零侵入的优点。
实施例三
为实现上述目的,本发明还提供一种计算机设备2,该计算机设备2包括多个计算机设备2,实施例二的代码异常检测装置1的组成部分可分散于不同的计算机设备2中,计算机设备2可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备2至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器23、网络接口22以及代码异常检测装置1(参考图5)。需要指出的是,图5仅示出了具有组件-的计算机设备2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,所述存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如实施例一的代码异常检测方法的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器23在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器23通常用于控制计算机设备2的总体操作例如执行与所述计算机设备2进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器23用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述的代码异常检测装置1等。
所述网络接口22可包括无线网络接口或有线网络接口,该网络接口22通常用于在所述计算机设备2与其他计算机设备2之间建立通信连接。例如,所述网络接口22用于通过网络将所述计算机设备2与外部终端相连,在所述计算机设备2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(WidebandCode Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图5仅示出了具有部件21-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器21中的所述代码异常检测装置1还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器23)所执行,以完成本发明。
实施例四
为实现上述目的,本发明还提供一种计算机可读存储介质,其包括多个存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器23执行时实现相应功能。本实施例的计算机可读存储介质用于存储代码异常检测装置1,该计算机可读存储介质被处理器23执行时实现实施例一的代码异常检测方法。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种代码异常检测方法,其特征在于,应用于虚拟机中,包括:
加载待执行文件,所述待执行文件包括至少一个第一代码块;
分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块;
根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件;
执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码。
2.根据权利要求1所述的代码异常检测方法,其特征在于,所述异常编译代码为反编译逻辑代码,或
所述异常编译代码包括异常捕获代码和反编译逻辑代码。
3.根据权利要求2所述的代码异常检测方法,其特征在于,所述分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块,包括:
检测所述待执行文件中的各个所述第一代码块是否符合预设条件;
当所述第一代码块符合所述预设条件时,在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块;
当所述第一代码块不符合所述预设条件时,在所述第一代码块中添加异常捕获代码和反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块。
4.根据权利要求3所述的代码异常检测方法,其特征在于,所述预设条件为所述第一代码块包括所述异常捕获代码,异常捕获代码为exception字节码;
所述当所述第一代码块符合所述预设条件时,在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块包括:
当所述第一代码块包括exception字节码时,在所述第一代码块的结尾处添加所述反编译逻辑代码,以生成所述第二代码块。
5.根据权利要求1所述的代码异常检测方法,其特征在于,所述根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件,包括:
根据所述待执行文件中各个所述第一代码块的逻辑顺序,将与所述第一代码块对应的所述第二代码块按照所述逻辑顺序进行组合,生成与所述待执行文件对应的所述目标执行文件。
6.根据权利要求1所述的代码异常检测方法,其特征在于,所述执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码,包括:
当采用多线程执行所述目标执行文件时,每个线程对应一个所述第二代码块,执行所述线程以加载相应的所述第二代码块,若第二代码块正常,则正常执行;若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为源码,显示所述源码。
7.根据权利要求1所述的代码异常检测方法,其特征在于,所述执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码,包括:
当采用单线程执行所述目标执行文件时,根据所述目标执行文件的逻辑顺序依次执行所述目标执行文件中的所述第二代码块,若所述第二代码块异常,生成报错消息,并通过所述第二代码块中的所述异常编译代码,将所述第二代码块转换为源码,显示所述源码。
8.一种代码异常检测装置,其特征在于,应用于虚拟机中,包括:
加载单元,用于加载待执行文件,所述待执行文件包括至少一个第一代码块;
修改单元,用于分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块;
生成单元,用于根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件;
执行单元,用于执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628920.3A CN111752600B (zh) | 2020-06-30 | 2020-06-30 | 代码异常检测方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628920.3A CN111752600B (zh) | 2020-06-30 | 2020-06-30 | 代码异常检测方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752600A true CN111752600A (zh) | 2020-10-09 |
CN111752600B CN111752600B (zh) | 2023-02-03 |
Family
ID=72678804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010628920.3A Active CN111752600B (zh) | 2020-06-30 | 2020-06-30 | 代码异常检测方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752600B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114911467A (zh) * | 2021-10-22 | 2022-08-16 | 北京思明启创科技有限公司 | 代码检测方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070266375A1 (en) * | 2006-05-10 | 2007-11-15 | Oracle International Corporation | Optimizing code motion with delayed exception handling |
WO2015101096A1 (zh) * | 2013-12-30 | 2015-07-09 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN106709286A (zh) * | 2016-11-30 | 2017-05-24 | 江苏神州信源系统工程有限公司 | 一种对apk资源包进行安全加固的方法 |
CN108985017A (zh) * | 2018-09-26 | 2018-12-11 | 北京京东金融科技控股有限公司 | 应用程序的加固方法和装置 |
CN110659204A (zh) * | 2019-08-20 | 2020-01-07 | 腾讯科技(深圳)有限公司 | 一种代码检测方法、设备及介质 |
-
2020
- 2020-06-30 CN CN202010628920.3A patent/CN111752600B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070266375A1 (en) * | 2006-05-10 | 2007-11-15 | Oracle International Corporation | Optimizing code motion with delayed exception handling |
WO2015101096A1 (zh) * | 2013-12-30 | 2015-07-09 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN106709286A (zh) * | 2016-11-30 | 2017-05-24 | 江苏神州信源系统工程有限公司 | 一种对apk资源包进行安全加固的方法 |
CN108985017A (zh) * | 2018-09-26 | 2018-12-11 | 北京京东金融科技控股有限公司 | 应用程序的加固方法和装置 |
CN110659204A (zh) * | 2019-08-20 | 2020-01-07 | 腾讯科技(深圳)有限公司 | 一种代码检测方法、设备及介质 |
Non-Patent Citations (1)
Title |
---|
王站: "Android平台恶意代码静态检测技术的研究与实现", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114911467A (zh) * | 2021-10-22 | 2022-08-16 | 北京思明启创科技有限公司 | 代码检测方法、装置、电子设备及存储介质 |
CN114911467B (zh) * | 2021-10-22 | 2023-05-09 | 北京思明启创科技有限公司 | 代码检测方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111752600B (zh) | 2023-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222535B (zh) | 区块链配置文件的处理装置、方法及存储介质 | |
US10970200B2 (en) | Test result triage for a failed code validation | |
CN110647471A (zh) | 接口测试用例生成方法、电子装置及存储介质 | |
CN112527484A (zh) | 工作流断点续跑方法、装置、计算机设备及可读存储介质 | |
CN112099843A (zh) | 代码托管平台管理方法、装置、计算机设备及存储介质 | |
CN112039900A (zh) | 网络安全风险检测方法、系统、计算机设备和存储介质 | |
CN114826639B (zh) | 基于函数调用链跟踪的应用攻击检测方法及装置 | |
CN111752600B (zh) | 代码异常检测方法、装置、计算机设备及存储介质 | |
CN112256532A (zh) | 测试界面生成方法、装置、计算机设备及可读存储介质 | |
CN113296752A (zh) | 生成api文档的方法、系统、设备及存储介质 | |
CN110515792B (zh) | 基于web版任务管理平台的监控方法、装置以及计算机设备 | |
CN117499412A (zh) | 一种基于高可用链路的集群优化处理方法及其相关设备 | |
CN111884858A (zh) | 设备资产信息的校验方法、装置、系统和介质 | |
CN111400191A (zh) | 网页安全测试方法、装置及计算机可读存储介质 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 | |
US8291389B2 (en) | Automatically detecting non-modifying transforms when profiling source code | |
CN107291614B (zh) | 文件异常检测方法和电子设备 | |
WO2022116587A1 (zh) | Web端数据签名方法、装置及计算机设备 | |
CN113722225A (zh) | 页面测试方法、装置、计算机设备和存储介质 | |
CN114168108A (zh) | 代码合并方法、装置、电子设备和计算机可读存储介质 | |
CN112269583B (zh) | 设备运行异常文件升级处理方法、服务器和存储介质 | |
CN113064797B (zh) | 前端监控方法、装置、电子设备及存储介质 | |
CN114374727B (zh) | 基于人工智能的数据调用方法、装置、电子设备及介质 | |
CN115190008B (zh) | 故障处理方法、故障处理装置、电子设备及存储介质 | |
CN114844778B (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 |