混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?

混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?

文章图片

混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?

文章图片

混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?

文章图片

混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?

文章图片

混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?

文章图片

混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?

JS代码加密时 , 什么情况下不能使用全局变量、函数名加密?
在进行JavaScript代码混淆加密时 , 常会用到变量名、函数名混淆加密 。
例如以下代码:

使用JShaman进行JS代码混淆加密:

配置中 , 不使用全局变量、全局函数加密:

得到加密代码如下:

这时全局变量b , 全局函数msg都保留了 。 保护后的代码运行正常 。
但如果加密时选择了全局函数和变量加密

加密后的代码运行会出现异常:


运行异常的原因是:JS代码块的外部 , 有click事件代码 , 会调用全局变量和函数 , 如下图:

总结而言:
如果代码中的全局函数、全局变量 , 在代码块或文件之外的地方有调用或赋值 。 则不可以使用全局变量、全局函数加密 。
除此之外 , 都可以使用全局变量、函数加密 。
例如:


保护后 , 全局变量b , 全局函数msg都已不见 , 但运行完全不受影响 , 如下图:

【混凝土|JS代码加密时,什么情况下不能使用全局变量、函数名加密?】注:在JS混淆加密中 , 变量名加密、函数名加密 , 是绝对不可逆的操作 , 绝不可还原 , 能很大程度上提高代码安全性 。 因此:推荐使用 。