JS代码加密后,植入的僵尸代码能被去除吗?

“僵尸代码植入”是一项常用的JS代码混淆加密技术,通过向代码中随机插入无用代码,达到扰乱代码结构、阻碍阅读理解代码的效果。

有人问:植入的代码能被去除吗?

且看尝试:

假如有如下JS代码,使用JShaman进行混淆加密。

JS代码加密后,植入的僵尸代码能被去除吗?_赋值

配置中,只选择“僵尸代码植入”:

JS代码加密后,植入的僵尸代码能被去除吗?_js代码_02

保护结果如下:

JS代码加密后,植入的僵尸代码能被去除吗?_赋值_03

从上图可见,增加了定义、赋值代码。这多出来的随机代码便是僵尸代码,但它们不影响正常功能。

这时,似乎是可以区分出僵尸代码,因为变量名称不同。

但JS混淆加密还有其它功能,而且往往是多功能混合使用的。

比如在配置中再增加一项“变量名混淆”:

JS代码加密后,植入的僵尸代码能被去除吗?_赋值_04

这样生成的代码将发生变化,如下所示:

JS代码加密后,植入的僵尸代码能被去除吗?_赋值_05

由上图可见,变量名也变得没有规律可循。无法区分哪行是原始代码、哪行是僵尸代码

那么,也就无法去除僵尸代码。

在实际的JS代码混淆加密操作中,还有更多的功能可选用,比如JShaman专业版有20多项功能,多种保护功能结合之后,代码混淆结果更混乱、安全强度更高。