Javascript eval - 混淆?

标签 javascript binary obfuscation

我遇到了一些评估代码:

eval('[+!+[]+!+[]+!+[]+!+[]+!+[]]');

此代码等于整数 5。

这种东西叫什么?我试过在网上搜索,但我似乎无法弄清楚这指的是什么。我觉得这很有趣,想知道在哪里/如何学习如何打印不同的东西,而不仅仅是整数 5。字母、符号等。因为我无法在该代码中指出一个模式,所以我有 0成功从中获取并添加到它以产生不同的结果。

这是某种混淆吗?

最佳答案

除了 eval() 之外,这种类型的混淆被称为非字母数字混淆。 要完全非字母数字,eval 必须由 Array 构造函数原型(prototype)函数和下标符号执行:

[]["sort"]["constructor"]("string to be evaled");

然后将这些字符串转换为非字母数字形式。

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-obfuscation

关于Javascript eval - 混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27878349/

相关文章:

javascript - 在投票按钮上显示错误,如堆栈溢出

swift - 在 Swift 中我无法创建二进制负数

obfuscation - 自定义构建配置的 Eazfuscator.NET 错误

Python Dropbox 应用程序,我应该如何处理应用程序 key 和应用程序 secret ?

javascript - 以 Angular 方式将事件传递给triggerHandler

javascript - 如何正则表达式冒号和空格之间的所有内容?

javascript - 如何公开 session 变量来表达 View

javascript - 检查两个具有浮点值的对象是否相等?

c - 在C中的二进制文件中的某个整数后插入一个整数

.net - 我可以将 mono 的 AOT 功能用于 native "pre-compile".NET DLL/EXE 以使其更难进行逆向工程吗?