[发明专利]一种自定义混淆方案的JavaScript代码混淆方法有效
申请号: | 201911241658.0 | 申请日: | 2019-12-06 |
公开(公告)号: | CN110888644B | 公开(公告)日: | 2023-03-31 |
发明(设计)人: | 廖培淋;范渊;吴永越;郑学新;刘韬 | 申请(专利权)人: | 成都安恒信息技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F21/12 |
代理公司: | 成都君合集专利代理事务所(普通合伙) 51228 | 代理人: | 尹新路 |
地址: | 610000 四川省成都市自由贸易试验区成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自定义 混淆 方案 javascript 代码 方法 | ||
1.一种自定义混淆方案的JavaScript代码混淆方法,其特征在于,所述混淆方法包括三种供用户选择的代码混淆方案:
方案1:语法树代码混淆;
方案2:变量替换代码混淆;
方案3:组合代码混淆;
所述混淆方法通过上述任一方案完成初始JavaScript代码的混淆,并生成混淆完成的JavaScript代码、辅助JavaScript代码和混淆程序;
所述方案1基于JavaScript语法解析器、混淆器和语法树解析器具体按以下步骤实现:
步骤S1.1移除初始JavaScript代码中的冗余代码;
步骤S1.2使用JavaScript语法解析器将初始JavaScript代码拆分为一个个独立的单词块,根据拆分的一个个独立的单词块生成一个根节点为window变量的语法树;
步骤S1.3将步骤S1.2生成的语法树传入混淆器;所述混淆器对生成的语法树进行全树遍历,对每一个树节点进行节点混淆;在进行了节点混淆后,再对每一个树节点进行冗余添加;
步骤S1.4使用语法树解析器将经过步骤S1.3处理后的语法树按照层级依次将树节点的单词块取出,并根据语法树的对应关系将初始JavaScript代码拼接重装为混淆完成的JavaScript代码;
所述方案2具体包括以下步骤:
步骤S2.1搜索初始JavaScript代码中的变量以及函数名,并保存在一个键值对对象中;
步骤S2.2设置一个无意义字符串数组,遍历键值对对象,通过正则匹配的方法将键值对对象中保存的变量以及函数名替换为无意义字符串数组中的无意义字符串;
所述方案3具体是指:先对初始JavaScript代码进行方案1的处理,再进行方案2的处理。
2.如权利要求1所述的一种自定义混淆方案的JavaScript代码混淆方法,其特征在于,所述混淆方法基于服务端和客户端在完成对初始JavaScript代码的混淆后进行以下操作:
步骤一:将混淆完成的JavaScript代码、辅助JavaScript代码和混淆程序都部署到服务端,并将混淆完成的JavaScript代码和辅助JavaScript代码引入html文件中,生成混淆完成的JavaScript文件和辅助JavaScript文件;同时将混淆完成的JavaScript文件更名,并将更名映射关系写入一个临时文件中;
步骤二:通过客户端向服务端发送代码请求,在服务端接收到代码请求后将辅助JavaScript文件发送至客户端;通过辅助JavaScript文件在客户端上与服务端的混淆系统建立一条实时连接;
步骤三:通过建立的实时连接来进行客户端和服务端之间的token协商流程,在通过token协商流程的验证后,将服务端上更名后的混淆完成的JavaScript文件解混淆,并根据临时文件中保存的更名映射关系将混淆完成的JavaScript文件改回原本的文件名,并通过服务端给客户端发送就绪指令;
步骤四:当客户端接收到就绪指令时,触发页面刷新为可访问web应用状态,访问者进行web应用访问。
3.如权利要求2所述的一种自定义混淆方案的JavaScript代码混淆方法,其特征在于,所述token协商流程具体是指以下步骤:
步骤a:在服务端与客户端之间事先进行密钥协商;
步骤b:在密钥协商后,根据发送代码请求的客户端的客户端信息,将事先密钥协商好的token由服务端发送至发送代码请求的客户端,然后将发送的token保存一份在服务端;
步骤c:将发送代码请求的客户端接收到的token存储到发送代码请求的客户端的sessionstorage中。
4.如权利要求3所述的一种自定义混淆方案的JavaScript代码混淆方法,其特征在于,当访问者进行web应用访问时,通过辅助JavaScript文件中的辅助JavaScript代码对服务端发送token验证请求,当客户端的sessionstorage保存的token与服务端保存的token验证一致时,访问者的web访问继续;若不一致,则由混淆程序将混淆完成的JavaScript文件再次更名,重新将更名映射关系存入临时文件中,并重新进行步骤三的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都安恒信息技术有限公司,未经成都安恒信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911241658.0/1.html,转载请声明来源钻瓜专利网。