防止外挂的方法、装置、终端及存储介质与流程

文档序号:16249736发布日期:2018-12-11 23:54阅读:453来源:国知局
防止外挂的方法、装置、终端及存储介质与流程

本发明涉及互联网技术领域,特别涉及一种防止外挂的方法、装置、终端及存储介质。

背景技术

随着网络技术的发展,游戏应用程序日渐普及,很多游戏应用程序中,用户可以通过开外挂的方式,为自己在游戏中的游戏对象增加一些特权,例如,游戏中,未开外挂时游戏对象迈一步的长度仅为1米,开外挂时,游戏对象迈一步的长度可达100米,显然,开外挂的方式严重影响了游戏的公平性。

本领域中,一般通过防止调试的方式,防止想开外挂的人员通过外挂动态分析应用程序,也即是,终端检测调试器端口是否被调用,从而防止通过调用调试器端口调式该应用程序。然而,相关技术中,一般通过设置程序断点的方式开外挂,也即是,终端基于应用程序中的需要修改的一段程序代码,在该段程序对应的内存地址中写入断点特征值,从而成功在该应用程序设置程序断点。当终端启动该应用程序时,该运行到该目标程序段,停止运行,开外挂人员即可在该处分析修改该应用程序。显然,上述对于防止调试的方式,仅能检测出开外挂人员是否通过调试器端口对应用程序进行调试,并不能检测出应用程序中的程序断点。因此,目前亟需一种防止外挂的方法,以防止通过写入断点特征值的方式开外挂。



技术实现要素:

本发明实施例提供了一种防止外挂的方法、装置、终端及存储介质,可以解决相关技术中不能防止通过写入断点特征值的方式开外挂的问题。所述技术方案如下:

一方面,提供了一种防止外挂的方法,所述方法包括:

当接收到校验指令时,获取目标字符串,将所述目标字符串写入第一地址中,所述目标字符串为校验函数转换后的字符串,所述校验函数用于校验目标应用程序中是否存在程序断点;

将所述目标字符串转换为所述校验函数;

通过所述校验函数,对所述目标应用程序进行校验,得到校验结果;

当基于所述校验结果确定所述目标应用程序中存在程序断点时,中断运行所述目标应用程序。

可选的,所述校验指令的触发时间为任一时间,所述第一地址为所述终端中任一大小为预设阈值的存储空间对应的地址,所述预设阈值的数值不小于所述校验函数所占存储空间的大小。

可选的,所述获取目标字符串,将所述目标字符串写入第一地址中之前,所述方法还包括:

根据所述目标字符串的大小,为所述目标字符串分配第一地址,所述第一地址的存储空间大小不小于所述目标字符串的大小。

可选的,所述校验函数为填充数据shellcode校验函数,所述获取所述目标字符串之前,所述方法还包括:

构建shellcode校验函数,所述shellcode校验函数用于通过回调预设校验算法对所述目标应用程序进行校验;

将所述shellcode校验函数转换为所述目标字符串,对所述目标字符串进行加密处理。

可选的,所述构建shellcode校验函数之后,所述方法还包括:

将第二地址、回调函数和第三地址写入所述shellcode校验函数中,所述第二地址为所述目标应用程序的存储地址,所述第三地址为所述预设校验算法的存储地址;

在写入后的shellcode校验函数中,通过回调函数,基于所述第二地址,调用所述预设校验算法;

通过所述预设校验算法,对所述目标应用程序进行校验,得到初始校验结果。

可选的,所述通过所述校验函数,对所述目标应用程序进行校验,得到校验结果之前,所述方法还包括:

根据第二地址、回调函数和第三地址,构建校验结构体,所述第二地址为所述目标应用程序的存储地址,所述第三地址为预设校验算法的存储地址;

将所述校验结构体写入所述校验函数中。

可选的,所述基于写入所述校验结构体的校验函数进行校验的过程为:将所述第三地址作为所述回调函数的参数,通过所述回调函数,调用所述预设校验算法,通过所述预设校验算法对所述目标应用程序进行校验,得到所述校验结果。

可选的,所述通过所述校验函数,对所述目标应用程序进行校验,得到校验结果包括:

通过自实现函数,获取所述目标应用程序的多个区块;

