[发明专利]一种可自定义规则的JavaScript代码混淆方法和系统在审
申请号: | 202110230043.9 | 申请日: | 2021-03-02 |
公开(公告)号: | CN113010857A | 公开(公告)日: | 2021-06-22 |
发明(设计)人: | 肖东爽;肖铮;陈树华 | 申请(专利权)人: | 北京顶象技术有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京云科知识产权代理事务所(特殊普通合伙) 11483 | 代理人: | 张飙 |
地址: | 100085 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自定义 规则 javascript 代码 混淆 方法 系统 | ||
本发明公开了一种自定义规则的JavaScript代码混淆方法和系统,包括以下步骤:S1、将源代码通过语法分析工具生成AST;S2、将AST经过混淆引擎处理,生成混淆后的AST,所述混淆引擎可进行自定义混淆规则;S3、将混淆后的AST还原为JavaScript代码;S4、对混淆后的JavaScript代码进行压缩,得到最终生成的代码。本发明的代码混淆方法和系统使得每次混淆的结果有随机性,大幅度降低混淆后的结果的可读性和可调试性,保障代码安全。
技术领域
本发明涉及计算机与通信领域,具体涉及一种可自定义规则的JavaScript代码混淆方法和系统。
背景技术
随着互联网客户端技术的迅速发展,客户端的各种技术越来越丰富,功能也越来越复杂,但由于客户端代码是运行在用户终端上的,攻击者很容易阅读、分析和破解,给系统带来各种风险。目前各种客户端如浏览器、Hybrid AP、小程序等,主要通过解释JavaScript代码来运行,所以需要对JavaScript代码进行保护,避免暴露业务逻辑,防止作品被复制篡改等。
目前的主要保护手段有以下几种:
1、使用UglifyJS等代码压缩工具进行压缩。
2、将代码进行可逆编码,再通过eval等方式逆向回来执行。
3、其他基于正则或AST的混淆工具,通过在源代码中插入无意义的废代码,改变代码显示字符等方式来修改源代码。
以上的几种保护手段各有缺点:
1、UglifyJS等代码压缩工具设计目的是为了减小代码体积,混淆强度不高,混淆后的代码跟源代码的主要流程基本一致
2、eval等方式很容易在关键代码点被hook,从而直接截取到源代码
3、目前基于AST的混淆工具规则一般比较简单,同时生成规则比较固定,多次混淆结果不变。
发明内容
针对现有技术存在的问题,本发明的目的在于解决现有技术中混淆后的文件容易被逆向的技术问题,提供一种可自定义混淆规则的混淆技术,使得浏览器端无法获知原始文件内容,每次混淆的结果有随机性,大幅度降低混淆后的结果的可读性和可调试性,保障代码安全。
本发明提供一种自定义规则的JavaScript代码混淆方法,包括以下步骤:
S1、将源代码通过语法分析工具生成AST;
S2、将AST经过混淆引擎处理,生成混淆后的AST,所述混淆引擎可进行自定义混淆规则;
S3、将混淆后的AST还原为JavaScript代码;
S4、对混淆后的JavaScript代码进行压缩,得到最终生成的代码。
进一步,所述混淆引擎内具有默认的混淆流程,包括依次进行的五条混淆规则,分别为:
源码转换,用于将代码中的数字、正则表达式等转换为字符串的表示;
字符串加密,用于将代码中的字符串用内置的多个加密函数随机加密,同时在源代码中插入解密代码,在运行时动态解密;
字符串拆分,用于将代码中的字符串进行拆分,将拆分后的字符串分散到多个作用域中;
函数打乱,用于将代码中的函数随机进行洗牌,打乱原有函数的声明顺序;
常量提取,将代码中的常量,随机提取到多个数组中,在实际引用的时候,改为数组下标的引用。
进一步,在步骤S2中,自定义混淆规则时,可以编写自己的混淆规则,编写的流程如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京顶象技术有限公司,未经北京顶象技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110230043.9/2.html,转载请声明来源钻瓜专利网。