如何对超大JS文件混淆加密?

当遇到大型JS文件(如3.4MB)需要混淆加密时,由于代码量巨大,一般的在线工具无法处理。可以采取在打包或编译前混淆原始JS代码,或者对已有的大文件进行分块处理,使用工具如JShaman进行混淆加密。对于企业级应用,本地部署混淆工具更有效,不受文件大小限制。
摘要由CSDN通过智能技术生成

有些时候,我们会有一些很大的JS文件代码需要混淆加密,例如:

这个3.4MB的JS文件,通常来说是不容易一次性完成混淆加密的。因为代码量太大。

在混淆加密JS代码时,要将代码转化成AST(抽象语法树),再对AST进行处理,混淆加密完成后,再重建为JS代码。而像3.4MB大小的文件,代码量可能达到几万行,甚至几十万行,可以想像:进行各种转码、逐行处理,是种什么样的工作量,即使是程序自动处理,也会非常耗时。因此,对这样量极的JS代码进行混淆加密,在线的JS加密工具,是不允许的,不接受这样大的文件,或需要高权限。

如果我们要处理这样大的文件,需要些技巧。

方法一、

这样大的文件,通常不是手写完成的,而是使用各种工具打包、编译生成的。比如可能是webpack将很多文件打包在了一起,或者可能是h5游戏引擎(cocos、白鹭,等等)编译而成。

如果打包或编译前的源码也是JS,那么,可以对未打包前的原始JS代码文件混淆加密,会比较轻松,先混淆加密,然后再打包编译。

方法二、

如果原始代码是非JS语言,比如,可能是TS,那就无法对原始代码混淆了。只能处理这个大的JS文件。

处理方式,也不太复杂。以上面给出的文件为例。

首先,将JS代码格式化(上图中可见,文件是压缩成一行的,如果是未压缩的代码,则不必格式化)。

JS代码格式化可使用:

fairysoftware.com/js_ge_shi_hua.html

上图代码,格式化之后:

(见图,代码量:约8万行)

然后,进行分块处理。

如何分块呢,比如,先复制一部分代码,可以是一个或多个函数,等。(注:取完整的函数或代码块,保证复制的这部分代码是整体、不会破坏函数体完整性)。

将这部分代码,复制,并到JShaman网站进行混淆加密:

混淆加密之后,将代码贴回文件原位置进行代码替换:

替换后的效果:

以此类推,完整体个JS文件代码的混淆加密。

当然,这个过程,也可以写程序自动调用进行,比如:获取每个函数的代码,调用JShaman的Web API进行混淆加密,加密后替换原代码。

如果是企业级的应用,经常有这样处理大JS文件的需要,如此处理可能还是有些繁琐。更直接的方法是使用JShaman的本地部署,是不限文件大小的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值