遍历出所述多个区块中待校验的多个目标区块;

通过所述校验函数,对所述多个目标区块进行校验,得到每个区块的校验结果。

可选的,所述通过所述校验函数,对所述目标应用程序进行校验,得到校验结果之后,所述方法还包括:

当所述校验结果与所述目标应用程序的初始校验结果不匹配时,确定所述目标应用程序中存在程序断点,所述初始校验结果为对不存在程序断点的目标应用程序进行校验的结果;

当所述校验结果与所述初始校验结果匹配时,确定所述目标应用程序中不存在程序断点。

可选的,所述通过所述校验函数,对所述目标应用程序进行校验,得到校验结果之后,所述方法还包括:

向服务器发送所述校验结果;

删除所述校验函数,释放所述第一地址。

一方面,提供了一种防止外挂的装置,所述装置包括:

获取模块,用于当接收到校验指令时,获取目标字符串,将所述目标字符串写入第一地址中,所述目标字符串为校验函数转换后的字符串,所述校验函数用于校验目标应用程序中是否存在程序断点;

转换模块,用于将所述目标字符串转换为所述校验函数;

校验模块,用于通过所述校验函数,对所述目标应用程序进行校验,得到校验结果;

中断模块,用于当基于所述校验结果确定所述目标应用程序中存在程序断点时,中断运行所述目标应用程序。

可选的,所述校验指令的触发时间为任一时间,所述第一地址为所述终端中任一大小为预设阈值的存储空间对应的地址,所述预设阈值的数值不小于所述校验函数所占存储空间的大小。

可选的,所述装置还包括:

分配模块,用于根据所述目标字符串的大小,为所述目标字符串分配第一地址,所述第一地址的存储空间大小不小于所述目标字符串的大小。

可选的,所述校验函数为填充数据shellcode校验函数,所述装置还包括:

第一构建模块,用于构建shellcode校验函数,所述shellcode校验函数用于通过回调预设校验算法对所述目标应用程序进行校验;

转换模块,用于将所述shellcode校验函数转换为所述目标字符串,对所述目标字符串进行加密处理。

可选的,所述装置还包括:

调用模块,用于将第二地址、回调函数和第三地址写入所述shellcode校验函数中,所述第二地址为所述目标应用程序的存储地址,所述第三地址为所述预设校验算法的存储地址;在写入后的shellcode校验函数中,通过回调函数,基于所述第二地址,调用所述预设校验算法;

校验模块,用于通过所述预设校验算法,对所述目标应用程序进行校验,得到初始校验结果。

可选的,所述装置还包括:

第二构建模块,用于根据第二地址、回调函数和第三地址,构建校验结构体,所述第二地址为所述目标应用程序的存储地址,所述第三地址为预设校验算法的存储地址;

写入模块,用于将所述校验结构体写入所述校验函数中。

可选的,所述基于写入所述校验结构体的校验函数进行校验的过程为:将所述第三地址作为所述回调函数的参数,通过所述回调函数,调用所述预设校验算法,通过所述预设校验算法对所述目标应用程序进行校验,得到所述校验结果。

可选的,所述校验模块,包括:

获取单元,用于通过自实现函数,获取所述目标应用程序的多个区块;

遍历单元,用于遍历出所述多个区块中待校验的多个目标区块;

校验单元,用于通过所述校验函数,对所述多个目标区块进行校验,得到每个区块的校验结果。

可选的,所述装置还包括:

确定模块,用于当所述校验结果与所述目标应用程序的初始校验结果不匹配时,确定所述目标应用程序中存在程序断点,所述初始校验结果为对不存在程序断点的目标应用程序进行校验的结果;

所述确定模块,还用于当所述校验结果与所述初始校验结果匹配时,确定所述目标应用程序中不存在程序断点。

可选的,所述装置还包括:

发送模块,用于向服务器发送所述校验结果;

删除模块,用于删除所述校验函数,释放所述第一地址。

一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述的防止外挂方法所执行的操作。

一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上述的防止外挂方法所执行的操作。

本发明实施例提供的技术方案带来的有益效果是:

