脚本混淆方法技术

技术编号:22021796 阅读:20 留言:0更新日期:2019-09-04 01:10
本申请提供一种脚本混淆方法,上述脚本混淆方法包括:接收浏览器发送的脚本请求;将所述脚本请求所请求的脚本转换成抽象语法树;对所述抽象语法树按照预定的转换规则进行转换;根据转换后的抽象语法树生成新的脚本;将生成的新的脚本发送给所述浏览器。本申请可以增强破解脚本逻辑的难度,保护脚本的核心代码。

Method of script obfuscation

【技术实现步骤摘要】
脚本混淆方法
本申请涉及计算机
,尤其涉及一种脚本混淆方法。
技术介绍
随着科学技术的发展,计算机技术被广泛地应用于各个领域,为人们的工作、学习和日常生活提供了极大的便利。应用范围的扩大和应用深度的扩展,促使计算机的性能不断提高,进而对计算机软件提出了更高的要求。在这种情况下,脚本语言作为一般程序设计语言的补充,得到了极为迅速的发展。脚本语言又被称为扩建的语言,或者动态语言,是一种用来控制向用程序的编程语言。由于脚本语言不需要编译,可以直接使用,而且具有小巧和高效的优点,因此越来越多的软件将脚本语言嵌入到软件中,来为应用程序提供灵活的扩展和运制功能。尤其在游戏软件和杀毒软件中,因为程序较为复杂,脚本语言被广泛的使用。相应地,如果脚本代码被泄露,会给用户带来不小的损失,因此需要增强脚本代码的安全性。通过对脚本代码进行混淆,可以增强脚本的安全性,但现有相关技术所采用的混淆技术比较简单,一般通过简单缩短变量名和/或空格压缩达到混淆的效果,通常是为了减小脚本的体积、提高脚本的性能而使用,混淆后的脚本逻辑基本可见,抗破解性比较差。
技术实现思路
为克服相关技术中存在的问题,本申请的实施例采用如下技术方案:第一方面,本申请实施例提供一种脚本混淆方法,包括:接收浏览器发送的脚本请求;将所述脚本请求所请求的脚本转换成抽象语法树;对所述抽象语法树按照预定的转换规则进行转换;根据转换后的抽象语法树生成新的脚本;将生成的新的脚本发送给所述浏览器。上述脚本混淆方法中,接收浏览器发送的脚本请求之后,将上述脚本请求所请求的脚本转换成抽象语法树(AbstractSyntaxTree;以下简称:AST);对上述AST按照预定的转换规则进行转换,根据转换后的AST生成新的脚本,最后将生成的新的脚本发送给上述浏览器,从而可以增强破解脚本逻辑的难度,保护脚本的核心代码。第二方面,本申请实施例提供一种脚本混淆装置,包括:接收模块,用于接收浏览器发送的脚本请求;转换模块,用于将所述脚本请求所请求的脚本转换成抽象语法树;以及对所述抽象语法树按照预定的转换规则进行转换;生成模块,用于根据所述转换模块转换后的抽象语法树生成新的脚本;发送模块,用于将所述生成模块生成的新的脚本发送给所述浏览器。上述脚本混淆装置中,接收模块接收浏览器发送的脚本请求之后,转换模块将上述脚本请求所请求的脚本转换成AST;对上述AST按照预定的转换规则进行转换,生成模块根据转换后的AST生成新的脚本,最后发送模块将生成的新的脚本发送给上述浏览器,从而可以增强破解脚本逻辑的难度,保护脚本的核心代码。第三方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的方法。第四方面,本申请实施例提供一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。第五方面,本申请实施例提供一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行如上所述的方法。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。图1为本申请脚本混淆方法一个实施例的流程图;图2为本申请脚本混淆方法另一个实施例的流程图;图3为本申请脚本混淆方法再一个实施例的流程图;图4为本申请脚本混淆方法再一个实施例的流程图;图5为本申请脚本混淆方法再一个实施例的流程图;图6为本申请脚本混淆方法再一个实施例的流程图;图7为本申请脚本混淆方法再一个实施例的流程图;图8为本申请脚本混淆方法再一个实施例的流程图;图9为本申请脚本混淆方法再一个实施例的流程图;图10为本申请脚本混淆方法再一个实施例的流程图;图11为本申请脚本混淆方法的应用场景一个实施例的示意图;图12为本申请脚本混淆装置一个实施例的结构示意图;图13为本申请电子设备一个实施例的结构示意图。通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。图1为本申请脚本混淆方法一个实施例的流程图,如图1所示,上述脚本混淆方法可以包括:步骤101,接收浏览器发送的脚本请求。步骤102,将上述脚本请求所请求的脚本转换成AST。本实施例中,上述脚本可以为JavaScript(js)脚本,当然上述脚本也可以采用其他的语音进行编写,但本实施例以脚本为js脚本为例进行说明。步骤103,对上述AST按照预定的转换规则进行转换。步骤104,根据转换后的AST生成新的脚本。步骤105,将生成的新的脚本发送给上述浏览器。上述脚本混淆方法中,接收浏览器发送的脚本请求之后,将上述脚本请求所请求的脚本转换成AST;对上述AST按照预定的转换规则进行转换,根据转换后的AST生成新的脚本,最后将生成的新的脚本发送给上述浏览器,从而可以增强破解脚本逻辑的难度,保护脚本的核心代码。图2为本申请脚本混淆方法另一个实施例的流程图,如图2所示,本申请图1所示实施例中,步骤103可以包括:步骤201,将上述AST中的关键字提取出来放到数组中,将提取的关键字用数组下标的方式进行替换。具体地,可以将上述AST中的常量、属性、文档对象模型(DocumentObjectModel;以下简称:DOM)和/或BOM对象(document、window、location、Date、Math和/或setTimeout等)等关键字提取出来放到数组中,将提取的关键字用数组下标的方式进行替换。举例来说,对于window.location=“xxx”;提取关键字之后,可以转换成:varxx=[window,location,“xxx”];xx[0][xx[1]]=xx[2];进一步地,在步骤201之后,还可以包括:步骤202,对提取的关键字中的字符串进行编码和/或加密处理;和/或,对提取的关键字中的数字进行进制转换。具体地,对提取的关键字中的字符串可以进行ascii编码、base64编码和/或xtea加密等处理;对提取的关键字中的数字可以进制转换,如将10进制转换成8进制或16进制等。图3为本申请脚本混淆方法再一个实施例的流程图,如图3所示,本申请图1所示实施例中,步骤103可以包括:步骤301,将上述AST的所有根节点包裹在一个立即执行函数中。也就是说,可以进行函数加壳操作,将上述AST的所有根节点包裹在一个立即执行函数中。进一步地,还可以将通过上述立即执行函数传递的参数赋给至少两个变量,并在引用上述参数时,随机使用上述至少两个变量。上述函数加壳操作,可以增加破解脚本逻辑的难度,有利于保护脚本的核心代码。图4本文档来自技高网...

