脚本保护方法、装置、计算机可读存储介质和计算机设备制造方法及图纸

技术编号:25123404 阅读:28 留言:0更新日期:2020-08-05 02:52
本申请涉及一种脚本保护方法、装置、计算机可读存储介质和计算机设备,所述方法包括:获取原始脚本,并确定所述原始脚本中的流程控制节点;根据所述第一执行条件,对所述原始脚本中的流程控制节点进行代码混淆,得到流程混淆节点;生成受保护脚本;所述受保护脚本包括所述流程混淆节点。本申请提供的方案,可以在保证脚本中各个流程控制节点的控制逻辑不发生变化的同时,提升了脚本的防篡改能力和抗分析能力,更有效地对脚本进行保护。

【技术实现步骤摘要】
脚本保护方法、装置、计算机可读存储介质和计算机设备
本申请涉及信息安全
,特别是涉及一种脚本保护方法、装置、计算机可读存储介质和计算机设备。
技术介绍
目前,软件开发商主要依赖于代码混淆技术对软件产品进行保护,尤其对于可以反编译的JavaScript(一种脚本语言)而言,更需要通过有效的代码混淆技术进行保护。代码混淆技术的主要目的在于让代码难于阅读,提升代码阅读成本和篡改难度,同时也可以提升了代码逆向解析的难度,以防止软件被篡改和非法反编译。较为主流的代码混淆技术中,主要是对脚本中的代码内容进行简单的内容替换或者插入多余的控制流程。然而,上述的代码混淆方式存在着无法有效保护脚本的问题。
技术实现思路
基于此,有必要针对无法有效保护脚本的技术问题,提供一种脚本保护方法、装置、计算机可读存储介质和计算机设备。一种脚本保护方法,包括:获取原始脚本,并确定所述原始脚本中的流程控制节点;所述流程控制节点记录有第一执行条件;所述流程控制节点用于在所述流程控制节点的输入变量符合所述第一执行条件时执行流程跳转;根据所述第一执行条件,对所述原始脚本中的流程控制节点进行代码混淆,得到流程混淆节点;所述流程混淆节点用于对根据所述流程混淆节点的代码内容进行校验所得到的校验值进行考拉兹运算,并输出考拉兹序列;所述流程混淆节点记录有第二执行条件;所述流程混淆节点还用于根据所述考拉兹序列更新所述第二执行条件,直至所述第二执行条件与所述第一执行条件等价;所述流程混淆节点用于在所述流程混淆节点的输入变量符合所述第二执行条件时执行流程跳转;生成受保护脚本;所述受保护脚本包括所述流程混淆节点;所述受保护脚本用于根据所述流程混淆节点输出的考拉兹序列确定待跳转流程节点,并从所述流程混淆节点跳转至所述待跳转流程节点;所述受保护脚本还用于当无法根据所述考拉兹序列确定所述待跳转流程节点时执行脚本自我保护流程。一种脚本保护方法,包括:获取受保护脚本;所述受保护脚本包括流程混淆节点;所述流程混淆节点记录有执行条件;所述流程混淆节点用于在所述流程混淆节点的输入变量符合所述执行条件时执行流程跳转;在执行所述流程混淆节点的代码内容时,对所述流程混淆节点的代码内容进行校验,得到校验值;对所述校验值进行考拉兹运算,得到考拉兹序列,并根据所述考拉兹序列更新所述执行条件;当所述流程混淆节点的输入变量符合更新后的所述执行条件、且根据所述考拉兹序列得到待跳转流程节点时,从所述流程混淆节点跳转至所述待跳转流程节点,并执行所述待跳转流程节点的代码内容;当所述流程混淆节点的输入变量符合更新后的所述执行条件、且无法根据所述考拉兹序列得到待跳转流程节点时,执行脚本自我保护流程。在一个实施例中,所述受保护脚本包括有防篡改验证组件、防篡改响应组件和神经网络;所述防篡改验证组件被调用时,用于对所述流程混淆节点的代码内容进行校验,得到所述校验值;所述流程混淆节点具有第一节点标识值,所述流程混淆节点的代码内容在执行时,用于根据所述考拉兹序列输出考拉兹特征值;所述神经网络被调用时,用于输入所述流程混淆节点的第一节点标识值和所述考拉兹特征值,并输出第二节点标识值;所述受保护脚本还包括有多个候选流程节点;所述候选流程节点具有第三节点标识值;所述受保护脚本用于将所述第三节点标识值与所述第二节点标识值匹配的候选流程节点作为所述待跳转流程节点;所述受保护脚本还用于当不存在所述第三节点标识值与所述第二节点标识值匹配的候选流程节点时,调用所述防篡改响应组件;所述防篡改响应组件被调用时执行代码自毁功能。在一个实施例中,所述受保护脚本还包括反调试组件;所述反调试组件被调用时,检测是否存在对受保护脚本的非法调试活动时,当检测到对受保护脚本的非法调试活动时执行反调试功能。一种脚本保护装置,包括:脚本获取模块,用于获取原始脚本,并确定所述原始脚本中的流程控制节点;所述流程控制节点记录有第一执行条件;所述流程控制节点用于在所述流程控制节点的输入变量符合所述第一执行条件时执行流程跳转;代码混淆模块,用于根据所述第一执行条件,对所述原始脚本中的流程控制节点进行代码混淆,得到流程混淆节点;所述流程混淆节点用于对根据所述流程混淆节点的代码内容进行校验所得到的校验值进行考拉兹运算,并输出考拉兹序列;所述流程混淆节点记录有第二执行条件;所述流程混淆节点还用于根据所述考拉兹序列更新所述第二执行条件,直至所述第二执行条件与所述第一执行条件等价;所述流程混淆节点用于在所述流程混淆节点的输入变量符合所述第二执行条件时执行流程跳转;脚本生成模块,用于生成受保护脚本;所述受保护脚本包括所述流程混淆节点;所述受保护脚本用于根据所述流程混淆节点输出的考拉兹序列确定待跳转流程节点,并从所述流程混淆节点跳转至所述待跳转流程节点;所述受保护脚本还用于当无法根据所述考拉兹序列确定所述待跳转流程节点时执行脚本自我保护流程。在一个实施例中,所述流程控制节点包括节点原始代码,所述节点原始代码包括所述第一执行条件;所述代码混淆模块,具体用于:确定所述第一执行条件的条件参数,以及,获取流程混淆代码模板;所述流程混淆代码模板包括初始执行条件;在所述流程混淆代码模板中,将所述初始执行条件的条件参数修改为所述第一执行条件的条件参数,得到流程混淆代码;将所述流程控制节点的节点原始代码替换为所述流程混淆代码,得到所述流程混淆节点。在一个实施例中,所述装置还包括:验证组件嵌入模块,用于在所述原始脚本中嵌入防篡改验证组件;所述防篡改验证组件用于对所述流程控制节点的代码内容进行校验,得到所述校验值;网络嵌入模块,用于在所述原始脚本中嵌入神经网络;所述流程混淆节点具有第一节点标识值,所述流程混淆节点用于根据所述考拉兹序列输出考拉兹特征值;所述神经网络用于输入所述流程混淆节点的第一节点标识值和所述考拉兹特征值,并输出第二节点标识值;响应组件嵌入模块,用于在所述原始脚本中嵌入防篡改响应组件;所述原始脚本包括有多个候选流程节点;所述候选流程节点具有第三节点标识值;所述原始脚本用于将所述第三节点标识值与所述第二节点标识值匹配的候选流程节点作为所述待跳转流程节点;所述原始脚本还用于当不存在所述第三节点标识值与所述第二节点标识值匹配的候选流程节点时,调用所述防篡改响应组件;所述防篡改响应组件在被调用时执行代码自毁功能;所述脚本生成模块,具体用于:根据嵌入有所述防篡改验证组件、所述神经网络和所述防篡改响应组件的原始脚本,得到所述受保护脚本。在一个实施例中,所述防篡改验证组件包括代码位置占位符,所述流程控制节点的代码内容在所述原始脚本中具有第一起始位置;所述装置还具体用于:根据所述流程混淆节点的代码内容与所述流程控制节点的代码内容之间的差异,确定代码位置偏移量;根据所述第一起始位置和所述代码位置偏移量,确定所述流程混淆节点在所述原始脚本中的第二起始位置;在所述防篡改验证组件的代码位置占位符中写入所述第二起本文档来自技高网...

