一般情况下,在JS中定义变量,是使用var、let、const。
比如:var abc =1;
但如果你不希望别人看到你定义了一个变量abc,该怎么办呢?
可以这样写:this["abc"]=1;
这样便也定义了一个变量abc。
啊?能这么写吗?能!不信?测试运行一下就知道了。
但这还是看到了abc字符串,也看到了赋值的内容是数字1。有没有办法更隐藏一些呢?
有,还可以用JShaman对这一行代码进行混淆。
混淆之后,this["abc"]=1;会变成:
this["\u0061\u0062\u0063\u0064"]=0x3ba17^0x3ba16;
这时,如果进行console.log(abc)或alert(abc),会看到变量abc的值1被输出了。
但在这行代码中,一眼看去,即不存在变量abc,也没有数值1。
是不是很有意思呢?
这样的JS编程技巧,你学会了吗?