问题标签 [jsfuck]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
22609 浏览

javascript - 如何解码 JSFuck 脚本?

我在 JavaScript 中有这段代码:

在控制台中,它将返回

以及如何解码大量与上述文本相似的文本?例如:

我想看纯脚本。

0 投票
1 回答
1074 浏览

javascript - 使用jint解码Jsfuck

我正在尝试使用 jint 来解码 jsfuck,并以这个项目为基础:https://github.com/enkhee-Osiris/Decoder-JSFuck(这是我发现的唯一一个可以正确解码 jsfuck 的) . 以下 c# 无法正常工作:

我收到以下异常:Line 2: Unexpected token ILLEGAL

0 投票
1 回答
569 浏览

javascript - How to explain such esoteric JS code

This code is equal to alert(1), but how does it work ? I don't see eval here.

0 投票
1 回答
92 浏览

javascript - + 运算符的奇怪行为从何而来?

在偶然发现 JSFuck(一种仅使用 6 个字符 []()+! 并且是完全有效的 javascript 代码的深奥语言)时,我看到在 Javascript 中将 2 个数组加在一起会[] + []返回一个空字符串''。通常添加数组也会将表达式转换为字符串

例如:false + []'false'.

为什么这个或这个来自哪里,我在哪里可以找到比javascript 运算符的文档更完整的这些特殊行为的文档。非常感谢您提前提供的帮助,我很想扩展我对 JavaScript 的理解。

0 投票
2 回答
88 浏览

javascript - eval() 在 Node.js 和 chrome 上的行为是否不同?

在 NodeJS (12.10.0) 上,如果我尝试eval一些 JSFuck,则会收到错误消息:

但是在 chrome 72 上,如果我在控制台中做同样的事情,我会得到apN3.

0 投票
2 回答
247 浏览

javascript - 可以使用 JSFuck 约定调用具有 2 个或更多参数的函数吗?

假设我有一些字符串,我想使用函数“replace”(忽略你头脑中的 console.log 和白色字符)

我想使用jsfuck(更多信息here)减少此代码的使用字符,我手动执行如下操作(忽略日志、评论、白字符、新行)

如您所见,我将第一个代码转换为仅使用 6 个字符的代码:[]{}!+(这是 jsfuck 的想法)

问题:可以用 2 个参数调用函数替换 - 像这样:"truefalse"["replace"]("true","1")并在 JSF 中以类似的方式编写它(没有任何将字符串解释为代码的“eval”)?我有/看到逗号分隔参数的问题...... :(

PS:我提供了指向我的 jsfuck 分支的链接(它是最新的 - 并且产生的输出比 jsfuck.com 旧站点小得多)

0 投票
1 回答
165 浏览

javascript - JSFuck:具有 2 个(或更多)参数的函数调用序列,没有嵌套

这是这个问题的延续,更困难的情况。假设我想用 2 个参数调用字符串函数,例如

在第一步中,我将字符集减少为jsfuck约定,其中我们有 6 个可用字符:[]()!+并且 az 字母和数字被"字符包围 - JS 字符串(很容易转换为这 6 个字符):

这里的问题是逗号(禁止字符),但我们可以通过使用trincot发现的以下巧妙技术来克服这个问题:

但新的问题出现了:

可以调用具有 2 个(或更多)参数的函数序列而不嵌套它们(这是由上述技术强加的),但是以“流动”方式,我们在右侧调用下一个函数,例如"truefalse".replace("true",1).replace("false",0).. :(不使用 'eval' 之类的将字符串解释为代码的解决方案)?(对于具有一个参数的函数,例如"truefalse"["replace"]("true")["replace"]("false"):)

0 投票
1 回答
145 浏览

javascript - 使用 JSFuck 约定访问 RegExp

我想替换字符串中的一些字符,例如

但是使用jsfuck约定,其中只允许 6 个字符:[]()!+,为了提高可读性,这里也允许带有字母 az 和 AZ 以及数字 0-9 的 JS 字符串(因为很容易将这些字符串转换为 6 字符的 jsf 代码)。所以我可以这样写

但在上面的代码中,我使用了禁止字符 - 逗号:,。因此,我使用trincot 在这里发现的 2 个(以及更多)参数调用函数的技术,如下所示

现在我想在替换函数中使用正则表达式并使用上述限制编写代码

但我不知道如何处理正则表达式部分/e/g?不使用任何类型的“eval”(字符串被解释为代码)就可以做到这一点?

0 投票
2 回答
70 浏览

javascript - 使用 jsfuck 将带有一个参数的函数传递给 array.map

我想将以下代码(忽略 console.log)转换为jsfuck约定,其中只[]()!+允许使用字符(但为了清楚起见,这里也允许使用 aZ 和 0-9 字符的数字和字符串(用双引号括起来) - 因为转换这样的字符串/数字[]()!+很​​容易)

部分转换后我有

问题是我无法将参数传递x给 map 函数。

问题:如何将函数转换x=>x**2为 jsf 并将其作为map参数传递?

(我不想使用'eval'之类的解决方案,我们将map字符串放入将作为代码执行的字符串,例如[]["fill"]["constructor"]('return [1,2,3,4,5].map(x=>x**2)')()- 这是禁止的)

0 投票
3 回答
136 浏览

javascript - 使用 jsfuck 约定以流方式调用数组的方法

这是这个问题的延续,但对于 ARRAYS。假设我想用 2 个参数调用数组函数,例如

在第一步中,我将字符集减少为jsfuck约定,其中我们有 6 个可用字符:([]()!+为了清楚起见:az AZ 字母被"(JS 字符串)和数字包围 - 很容易转换为这 6 个字符):

这里的问题是逗号(禁止字符),但我们可以通过使用trincot发现的以下巧妙技术来克服这个问题:

但新的问题出现了:

可以调用具有 2 个(或更多)参数的函数序列而不嵌套它们(这是由上述技术强加的),但是以“流动”方式,我们在右侧调用下一个函数,例如[3,4,5].slice(1,2).concat(6).. :(不使用 'eval' 之类的将字符串解释为代码的解决方案)?(对于具有一个参数的函数,例如[3,4,5].slice(1).concat(6):)