CN118193270A - 程序保护方法、装置、计算机设备及存储介质 - Google Patents
程序保护方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN118193270A CN118193270A CN202410382313.1A CN202410382313A CN118193270A CN 118193270 A CN118193270 A CN 118193270A CN 202410382313 A CN202410382313 A CN 202410382313A CN 118193270 A CN118193270 A CN 118193270A
- Authority
- CN
- China
- Prior art keywords
- function
- application program
- abnormal
- determining
- calling
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000006870 function Effects 0.000 claims abstract description 224
- 230000002159 abnormal effect Effects 0.000 claims abstract description 74
- 230000007488 abnormal function Effects 0.000 claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 41
- 230000008569 process Effects 0.000 claims abstract description 35
- 230000015654 memory Effects 0.000 claims description 28
- 238000001514 detection method Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 230000005856 abnormality Effects 0.000 description 33
- 238000011084 recovery Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Retry When Errors Occur (AREA)
Abstract
本公开涉及计算机技术领域,公开了一种程序保护方法、装置、计算机设备及存储介质。本公开提供了一种程序保护方法,方法包括:当检测到应用程序发生运行异常时,生成对应的异常信息;通过所述异常信息,确定所述应用程序在调用多个函数的过程中出现调用异常的异常函数;通过所述应用程序的异常处理表,确定所述异常函数的调用规则,所述异常处理表用于记录在所述应用程序运行过程中,所述多个函数对应的调用规则;基于所述调用规则,从在所述异常函数之前被调用的函数中确定目标函数,并重新调用所述目标函数,以恢复所述应用程序的运行。能够有效提高恢复正常运行的概率,保障应用程序的稳定性,从而有助于提高数据的安全性。
Description
技术领域
本公开涉及计算机技术领域,具体涉及程序保护方法、装置、计算机设备及存储介质。
背景技术
相关技术中,应用程序在运行的过程中发生异常,通常是因为非法地址访问导致的。当应用程序出现异常时,需要中断运行,重新启动后才能恢复正常,进而会影响数据安全。
发明内容
有鉴于此,本公开提供了一种程序保护方法、装置、计算机设备及存储介质,以解决应用程序因异常而影响数据安全的问题。
第一方面,本公开提供了一种程序保护方法,方法包括:
当检测到应用程序发生运行异常时,生成对应的异常信息;
通过异常信息,确定应用程序在调用多个函数的过程中出现调用异常的异常函数;
通过应用程序的异常处理表,确定异常函数的调用规则,异常处理表用于记录在应用程序运行过程中,多个函数对应的调用规则;
基于调用规则,从在异常函数之前被调用的函数中确定目标函数,并重新调用目标函数,以恢复应用程序的运行。
第二方面,本公开提供了一种程序保护装置,装置包括:
第一处理模块,用于当检测到应用程序发生运行异常时,生成对应的异常信息;
第二处理模块,用于通过异常信息,确定应用程序在调用多个函数的过程中出现调用异常的异常函数;
第三处理模块,用于通过应用程序的异常处理表,确定异常函数的调用规则,异常处理表用于记录在应用程序运行过程中,多个函数对应的调用规则;
第四处理模块,用于基于调用规则,从在异常函数之前被调用的函数中确定目标函数,并重新调用目标函数,以恢复应用程序的运行。
第三方面,本公开提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的程序保护方法。
第四方面,本公开提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的程序保护方法。
第五方面,本发明提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的程序保护方法。
本实施例提供的程序保护方法,能够在当应用程序发生运行异常时,通过异常处理表明确多个函数在未发生运行异常时的先后调用顺序以及调用关系,进而在确定目标函数后,通过重新调用该目标函数的方式进行程序保护,能够有效提高恢复正常运行的概率,保障应用程序的稳定性,从而有助于提高数据的安全性。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开实施例的程序保护方法的流程示意图;
图2是根据本公开实施例的另一程序保护方法的流程示意图;
图3是根据本公开实施例的调用堆栈示意图;
图4是根据本公开实施例的又一程序保护方法的流程示意图;
图5是根据本公开实施例的程序保护装置的结构框图;
图6是本公开实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
相关技术中,应用程序在运行的过程中发生异常,通常是因为非法地址访问导致的。当应用程序出现异常时,需要中断运行,重新启动后才能恢复正常。但采用该种方式恢复应用程序的运行状态,会导致之前未保存的数据丢失或者损坏。例如:若在应用程序发生运行异常前存在未保存的数据,若强行重启应用程序则会导致该部分未保存的数据丢失。再例如:当应用程序发生运行异常时,正在执行的某些操作可能会因强行重启应用程序而对数据造成损坏或破坏。因此,采用该种方式恢复应用程序的运行状态会影响数据的安全性。
鉴于此,本公开实施例提供了一种程序保护方法,在应用程序运行的过程中,当检测到应用程序发生运行异常时,生成对应的异常信息,进而通过该异常信息,确定所述应用程序在调用多个函数的过程中出现调用异常的异常函数,以明确异常原因。通过所述应用程序的异常处理表,确定所述异常函数的调用规则,进而基于所述调用规则,从在所述异常函数之前被调用的函数中确定目标函数,并重新调用所述目标函数,以恢复所述应用程序的运行,从而有助于提高数据的安全性,降低应用程序的异常率。其中,所述异常处理表用于记录在所述应用程序运行过程中,所述多个函数对应的调用规则。
根据本公开实施例,提供了一种程序保护方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种程序保护方法,可用于上述的计算机设备,如手机、平板电脑等,图1是根据本公开实施例的程序保护方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,当检测到应用程序发生运行异常时,生成对应的异常信息。
异常信息是用于记录和提供应用程序在发生异常时的相关调试信息。异常信息的内容包括但不限于错误代码、异常类型、异常位置、调用堆栈等信息。异常信息可以以日志文件、异常报告或者堆栈跟踪等形式存在,在此不进行限定。
当检测到应用程序发生运行异常时,为便于快速定位发生运行异常的原因,则收集应用程序在异常状态下的相关调试信息,进而生成对应异常信息,以便后续可以通过该异常信息定位应用程序发生运行异常的原因,从而有助于后续进行针对性的调试和修复。其中,当应用程序发生运行异常时,可以是如下任意一种或者多种原因导致:运行崩溃、内存溢出、错误处理、网络故障等。
步骤S102,通过异常信息,确定应用程序在调用多个函数的过程中出现调用异常的异常函数。
异常函数是指在调用过程中存在调用异常,进而导致应用程序发生异常的函数。为确定异常函数,则对得到的异常信息进行针对性分析,以明确在应用程序未发生运行异常之前,针对多个函数进行调用的调用情况,进而将与发生运行异常时间最近的被调用的函数作为异常函数,从而后续可以基于该异常函数对应用程序的运行状态进行针对性修复,有助于降低二次异常的情况发生。
步骤S103,通过应用程序的异常处理表,确定异常函数的调用规则。
其中,异常处理表用于记录在应用程序运行过程中,多个函数对应的调用规则。多个函数是应用程序的基本构建块之一,用于定义应用程序所需执行的功能。例如:应用程序中的多个函数可以包括但不限于:登录函数、数据存储函数、图像处理函数等。即,在应用程序运行的过程中,是通过函数调用的方式实现待执行的功能。调用规则包括对应函数的调用顺序以及与其他函数之间的调用关系。
异常处理表中记录了应用程序中针对各种异常情况所注册的异常处理函数。不同异常处理函数用于处理不同特定类型的异常,并按照一定的顺序注册到异常处理表中。因此,通过分析异常处理表,可以得到异常处理函数的调用顺序和与其他函数之间的调用关系,进而得到异常函数的调用规则,以便后续可以根据该调用规则了解应用程序在运行异常发生前后,多个函数的上下文调用情况。
步骤S104,基于调用规则,从在异常函数之前被调用的函数中确定目标函数,并重新调用目标函数,以恢复应用程序的运行。
其中,根据该调用规则,可以确定在异常函数被调用之前,多个函数的先后调用情况,进而从中识别被调用后不会导致应用程序发生运行异常的函数,并将该函数作为目标函数。
重新调用该目标函数,以使应用程序可以通过尝试重新执行目标函数对应的功能的方式,恢复运行状态,进而有助于提高恢复正常运行的概率,从而有助于提升应用程序的稳定性。
本实施例提供的程序保护方法,能够在当应用程序发生运行异常时,通过异常处理表明确多个函数在未发生运行异常时的先后调用顺序以及调用关系,进而在确定目标函数后,通过重新调用该目标函数的方式进行程序保护,能够有效提高恢复正常运行的概率,保障应用程序的稳定性,从而有助于提高数据的安全性。
在本实施例中提供了一种程序保护方法,可用于上述的移动终端,如手机、平板电脑等,图2是根据本公开实施例的程序保护方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,当检测到应用程序发生运行异常时,生成对应的异常信息。详细请参见图1所示实施例的步骤S101,在此不再赘述。
步骤S202,通过异常信息,确定应用程序在调用多个函数的过程中出现调用异常的异常函数。详细请参见图1所示实施例的步骤S102,在此不再赘述。
步骤S203,通过应用程序的异常处理表,确定异常函数的调用规则。详细请参见图1所示实施例的步骤S103,在此不再赘述。
步骤S204,基于调用规则,从在异常函数之前被调用的函数中确定目标函数,并重新调用目标函数,以恢复应用程序的运行。
具体地,上述步骤S204包括:
步骤S2041,通过调用规则,确定异常函数对应的异常类型。
其中,通过调用规则可以明确异常函数的调用顺序以及与其他函数之间的先后调用关系。由于异常处理表是在应用程序开发的过程中生成的数据,因此,可以预先针对不同运行异常情况确定对应的可选异常类型,以及对应涉及的函数,进而在确定异常函数的情况,根据该异常函数的调用规则,可以从多个可选异常类型中快速确定异常函数对应的异常类型,从而有助于提高应用程序的鲁棒性和稳定性,以便可以加快解决运行异常的速度。其中,可选异常类型可以包括可以自行恢复的异常类型、不可自行恢复的异常类型。
对于可以自行恢复的异常类型,程序在遇到异常时可以通过一定的处理方式继续执行下去。例如,程序可以捕获异常并进行相应的处理,如重新尝试操作、降级处理或者通知用户等。在这种情况下,异常函数的调用规则可以帮助我们确定异常处理的优先级和逻辑流程。
步骤S2042,若异常类型为预设的目标异常类型,则从在异常函数之前被调用的函数中确定目标函数。
其中,预设的目标异常类型是指可以自行恢复的异常类型。因此,为确定当前是否可以使应用程序能够自主恢复运行状态,则确定该异常类型是否为目标异常类型。若异常类型为预设的目标异常类型,则表征应用程序可以自主恢复运行状态,因此,为降低应用程序再次发生运行异常的概率,则从在异常函数之前被调用的函数中确定目标函数。
在一些可选的实施方式中,上述步骤S2042包括:
步骤a1,若异常类型为预设的目标异常类型,则确定在异常函数之前被调用的函数对应的函数名称。
步骤a2,若函数名称中包括预设的目标关键字,则确定函数名称对应的函数为目标函数。
具体地,为保证应用程序的稳定性,则预设目标关键字,以利用该目标关键字识别在应用程序运行的过程中,被调用后相对不会出现运行异常的目标函数。
因此,当确定异常类型为预设的目标异常类型时,则确定在异常函数之前被调用的函数对应的函数名称,进而将函数名称中包含目标关键字的函数作为目标函数,从而后续通过重新调用目标函数的方式恢复应用程序的运行时,可以提高运行恢复的效率,降低再次发生运行异常的效率。
在一些可选地示例中,在异常函数之前被调用的函数的数量可以为多个。若存在多个函数名称中包括目标关键字的函数时,则根据各函数的被调用时间,将与异常函数被调用时间最接近的、且函数名称中包括目标关键字的函数作为目标函数,进而后续在恢复应用程序的运行状态时,可以减少待重复执行的功能,从而有助于提高运行恢复的效率,避免出现资源浪费和时间延迟的情况发生,以使恢复处理过程可以更加高效、便捷。
在另一些可选的实施方式中,上述步骤S2042还包括:
步骤a3,通过异常处理表,确定多个函数对应的调用堆栈。
其中,调用堆栈可以回溯各个函数在调用过程中的返回地址(Link Register,LR)以及被调用的调用地址。同一函数中包括多个指令,因此,调用地址与返回地址之间相差一个指令的长度。
在异常处理表中记载了每一个函数中的某条指令处的寄存器组到对应函数入口处的寄存器的映射关系。因此,为确定异常函数的返回地址,则通过异常处理表进行分析,进而可以得到如图3所示的调用堆栈。
其中,FP为函数指针(Function Pointer,也称函数入口),R19~R22分别表示不同的通用寄存器。通用寄存器是用于存储临时数据、变量和计算结果的寄存器,可以在计算过程中进行读取、写入和操作。通用寄存器与程序计数器(Program Counter,PC)、链接寄存器(Link Register)以及堆栈寄存器(Stack Register)均为中央处理器(CPU)的关键寄存器。
具体地,在调用函数时,链接寄存器用于保存下一条指令的地址,以便函数执行完毕后返回到正确的位置。堆栈寄存器用于维护函数调用栈的状态,包括保存函数参数、局部变量和临时数据等。其中,链接寄存器是一种用于存储函数调用后返回地址的寄存器。当一个函数被调用时,当前函数的返回地址会被保存到链接寄存器中,以便在函数执行完毕后返回到正确的位置。链接寄存器的值在函数调用过程中被保存和恢复,通常由编译器和相关的调用约定来管理。堆栈寄存器是一种用于管理函数调用和局部变量的寄存器。堆栈是一种后进先出(LIFO)的数据结构,用于存储函数调用的临时数据和局部变量。堆栈寄存器存储当前堆栈的顶部地址,当函数被调用时,堆栈寄存器的值会被更新以指向新的堆栈帧。在函数返回时,堆栈寄存器的值会被恢复到之前的堆栈帧,以便继续执行上一级函数。
在函数执行完毕后,链接寄存器中保存的返回地址被加载,以便程序可以返回到调用该函数的位置。堆栈寄存器的值被恢复到上一级函数的堆栈帧,以继续执行上一级函数。
例如:假设某条指令处的寄存器组为Ax,入口处的寄存器组为A0,则异常处理表的表项就是他们的转换关系Fa()。因此,A0=Fa(Ax),这样,通过Ax和Fa(),就能得出A0。从A0寄存器组中,将LR值-1指令长度,得出调用A()点的地址,把它作为PC,得出Bx,Bx和A0只有PC不同,其他都相同,因此能得到完整的Bx。通过Bx和Fb(),算得Fb(Bx)=B0。同理,可以得到Cx、Fc及C0,从而可以回溯各个函数的调用顺序以及相互之间的调用关系。
步骤a4,根据目标异常类型,确定目标函数在调用堆栈中的待调用层级,以在待调用层级中重新调用目标函数。
其中,由于在应用程序运行的过程中,寄存器的调用位置会发生改变,因此,通过如图3所示的调用堆栈,可以明确栈中各个函数在被调用时申请的栈帧,以及栈帧中每一个函数入口处的寄存器组。
因此,在确定异常类型为目标异常类型时,根据目标函数在运行异常前的调用过程,确定目标函数在调用堆栈中的待调用层级,以根据目标函数在该待调用层级中的返回地址重新调用目标函数,进而提高函数调用的准确性,降低无效恢复的情况发生。待调用层级可以是预先指定的层级,也可以是调用异常函数所在层级的上一层级。
在一些可选的实施方式中,上述步骤a4包括:
步骤a41,确定应用程序在指定时长内的重启次数。
步骤a42,若重启次数小于或者等于预设阈值,则获取目标函数在上一次被调用的上一待调用层级,并将上一待调用层级作为目标函数在调用堆栈中的待调用层级。
具体地,为降低无效恢复的情况发生,则监测应用程序在指定时长内的重启次数,以根据重启次数确定应用程序的运行恢复情况。
预设阈值是指允许被反复重启的最大次数,若重启次数小于或者等于预设阈值,则表征目标函数在上一次被调用的上一待调用层级是有效层级,因此,在本次尝试运行恢复时,仍可采用上一待调用层级作为本次目标函数在调用堆栈中的待调用层级。
在一些可选的实施方式中,上述步骤a4还包括:
步骤a43,若重启次数大于预设阈值,则基于目标函数的调用规则以及上一待调用层级,确定目标函数在调用堆栈中的待调用层级。
其中,若重启次数大于预设阈值,则表征目标函数在上一次被调用的上一待调用层级是无效层级,若继续从上一待调用层级中调用目标函数,仍会导致应用程序再次发生运行异常的情况,因此,为降低运行异常率,则基于目标函数的调用规则以及上一待调用层级,确定目标函数在调用堆栈中的待调用层级,以使应用程序可以尽快恢复正常运行。
在一些可选的示例中,本次确定的待调用层级位于上一待调用层级之上。即,若上一待调用层级是+1层,则本次确定的待调用层级为+2层,+2层的调用顺序早于+1层的调用顺序。
在一些可选的实施方式中,若异常类型不是目标异常类型,则表征本次运行异常的异常类型是不可自行恢复的异常类型。因此,退出应用程序,以使用户可以通过手动重启的方式,促使应用程序可以恢复运行。为便于应用程序的开发者可以基于运行异常的问题进行针对性的维护和调试,则上报异常信息,以便可以充分了解应用程序在运行异常前后的函数调用情况。
步骤S2043,重新调用目标函数,以恢复应用程序的运行。
本实施例提供的程序保护方法,能够基于异常函数对应的异常类型快速定位导致运行异常的原因,进而当确定异常类型为预设的目标异常类型时,通过重新调用目标函数的方式恢复所述应用程序的运行,能够有效提高恢复效率,保障应用程序的稳定性。
在本实施例中提供了一种程序保护方法,可用于上述的移动终端,如手机、平板电脑等,图4是根据本公开实施例的程序保护方法的流程图,如图4所示,该流程包括如下步骤:
步骤S401,当检测到应用程序发生运行异常时,生成对应的异常信息。
步骤S402,通过异常信息,确定应用程序在调用多个函数的过程中出现调用异常的异常函数。
步骤S403,通过应用程序的异常处理表,确定异常函数的调用规则。
步骤S404,基于调用规则,从在异常函数之前被调用的函数中确定目标函数,并重新调用目标函数,以恢复应用程序的运行。
步骤S405,检测应用程序的运行状态,得到检测结果。
其中,为确定应用程序的恢复情况,则检测应用程序的运行状态,进而得到检测结果。
步骤S406,若检测结果为应用程序未恢复运行,则重启应用程序,并上报异常信息。
其中,若检测结果为应用程序未恢复运行,则表征导致运行异常的问题仍然存在,因此,为使应用程序可以恢复运行,且便于应用程序的开发者可以基于运行异常的问题进行针对性的维护和调试,则上报异常信息,以便可以充分了解应用程序在运行异常前后的函数调用情况。
步骤S407,若检测结果为应用程序恢复运行,则继续运行应用程序。
其中,若检测结果为应用程序恢复运行,则表征导致运行异常的问题已被解决,应用程序可以正常运行,因此,控制应用程序继续运行,以保障应用程序的稳定性。
本实施例提供的程序保护方法,能够基于应用程序的运行状态,灵活采用不同的方式进行处理,以达到降低应用程序的异常率的目的,从而有助于提高应用程序的稳定性,有利于保障数据的安全性。
作为本公开实施例的一个或多个具体应用实施例,以应用程序发生运行异常是因为运行崩溃导致的为例,对应用程序进行程序保护的过程如下:
在应用程序运行的过程中,当检测到应用程序发生运行崩溃时,生成对应的崩溃信息。通过崩溃信息,确定应用程序在调用多个函数的过程中出现调用异常的异常函数。利用应用程序的异常处理表,识别异常函数对应的崩溃类型,进而在确定崩溃类型为目标崩溃类型时,通过关键词匹配的方式,从在异常函数之前被调用的函数中确定目标函数,并重新调用目标函数,以恢复应用程序的运行。
若恢复失败,则上报崩溃信息。
在本实施例中还提供了一种程序保护装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种程序保护装置,如图5所示,包括:
第一处理模块501,用于当检测到应用程序发生运行异常时,生成对应的异常信息;
第二处理模块502,用于通过异常信息,确定应用程序在调用多个函数的过程中出现调用异常的异常函数;
第三处理模块503,用于通过应用程序的异常处理表,确定异常函数的调用规则,异常处理表用于记录在应用程序运行过程中,多个函数对应的调用规则;
第四处理模块504,用于基于调用规则,从在异常函数之前被调用的函数中确定目标函数,并重新调用目标函数,以恢复应用程序的运行。
在一些可选的实施方式中,第四处理模块504包括:
第一确定单元,用于通过调用规则,确定异常函数对应的异常类型;
第二确定单元,用于若异常类型为预设的目标异常类型,则从在异常函数之前被调用的函数中确定目标函数。
在一些可选的实施方式中,第四处理模块504包括:
第三确定单元,用于确定在异常函数之前被调用的函数对应的函数名称;
第四确定单元,用于若函数名称中包括预设的目标关键字,则确定函数名称对应的函数为目标函数。
在一些可选的实施方式中,第四处理模块504还包括:
第五确定单元,用于通过异常处理表,确定多个函数对应的调用堆栈;
第六确定单元,用于根据目标异常类型,确定目标函数在调用堆栈中的待调用层级,以在待调用层级中重新调用目标函数。
在一些可选的实施方式中,第六确定单元包括:
第一执行单元,用于确定应用程序在指定时长内的重启次数;
第二执行单元,用于若重启次数小于或者等于预设阈值,则获取目标函数在上一次被调用的上一待调用层级,并将上一待调用层级作为目标函数在调用堆栈中的待调用层级。
在一些可选的实施方式中,第六确定单元还包括:
第三执行单元,用于若重启次数大于预设阈值,则基于目标函数的调用规则以及上一待调用层级,确定目标函数在调用堆栈中的待调用层级。
在一些可选的实施方式中,本次确定的待调用层级位于上一待调用层级之上。
在一些可选的实施方式中,装置还包括:
检测模块,用于检测应用程序的运行状态,得到检测结果;
第五处理模块,用于若检测结果为应用程序未恢复运行,则重启应用程序,并上报异常信息;
第六处理模块,用于若检测结果为应用程序恢复运行,则继续运行应用程序。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的程序保护装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本公开实施例还提供一种计算机设备,具有上述图5所示的程序保护装置。
请参阅图6,图6是本公开可选实施例提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器20存储有可由至少一个处理器10执行的指令,以使所述至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括输入装置30和输出装置40。处理器10、存储器20、输入装置30和输出装置40可以通过总线或者其他方式连接,图6中以通过总线连接为例。
输入装置30可接收输入的数字或字符信息,以及产生与该计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等。输出装置40可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。
本公开实施例还提供了一种计算机可读存储介质,上述根据本公开实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或通信介质。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
虽然结合附图描述了本公开的实施例,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (12)
1.一种程序保护方法,其特征在于,所述方法包括:
当检测到应用程序发生运行异常时,生成对应的异常信息;
通过所述异常信息,确定所述应用程序在调用多个函数的过程中出现调用异常的异常函数;
通过所述应用程序的异常处理表,确定所述异常函数的调用规则,所述异常处理表用于记录在所述应用程序运行过程中,所述多个函数对应的调用规则;
基于所述调用规则,从在所述异常函数之前被调用的函数中确定目标函数,并重新调用所述目标函数,以恢复所述应用程序的运行。
2.根据权利要求1所述的方法,其特征在于,所述基于所述调用规则,从在所述异常函数之前被调用的函数中确定目标函数,包括:
通过所述调用规则,确定所述异常函数对应的异常类型;
若所述异常类型为预设的目标异常类型,则从在所述异常函数之前被调用的函数中确定目标函数。
3.根据权利要求1或2所述的方法,其特征在于,所述从在所述异常函数之前被调用的函数中确定目标函数,包括:
确定在所述异常函数之前被调用的函数对应的函数名称;
若所述函数名称中包括预设的目标关键字,则确定所述函数名称对应的函数为目标函数。
4.根据权利要求3所述的方法,其特征在于,所述从在所述异常函数之前被调用的函数中确定目标函数,还包括:
通过所述异常处理表,确定所述多个函数对应的调用堆栈;
根据所述目标异常类型,确定所述目标函数在所述调用堆栈中的待调用层级,以在所述待调用层级中重新调用所述目标函数。
5.根据权利要求4所述的方法,其特征在于,所述确定所述目标函数在所述调用堆栈中的待调用层级,包括:
确定所述应用程序在指定时长内的重启次数;
若所述重启次数小于或者等于预设阈值,则获取所述目标函数在上一次被调用的上一待调用层级,并将所述上一待调用层级作为所述目标函数在所述调用堆栈中的待调用层级。
6.根据权利要求5所述的方法,其特征在于,所述确定所述目标函数在所述调用堆栈中的待调用层级,还包括:
若所述重启次数大于所述预设阈值,则基于所述目标函数的调用规则以及所述上一待调用层级,确定所述目标函数在所述调用堆栈中的待调用层级。
7.根据权利要求6所述的方法,其特征在于,本次确定的待调用层级位于所述上一待调用层级之上。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述应用程序的运行状态,得到检测结果;
若所述检测结果为所述应用程序未恢复运行,则重启所述应用程序,并上报所述异常信息;
若所述检测结果为所述应用程序恢复运行,则继续运行所述应用程序。
9.一种程序保护装置,其特征在于,所述装置包括:
第一处理模块,用于当检测到应用程序发生运行异常时,生成对应的异常信息;
第二处理模块,用于通过所述异常信息,确定所述应用程序在调用多个函数的过程中出现调用异常的异常函数;
第三处理模块,用于通过所述应用程序的异常处理表,确定所述异常函数的调用规则,所述异常处理表用于记录在所述应用程序运行过程中,所述多个函数对应的调用规则;
第四处理模块,用于基于所述调用规则,从在所述异常函数之前被调用的函数中确定目标函数,并重新调用所述目标函数,以恢复所述应用程序的运行。
10.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至8中任一项所述的程序保护方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至8中任一项所述的程序保护方法。
12.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令用于使计算机执行权利要求1至8中任一项所述的程序保护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410382313.1A CN118193270A (zh) | 2024-03-29 | 2024-03-29 | 程序保护方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410382313.1A CN118193270A (zh) | 2024-03-29 | 2024-03-29 | 程序保护方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118193270A true CN118193270A (zh) | 2024-06-14 |
Family
ID=91414977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410382313.1A Pending CN118193270A (zh) | 2024-03-29 | 2024-03-29 | 程序保护方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118193270A (zh) |
-
2024
- 2024-03-29 CN CN202410382313.1A patent/CN118193270A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7908521B2 (en) | Process reflection | |
EP3036633B1 (en) | Cloud deployment infrastructure validation engine | |
KR100868762B1 (ko) | 임베디드용 소프트웨어의 오류 검출 방법 | |
US9857998B2 (en) | Backup storage of vital debug information | |
US20160179655A1 (en) | Automatic Switch To Debugging Mode | |
CN113805925A (zh) | 分布式集群管理软件的在线升级方法、装置、设备及介质 | |
CN115543740A (zh) | 业务运行异常监控方法、系统、设备及存储介质 | |
JP2019159729A (ja) | 故障予測システム | |
CN107818034B (zh) | 监测计算机设备中的进程的运行空间的方法以及装置 | |
CN110990179B (zh) | 一种任务处理方法、装置及设备 | |
CN117170806A (zh) | 虚拟机运行稳定性增强的方法、装置、电子设备及介质 | |
US10783027B2 (en) | Preemptive crash data capture | |
US8689206B2 (en) | Isolating operating system in-memory modules using error injection | |
WO2023240944A1 (zh) | 数据恢复方法、装置、电子设备及存储介质 | |
CN118193270A (zh) | 程序保护方法、装置、计算机设备及存储介质 | |
CN107273291B (zh) | 一种处理器调试方法及系统 | |
CN112925675B (zh) | 用于小程序的恢复方法和装置 | |
CN115309585A (zh) | 数据恢复方法、装置、电子设备及存储介质 | |
CN110908869B (zh) | 一种应用程序数据监控方法、装置、设备及储存介质 | |
CN114116330A (zh) | 服务器性能测试方法、系统、终端及存储介质 | |
CN114184885A (zh) | 一种故障检测方法、装置及存储介质 | |
CN111427623A (zh) | 程序退出方法、装置、计算机设备和存储介质 | |
JP2012108848A (ja) | 動作ログ収集システム及びプログラム | |
CN117971564B (zh) | 数据恢复方法、装置、计算机设备及存储介质 | |
CN117116332B (zh) | 一种多比特错误处理方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |