odr*_*037 7 javascript binary obfuscation
我遇到了一些评估代码:
eval('[+!+[]+!+[]+!+[]+!+[]+!+[]]');
Run Code Online (Sandbox Code Playgroud)
此代码等于整数5.
这种东西叫做什么?我试过在网上搜索,但我似乎无法弄清楚这是什么.我发现这非常有趣,并想知道在哪里/如何学习如何打印不同的东西,而不仅仅是整数5.字母,符号等等因为我不能在该代码中指出一个模式我有0成功从中获取并添加它以产生不同的结果.
这是某种混淆吗?
抛弃这种类型的混淆eval(),称为非字母数字混淆.要完全是非字母数字,eval必须由Array构造函数原型函数和下标符号执行:
[]["sort"]["constructor"]("string to be evaled");
Run Code Online (Sandbox Code Playgroud)
然后将这些字符串转换为非字母数字形式.
AFAIK,它是由Yosuke Hosogawa在2009年左右首次提出的.如果你想看到它的实际应用,请看这个工具:http://www.jsfuck.com/
它不被认为是一种好的混淆类型,因为很容易反向回原始源代码,甚至不必运行代码(静态).另外,它极大地增加了文件大小.
但它是一种有趣的混淆形式,它探讨了JavaScript类型的强制.要了解更多信息,我推荐这个演示文稿,幻灯片33:http: //www.slideshare.net/auditmark/owasp-eu-tour-2013-lisbon-pedro-fortuna-protecting-java-script-source-code-using-using -obfuscation