通过当接收到校验指令时,终端获取目标字符串,将该目标字符串写入第一地址中,该目标字符串为校验函数转换后的字符串,该校验函数用于校验目标应用程序中是否存在程序断点;终端将该目标字符串转换为该校验函数;通过该校验函数,对该目标应用程序进行校验,得到校验结果;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,从而保证了该目标应用程序能够正常运行,在该目标应用程序在被篡改的情况下,通过终端运行,防止了该目标应用程序被开外挂的可能,保证了目标应用程序的安全性。

并且,通过基于该校验函数进行动态校验的过程,使得每次校验都是随机进行,通过目标字符串,保证了校验函数不可以随意篡改;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,进一步保证了目标应用程序的安全性和可靠性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种防止外挂的方法流程图;

图2是本发明实施例提供的一种防止外挂的方法流程图;

图3是本发明实施例提供的一种目标字符串的示意图;

图4是本发明实施例提供的一种加密后的目标字符串的示意图;

图5是本发明实施例提供的一种防止外挂的装置的结构示意图;

图6是本发明实施例提供的一种终端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例提供的一种防止外挂的方法流程图。该发明实施例的执行主体为终端,参见图1,该方法包括:

101、当接收到校验指令时,获取目标字符串,将该目标字符串写入第一地址中。

其中,该目标字符串为校验函数转换后的字符串,该校验函数用于校验目标应用程序中是否存在程序断点;

102、将该目标字符串转换为该校验函数;

103、通过该校验函数,对该目标应用程序进行校验,得到校验结果;

104、当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序。

可选的,该校验指令的触发时间为任一时间,该第一地址为该终端中任一大小为预设阈值的存储空间对应的地址,该预设阈值的数值不小于该校验函数所占存储空间的大小。

可选的,该获取目标字符串,将该目标字符串写入第一地址中之前,该方法还包括:

根据该目标字符串的大小,为该目标字符串分配第一地址,该第一地址的存储空间大小不小于该目标字符串的大小。

可选的,该校验函数为填充数据shellcode校验函数,该获取该目标字符串之前,该方法还包括:

构建shellcode校验函数,该shellcode校验函数用于通过回调预设校验算法对该目标应用程序进行校验;

将该shellcode校验函数转换为该目标字符串,对该目标字符串进行加密处理。

可选的,该构建shellcode校验函数之后,该方法还包括:

将第二地址、回调函数和第三地址写入该shellcode校验函数中,该第二地址为该目标应用程序的存储地址,该第三地址为该预设校验算法的存储地址;

在写入后的shellcode校验函数中,通过回调函数,基于该第二地址,调用该预设校验算法;

通过该预设校验算法,对该目标应用程序进行校验,得到初始校验结果。

可选的,该通过该校验函数,对该目标应用程序进行校验,得到校验结果之前,该方法还包括:

根据第二地址、回调函数和第三地址,构建校验结构体,该第二地址为该目标应用程序的存储地址,该第三地址为预设校验算法的存储地址;

将该校验结构体写入该校验函数中。

可选的,该基于写入该校验结构体的校验函数进行校验的过程为:将该第三地址作为该回调函数的参数,通过该回调函数,调用该预设校验算法,通过该预设校验算法对该目标应用程序进行校验,得到该校验结果。

可选的,该通过该校验函数,对该目标应用程序进行校验,得到校验结果包括:

通过自实现函数,获取该目标应用程序的多个区块;

遍历出该多个区块中待校验的多个目标区块;

通过该校验函数,对该多个目标区块进行校验,得到每个区块的校验结果。

可选的,该通过该校验函数,对该目标应用程序进行校验,得到校验结果之后,该方法还包括:

当该校验结果与该目标应用程序的初始校验结果不匹配时,确定该目标应用程序中存在程序断点,该初始校验结果为对不存在程序断点的目标应用程序进行校验的结果;

当该校验结果与该初始校验结果匹配时,确定该目标应用程序中不存在程序断点。

可选的,该通过该校验函数,对该目标应用程序进行校验,得到校验结果之后,该方法还包括:

向服务器发送该校验结果;

删除该校验函数,释放该第一地址。

本发明实施例中,当接收到校验指令时,终端获取目标字符串,将该目标字符串写入第一地址中,该目标字符串为校验函数转换后的字符串,该校验函数用于校验目标应用程序中是否存在程序断点;终端将该目标字符串转换为该校验函数;通过该校验函数,对该目标应用程序进行校验,得到校验结果;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,从而保证了该目标应用程序能够正常运行,在该目标应用程序在被篡改的情况下,通过终端运行,防止了该目标应用程序被开外挂的可能,保证了目标应用程序的安全性。

