JavaScript奇技淫巧:32进制加密
在JavaScript编程中,eval常用于保护隐私、加密代码运行 (js加密),执行一些不想为他人所知的代码,如常见的eval加密、U加密、JJEncode加密,都是使用eval进行代码执行。
但eval本身字符串是个非常明显的特征,太容易被检索,然后替换成console.log、alert,从而实现逆向、得到eval执行的内容。
是否有方法可以将eval也隐藏起来,使它不那么轻易被发现?
当然有,下面便介绍一种方法:32进制加密。
原理如下:
eval在浏览器中,是window的成员函数;在Node.JS环境中,是global的成员函数。
那么,eval便也可以写为:window.eval、global.eval,或window[“eval”]、global[“eval”]。
也就是将eval变成了字符串的形式。
既然是字符串,就很容易加密了。
例如,“eval”字符串可以成为另一种形式:
(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)