Sunyanzi
2015-01-23 05:53:17 +08:00
基本的原理解释 ...
JavaScript 的六种数据类型里 ... 五种简单类型在转化为字符串时都会保持原样 ...
比如 ![] 这个值在 JavaScript 里面是布尔 false ... 转化为字符串之后是字符串 false ...
!"" 这个值在 JavaScript 里面是布尔 true ... 同样被转化为字符串 true ... undefined 也同理 ...
唯一的复杂类型转化为字符串是 [ object ** ] ... 其中 ** 是对象名 ...
这些字符串里包含了足够多的字母和符号 ...
而 ~[] 这个值在 JavaScript 里面是 -1 ... 之后可以一直自增得到无穷多的连续整数 ...
然后通过取字符串指定位置的字母 ... 再用这些字母组成更复杂的结构 ...
可以获取所有可输入的字符 ... 剩下的事情就只剩用这些字符拼出命令了 ...
这不是一种加密 ... 只是一种比较高级的混淆而已 ...
而且我记得应该是有现成的工具可以把代码转化成这样的 ... 但忘了是在哪里看到的了 ...