gpt4 book ai didi

javascript - 这么深奥的JS代码怎么解释

转载 作者:行者123 更新时间:2023-11-29 10:30:26 25 4
gpt4 key购买 nike

这段代码等同于alert(1),但它是如何工作的呢?我在这里没有看到 eval

/ㅤ/-[ㅤ=''],ᅠ=!ㅤ+ㅤ,ㅤㅤ=!ᅠ+ㅤ,ㅤᅠ=ㅤ+{},ᅠㅤ=ᅠ[ㅤ++],ᅠᅠ=ᅠ[ᅠㅤㅤ=ㅤ
],ᅠㅤᅠ=++ᅠㅤㅤ+ㅤ,ㅤㅤㅤ=ㅤᅠ[ᅠㅤㅤ+ᅠㅤᅠ],ᅠ[ㅤㅤㅤ+=ㅤᅠ[ㅤ]+(ᅠ.ㅤㅤ+ㅤᅠ)[ㅤ]+ㅤㅤ[ᅠㅤᅠ]+ᅠㅤ+ᅠᅠ+ᅠ
[ᅠㅤㅤ]+ㅤㅤㅤ+ᅠㅤ+ㅤᅠ[ㅤ]+ᅠᅠ][ㅤㅤㅤ](ㅤㅤ[ㅤ]+ㅤㅤ[ᅠㅤㅤ]+ᅠ[ᅠㅤᅠ]+ᅠᅠ+ᅠㅤ+"(ㅤ)")()

最佳答案

这是 JSFuck ,一种深奥的编程语言,实际上是有效的 JavaScript,因此您不需要任何特殊的解释器/编译器来运行它。

最流行的只涉及使用 6 个字符 ([]()!+),但你的有点不同,因为它也使用 /=, ", ', ,, {, } code> 和 (空白)。

它通过利用 JavaScript 的一些不错的特性来工作。

例如,我们知道 [] 是一个真值,因此 ![] 会产生 false

使用相同的逻辑,我们可以通过执行 !![] 获得 true

数字也可以实现。我们知道 false 等于 0,所以下面的表达式是有道理的:0 + false == 0,对吧?确实如此。我们知道false可以写成![],我们知道我们可以省略表达式左边的0 : +![] == 0

同样可以用 true1 表示:+!![]

数字2可以通过将两个1相加得到:(+!![])+(+!![]),等等。

有了这些逻辑,您几乎可以做任何事情。

例如,获取字母 "a" 的一种流行方法是生成 NaN 结果,将其转换为字符串 ("NaN"),然后得到索引1处的字母,即"a"

好吧..我们知道我们可以获得 "alert(1)",但是我们如何执行它呢?

我们不能使用 eval,因为那样需要使用 JSFuck 不允许的字符。

嗯,大多数人的做法是这样的:

  • 确定Array.prototype 的一个众所周知的函数,比方说indexOf
  • 获取其constructor实例
  • 将字符串化的代码传递给这个构造函数
  • 执行结果

所以,总结一下:

// You can try this on your browser!
[]["indexOf"]["constructor"]("alert(1)")()

我们知道我们可以在 JSFuck 上生成字母字符,我们也知道我们可以生成数字,所以上面那行代码实际上是很有可能的。

关于javascript - 这么深奥的JS代码怎么解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47520309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com