并且,通过基于该校验函数进行动态校验的过程,使得每次校验都是随机进行,通过目标字符串,保证了校验函数不可以随意篡改;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,进一步保证了目标应用程序的安全性和可靠性。

图2是本发明实施例提供的一种防止外挂的方法流程图。该发明实施例的执行主体为终端,参见图2,该方法包括:

201、当接收到校验指令时,终端根据该目标字符串的大小,为该目标字符串分配第一地址。

其中,该第一地址的存储空间大小不小于该目标字符串的大小,该目标字符串为校验函数转换后的字符串,该校验函数用于校验目标应用程序中是否存在程序断点;其中,该目标字符串还可以为由校验函数转换、并经过预设加密算法加密后的字符串。本发明实施例中,当终端接收到校验指令时,该终端可以基于预设阈值,为校验函数分配该预设阈值大小的存储空间,并获取该预设阈值大小的存储空间的第一地址。其中,该预设阈值的数值不小于该校验函数所占存储空间的大小。

其中,该校验指令的触发时间为任一时间。也即是,该校验指令可以由终端在任一时间进行触发。该第一地址为该终端中任一大小为预设阈值的存储空间对应的地址,也即是,终端为该校验函数随机分配一个地址。在一种可能的实施方式中,该终端可以事先基于待使用的校验函数的大小,将该预设阈值设置为不小于该校验函数所占存储空间的大小,以便于后续终端获取到校验函数时,能够将该校验函数写入该第一地址。

其中,该预设阈值、该预设加密算法可以基于需要进行设置,本发明实施例对该预设阈值并不做具体限定。例如,该预设加密算法可以为aes(advancedencryptionstandard,高级加密标准)加密算法。

进一步的,该终端可以将该第一地址的存储属性设置为:可执行、可读取、可写入,从而使得该第一地址具有代码段属性,终端可以对该目标字符串进行解密,将该解密后的目标字符串写入该第一地址,并将该第一地址强制转换为由目标字符串转换的校验函数的存储地址,从而可以在该第一地址中执行该校验函数。

其中,该终端可以通过强制转化程序对该第一地址进行转换,将该第一地址强制转换为校验函数的存储地址。该强制转换程序为任一可以强制将该第一地址转换为校验函数的存储地址的程序,本发明实施例对该强制转换程序并不做具体限定。例如,该强制转换程序可以如下:

pfn_checksectionpcs=

(pfn_checksection)decryptshellcode();

需要说明的是,由于终端将该校验指令的触发时间设置为任一时间,因此,该终端可以不定时的对目标应用程序进行校验,防止想开外挂的人员对该目标应用程序的校验过程进行修改,进一步保障了该目标应用程序的安全性。

202、终端获取目标字符串,将该目标字符串写入该第一地址中。

本发明实施例中,终端以字符串的形式存储该校验函数,该终端基于该目标字符串的存储地址,获取该目标字符串,并将该目标字符串复制到该第一地址对应的存储空间中。在一种可能的实施方式中,该目标字符串为加密后的字符串,该终端还可以通过解密密钥,对该目标字符串进行解密,将解密后的目标字符串存储至该第一地址对应的存储空间中。

需要说明的是,本发明实施例中,该校验函数可以为shellcode(填充数据)校验函数,终端在获取目标字符串之前,可以事先基于shellcode校验函数,生成该目标字符串,该过程可以为:终端构建shellcode校验函数,将该shellcode校验函数转换为目标字符串,对该目标字符串进行加密处理。其中,该shellcode校验函数用于通过回调预设校验算法对该目标应用程序进行校验。

其中,该终端可以根据该写入shellcode校验函数的存储地址,从初始地址开始,遍历该shellcode校验函数,直至遍历到结束地址,生成该shellcode校验函数对应的目标字符串,该目标字符串可以为机器码形式的字符数据。

其中,该终端可以通过预设加密算法,对该目标字符串进行加密处理。该终端还可以将加密后的目标字符串转换为全局字符列表。其中,该预设加密算法可以基于需要进行设置,本发明实施例对此不作具体限定。例如,该预设加密算法可以为aes(advancedencryptionstandard,高级加密标准)加密算法。