【技术保护点】
1.一种脚本保护方法,其特征在于,包括:/n获取原始脚本,并确定所述原始脚本中的流程控制节点;所述流程控制节点记录有第一执行条件;所述流程控制节点用于在所述流程控制节点的输入变量符合所述第一执行条件时执行流程跳转;/n根据所述第一执行条件,对所述原始脚本中的流程控制节点进行代码混淆,得到流程混淆节点;所述流程混淆节点用于对根据所述流程混淆节点的代码内容进行校验所得到的校验值进行考拉兹运算,并输出考拉兹序列;所述流程混淆节点记录有第二执行条件;所述流程混淆节点还用于根据所述考拉兹序列更新所述第二执行条件,直至所述第二执行条件与所述第一执行条件等价;所述流程混淆节点用于在所述流程混淆节点的输入变量符合所述第二执行条件时执行流程跳转;/n生成受保护脚本;所述受保护脚本包括所述流程混淆节点;所述受保护脚本用于根据所述流程混淆节点输出的考拉兹序列确定待跳转流程节点,并从所述流程混淆节点跳转至所述待跳转流程节点;所述受保护脚本还用于当无法根据所述考拉兹序列确定所述待跳转流程节点时执行脚本自我保护流程。/n

【技术特征摘要】
1.一种脚本保护方法,其特征在于,包括:
获取原始脚本,并确定所述原始脚本中的流程控制节点;所述流程控制节点记录有第一执行条件;所述流程控制节点用于在所述流程控制节点的输入变量符合所述第一执行条件时执行流程跳转;
根据所述第一执行条件,对所述原始脚本中的流程控制节点进行代码混淆,得到流程混淆节点;所述流程混淆节点用于对根据所述流程混淆节点的代码内容进行校验所得到的校验值进行考拉兹运算,并输出考拉兹序列;所述流程混淆节点记录有第二执行条件;所述流程混淆节点还用于根据所述考拉兹序列更新所述第二执行条件,直至所述第二执行条件与所述第一执行条件等价;所述流程混淆节点用于在所述流程混淆节点的输入变量符合所述第二执行条件时执行流程跳转;
生成受保护脚本;所述受保护脚本包括所述流程混淆节点;所述受保护脚本用于根据所述流程混淆节点输出的考拉兹序列确定待跳转流程节点,并从所述流程混淆节点跳转至所述待跳转流程节点;所述受保护脚本还用于当无法根据所述考拉兹序列确定所述待跳转流程节点时执行脚本自我保护流程。