【技术保护点】
1.一种脚本混淆方法,其特征在于,包括:接收浏览器发送的脚本请求;将所述脚本请求所请求的脚本转换成抽象语法树;对所述抽象语法树按照预定的转换规则进行转换;根据转换后的抽象语法树生成新的脚本;将生成的新的脚本发送给所述浏览器。

【技术特征摘要】
1.一种脚本混淆方法,其特征在于,包括:接收浏览器发送的脚本请求;将所述脚本请求所请求的脚本转换成抽象语法树;对所述抽象语法树按照预定的转换规则进行转换;根据转换后的抽象语法树生成新的脚本;将生成的新的脚本发送给所述浏览器。2.根据权利要求1所述的方法,其特征在于,所述对所述抽象语法树按照预定的转换规则进行转换包括:将所述抽象语法树中的关键字提取出来放到数组中,将提取的关键字用数组下标的方式进行替换。3.根据权利要求2所述的方法,其特征在于,还包括:对提取的关键字中的字符串进行编码和/或加密处理;和/或,对提取的关键字中的数字进行进制转换。4.根据权利要求1所述的方法,其特征在于,所述对所述抽象语法树按照预定的转换规则进行转换包括:将所述抽象语法树的所有根节点包裹在一个立即执行函数中。5.根据权利要求1所述的方法,其特征在于,所述对所述抽象语法树按照预定的转换规则进行转换包括:将所述抽象语法树中的关键字提取出来放到数组中,将提取的关键字用数组下标的方式进行替换;将所述抽象语法树的所有根节点包裹在一个立即执行函数中,并将提取的关键字通过所述立即执行函数的数组参数的形式传递进来。6.根据权利要求4或5所述的方法,其特征在于,还包括:将通过所述立即执行...

【专利技术属性】
技术研发人员:张小龙袁丽娜胡育辉
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1