进一步的,该终端还可以将该第一地址强制转换为由目标字符串转换的校验函数的存储地址,从而可以在该第一地址中执行该校验函数。

如图3所示,该目标字符串可以为十六进制的数据,进行加密后的变成如图4所示的十六进制的数据。显然,相对于加密前,加密后的十六进制数据为打乱后的数据,从而进一步保证了校验函数的安全性。

需要说明的是,由于将加密后的目标字符串转换为全局字符列表,也即是加密后的shellcode机器码,该全局字符列表以全局变量的形式进行存储,并不存储在可执行代码区块中,所以即使想开外挂的人员通过静态分析工具来分析函数列表,也无法找到shellcode校验函数。并且,由于全局变量的形式是分散的字符列表,所以想开外挂的人员通过字符串列表也无法找到shellcode校验函数。同时,由于经过aes加密算法进行加密,该加密后的shellcode校验函数得大小和内容都已改变,更无法让人联想这是一个校验函数,从而层层保护了该shellcode校验函数的安全性和严密性,进一步防止了外挂。

进一步的,由于每次执行校验过程时,终端都会动态随机分配一个地址,从而保证每次校验函数的地址都是随机的,仅一步增强了校验函数的隐蔽性,保证了目标应用程序的安全性。

本发明实施例中,终端可以在生成应用程序时,构建该shellcode校验函数,从而可以基于该shellcode校验函数,得到初始校验结果,由于该初始校验结果为刚生成应用程序时的校验结果,是不存在程序断点的目标应用程序对应的校验结果。因此,以便于后续基于该初始校验结果,判断当前的校验结果是否正确。其中,终端构建shellcode校验函数之后,该终端基于该shellcode校验函数,得到初始校验结果的过程可以为:终端将第二地址、回调函数和第三地址写入该shellcode校验函数中;其中,该第二地址为该目标应用程序的存储地址,该第三地址为预设校验算法的存储地址。终端在写入后的shellcode校验函数中,通过回调函数,基于该第二地址,调用该预设校验算法;通过该预设校验算法,对该目标应用程序进行校验,得到初始校验结果。

其中,终端将第二地址、回调函数和第三地址写入该shellcode校验函数中的步骤可以为:终端根据该第二地址、该回调函数和该第三地址,构建校验结构体,将该校验结构体写入该shellcode校验函数中。

203、终端将该目标字符串转换为该校验函数。

本步骤中,终端获取该目标字符串后,在第一地址对应的存储空间中,强制将该目标字符串转换为shellcode校验函数,该shellcode校验函数实际上是一个临时的shellcode校验函数。

204、终端通过该校验函数,对该目标应用程序进行校验,得到校验结果。

本步骤中,该目标应用程序可以包括在多个区块,终端可以通过自实现函数,获取该目标应用程序的多个区块,终端遍历出该多个区块中待校验的多个目标区块,通过该校验函数,对该多个目标区块进行校验,得到每个区块的校验结果。其中,该待校验的目标区块可以为该多个区块中的可执行、可读取、可写入并且不可抛弃的区块。

进一步的,该终端将该校验结果存储至校验列表中,该校验列表用于存储多个目标区块校验的校验结果。

需要说明的是,在目标应用程序包括的多个区块中,在一些不可执行或者不可读写的区块中,想开外挂的人员并不能写入程序断点,因此,终端可以仅获取目标区块进行校验,从而节省了校验过程所占的存储空间,提高了校验的效率。

在一种可能的实施方式中,终端可以将待使用的预设校验算法,以及校验过程所需的参数,以结构体的形式传入该校验函数中进行校验,该过程可以为:终端根据该校验函数进行校验之前,该终端根据该第二地址、该回调函数和该第三地址,构建校验结构体,该第二地址为该目标应用程序的存储地址,该第三地址为预设校验算法的存储地址;将该校验结构体写入该校验函数中。

其中,该终端通过该校验函数,对该目标应用程序进行校验的过程,也即是终端基于写入该校验结构体的校验函数进行校验的过程。该过程可以为:终端将该第三地址作为该回调函数的参数,通过该回调函数,调用该预设校验算法,通过该预设校验算法对该目标应用程序进行校验,得到该校验结果。