2.根据权利要求1所述的方法,其特征在于,所述流程控制节点包括节点原始代码,所述节点原始代码包括所述第一执行条件;所述根据所述第一执行条件,对所述流程控制节点进行代码混淆,得到流程混淆节点,包括:
确定所述第一执行条件的条件参数,以及,获取流程混淆代码模板;所述流程混淆代码模板包括初始执行条件;
在所述流程混淆代码模板中,将所述初始执行条件的条件参数修改为所述第一执行条件的条件参数,得到流程混淆代码;
将所述流程控制节点的节点原始代码替换为所述流程混淆代码,得到所述流程混淆节点。


3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述原始脚本中嵌入防篡改验证组件;所述防篡改验证组件用于对所述流程控制节点的代码内容进行校验,得到所述校验值;
在所述原始脚本中嵌入神经网络;所述流程混淆节点具有第一节点标识值,所述流程混淆节点用于根据所述考拉兹序列输出考拉兹特征值;所述神经网络用于输入所述流程混淆节点的第一节点标识值和所述考拉兹特征值,并输出第二节点标识值;
在所述原始脚本中嵌入防篡改响应组件;所述原始脚本包括有多个候选流程节点;所述候选流程节点具有第三节点标识值;所述原始脚本用于将所述第三节点标识值与所述第二节点标识值匹配的候选流程节点作为所述待跳转流程节点;所述原始脚本还用于当不存在所述第三节点标识值与所述第二节点标识值匹配的候选流程节点时,调用所述防篡改响应组件;所述防篡改响应组件在被调用时执行代码自毁功能;
所述生成受保护脚本,包括:
根据嵌入有所述防篡改验证组件、所述神经网络和所述防篡改响应组件的原始脚本,得到所述受保护脚本。


4.根据权利要求3所述的方法,其特征在于,所述防篡改验证组件包括代码位置占位符,所述流程控制节点的代码内容在所述原始脚本中具有第一起始位置;在所述根据所述第一执行条件,对所述流程控制节点进行代码混淆,得到流程混淆节点之后,还包括:
根据所述流程混淆节点的代码内容与所述流程控制节点的代码内容之间的差异,确定代码位置偏移量;
根据所述第一起始位置和所述代码位置偏移量,确定所述流程混淆节点在所述原始脚本中的第二起始位置;
在所述防篡改验证组件的代码位置占位符中写入所述第二起始位置;所述防篡改验证组件用于根据所述第二起始位置定位所述流程混淆节点的代码内容。


5.根据权利要求1所述的方法,其特征在于,还包括:
在所述原始脚本中嵌入反调试组件;所述反调试组件用于在检测到对所述受保护脚本的非法调试活动时执行反调试功能。


6.根据权利要求1所述的方法,其特征在于,在所述根据所述第一执行条件,对所述原始脚本中的流程控制节点进行代码混淆,得到流程混淆节点之后,还包括:
随机生成混淆标...

【专利技术属性】
技术研发人员:马昊玉刘忠正胡育辉李文豪杨超
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1