其中,该预设校验算法的数量可以有一个,也可以由多个,该预设校验算法可以为crc(cyclicredundancycheck,循环冗余校验)算法,也可以为md5(message-digestalgorithm5,消息摘要算法版本5),本发明实施例对该预设校验算法的数量和类型并不做具体限定。

205、终端根据该校验结果,判断该目标应用程序中是否存在程序断点。

本发明实施例中,该终端事先获取并存储该目标应用程序的初始校验结果。该初始校验结果为对不存在程序断点的目标应用程序进行校验的结果。本步骤中,终端根据该校验结果与该初始校验结果,判断该校验结果和该初始校验结果是否匹配,当该校验结果与该初始校验结果匹配时,终端确定该目标应用程序中不存在程序断点。当该校验结果与该初始校验结果不匹配时,终端确定该目标应用程序中存在程序断点。

进一步的,终端还可以向服务器发送该校验结果。在一种可能的实施方式中,该终端还可以仅在目标应用程序中存在程序断点,才向服务器发送该校验结果,以使服务器针对该校验结果采取防止外挂的措施,该过程可以为:当该校验结果与该目标应用程序的初始校验结果不匹配时,终端确定该目标应用程序内存在程序断点,并向服务器发送该校验结果。

其中,该终端计算该校验结果中所包含的数据与该初始校验结果中所包含的数据是否相同,当相同时,才确定校验结果与该初始校验结果匹配,否则,为不匹配;或者,当该校验结果包括多个字符时,该终端还可以计算该校验结果中所包含的数据与该初始校验结果中所包含的数据之间的重合度,当重合度达到预设数值时,才确定校验结果与该初始校验结果匹配,否则,为不匹配。其中,该预设数值可以基于需要进行设置,本发明实施例对此不做具体限定。例如,该预设数值可以为99%、98%等。

在一种可能的实施方式中,该终端还可以对多个目标区块进行校验,将该多个目标区块的校验结果存储至校验列表中,因此,本步骤中,该终端还可以获取初始校验列表,并将该校验列表和该目标应用程序的初始校验列表进行比较,判断该校验列表和该初始校验列表是否匹配。当该校验列表和该初始校验列表匹配时,终端确定该目标应用程序中不存在程序断点。当该校验结果与该初始校验结果不匹配时,终端确定该目标应用程序中存在程序断点。

206、当基于该校验结果确定该目标应用程序中不存在程序断点时,终端继续运行该目标应用程序。

其中,终端也可以向服务器发送该校验结果。

207、当基于该校验结果确定该目标应用程序中存在程序断点时,终端向服务器发送该校验结果,中断运行该目标应用程序。

本步骤中,该终端执行中断程序,中断运行该目标应用程序,从而使得目标应用程序强制崩溃,进而阻止了想开外挂的人员的外挂行为,保障了目标应用程序的安全性。

进一步的,当终端得到校验结果之后,该终端删除该校验函数,释放该第一地址。

需要说明的是,由于终端每次校验时,都会动态分配一个地址,复制加密的shellcode校验函数解密到该地址对应的存储空间中,从而保证每次校验函数的地址都是随机的,并且,在校验结束后,会释放该存储空间,从而仅一步增强了校验函数的隐蔽性,保证了目标应用程序的安全性。

本发明实施例中,当接收到校验指令时,终端获取目标字符串,将该目标字符串写入第一地址中,该目标字符串为校验函数转换后的字符串,该校验函数用于校验目标应用程序中是否存在程序断点;终端将该目标字符串转换为该校验函数;通过该校验函数,对该目标应用程序进行校验,得到校验结果;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,从而保证了该目标应用程序能够正常运行,在该目标应用程序在被篡改的情况下,通过终端运行,防止了该目标应用程序被开外挂的可能,保证了目标应用程序的安全性。

并且,通过基于该校验函数进行动态校验的过程,使得每次校验都是随机进行,通过目标字符串,保证了校验函数不可以随意篡改;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,进一步保证了目标应用程序的安全性和可靠性。

图5是本发明实施例提供的一种防止外挂的装置的结构示意图。参见图5,该装置包括:获取模块501、转换模块502、校验模块503和中断模块504。

获取模块501,用于当接收到校验指令时,获取目标字符串,将该目标字符串写入第一地址中,该目标字符串为校验函数转换后的字符串,该校验函数用于校验目标应用程序中是否存在程序断点;

转换模块502,用于将该目标字符串转换为该校验函数;

校验模块503,用于通过该校验函数,对该目标应用程序进行校验,得到校验结果;

中断模块504,用于当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序。

可选的,该校验指令的触发时间为任一时间,该第一地址为该终端中任一大小为预设阈值的存储空间对应的地址,该预设阈值的数值不小于该校验函数所占存储空间的大小。

可选的,该装置还包括:

分配模块,用于根据该目标字符串的大小,为该目标字符串分配第一地址,该第一地址的存储空间大小不小于该目标字符串的大小。

可选的,该校验函数为填充数据shellcode校验函数,该装置还包括:

第一构建模块,用于构建shellcode校验函数,该shellcode校验函数用于通过回调预设校验算法对该目标应用程序进行校验;

转换模块,用于将该shellcode校验函数转换为该目标字符串,对该目标字符串进行加密处理。

可选的,该装置还包括:

调用模块,用于将第二地址、回调函数和第三地址写入该shellcode校验函数中,该第二地址为该目标应用程序的存储地址,该第三地址为该预设校验算法的存储地址;在写入后的shellcode校验函数中,通过回调函数,基于该第二地址,调用该预设校验算法;

校验模块,用于通过该预设校验算法,对该目标应用程序进行校验,得到初始校验结果。

可选的,该装置还包括:

第二构建模块,用于根据第二地址、回调函数和第三地址,构建校验结构体,该第二地址为该目标应用程序的存储地址,该第三地址为预设校验算法的存储地址;

写入模块,用于将该校验结构体写入该校验函数中。

可选的,该基于写入该校验结构体的校验函数进行校验的过程为:将该第三地址作为该回调函数的参数,通过该回调函数,调用该预设校验算法,通过该预设校验算法对该目标应用程序进行校验,得到该校验结果。

可选的,该校验模块,包括:

获取单元,用于通过自实现函数,获取该目标应用程序的多个区块;

遍历单元,用于遍历出该多个区块中待校验的多个目标区块;

校验单元,用于通过该校验函数,对该多个目标区块进行校验,得到每个区块的校验结果。

可选的,该装置还包括:

确定模块,用于当该校验结果与该目标应用程序的初始校验结果不匹配时,确定该目标应用程序中存在程序断点,该初始校验结果为对不存在程序断点的目标应用程序进行校验的结果;

该确定模块,还用于当该校验结果与该初始校验结果匹配时,确定该目标应用程序中不存在程序断点。

可选的,该装置还包括:

发送模块,用于向服务器发送该校验结果;

删除模块,用于删除该校验函数,释放该第一地址。

本发明实施例中,当接收到校验指令时,终端获取目标字符串,将该目标字符串写入该第一地址中,该目标字符串为校验函数转换后的字符串,该校验函数用于校验目标应用程序中是否存在程序断点;终端将该目标字符串转换为该校验函数;通过该校验函数,对该目标应用程序进行校验,得到校验结果;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,从而保证了该目标应用程序能够正常运行,在该目标应用程序在被篡改的情况下,通过终端运行,防止了该目标应用程序被开外挂的可能,保证了目标应用程序的安全性。

并且,通过基于该校验函数进行动态校验的过程,使得每次校验都是随机进行,通过目标字符串,保证了校验函数不可以随意篡改;当基于该校验结果确定该目标应用程序中存在程序断点时,中断运行该目标应用程序,进一步保证了目标应用程序的安全性和可靠性。

上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。

需要说明的是:上述实施例提供的防止外挂的装置在防止外挂时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的防止外挂的装置与防止外挂的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本发明实施例提供的一种终端的结构示意图。该终端600可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端600包括有:处理器601和存储器602。

处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的防止外挂的方法。

在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。

外围设备接口603可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路604用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏605用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。

定位组件608用于定位终端600的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件608可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。

加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3d动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商logo时,指纹传感器614可以与物理按键或厂商logo集成在一起。

光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。

接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中的防止外挂的方法。例如,所述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1