问题标签 [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.
javascript - 如何解码 JSFuck 脚本?
我在 JavaScript 中有这段代码:
在控制台中,它将返回
以及如何解码大量与上述文本相似的文本?例如:
我想看纯脚本。
javascript - 使用jint解码Jsfuck
我正在尝试使用 jint 来解码 jsfuck,并以这个项目为基础:https://github.com/enkhee-Osiris/Decoder-JSFuck(这是我发现的唯一一个可以正确解码 jsfuck 的) . 以下 c# 无法正常工作:
我收到以下异常:Line 2: Unexpected token ILLEGAL
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.
javascript - + 运算符的奇怪行为从何而来?
在偶然发现 JSFuck(一种仅使用 6 个字符 []()+! 并且是完全有效的 javascript 代码的深奥语言)时,我看到在 Javascript 中将 2 个数组加在一起会[] + []
返回一个空字符串''
。通常添加数组也会将表达式转换为字符串
例如:false + []
给'false'
.
为什么这个或这个来自哪里,我在哪里可以找到比javascript 运算符的文档更完整的这些特殊行为的文档。非常感谢您提前提供的帮助,我很想扩展我对 JavaScript 的理解。
javascript - eval() 在 Node.js 和 chrome 上的行为是否不同?
在 NodeJS (12.10.0) 上,如果我尝试eval
一些 JSFuck,则会收到错误消息:
但是在 chrome 72 上,如果我在控制台中做同样的事情,我会得到apN3
.
javascript - 可以使用 JSFuck 约定调用具有 2 个或更多参数的函数吗?
假设我有一些字符串,我想使用函数“replace”(忽略你头脑中的 console.log 和白色字符)
我想使用jsfuck(更多信息here)减少此代码的使用字符,我手动执行如下操作(忽略日志、评论、白字符、新行)
如您所见,我将第一个代码转换为仅使用 6 个字符的代码:[]{}!+(这是 jsfuck 的想法)
问题:可以用 2 个参数调用函数替换 - 像这样:"truefalse"["replace"]("true","1")
并在 JSF 中以类似的方式编写它(没有任何将字符串解释为代码的“eval”)?我有/看到逗号分隔参数的问题...... :(
PS:我提供了指向我的 jsfuck 分支的链接(它是最新的 - 并且产生的输出比 jsfuck.com 旧站点小得多)
javascript - JSFuck:具有 2 个(或更多)参数的函数调用序列,没有嵌套
这是这个问题的延续,更困难的情况。假设我想用 2 个参数调用字符串函数,例如
在第一步中,我将字符集减少为jsfuck约定,其中我们有 6 个可用字符:[]()!+
并且 az 字母和数字被"
字符包围 - JS 字符串(很容易转换为这 6 个字符):
这里的问题是逗号(禁止字符),但我们可以通过使用trincot发现的以下巧妙技术来克服这个问题:
但新的问题出现了:
可以调用具有 2 个(或更多)参数的函数序列而不嵌套它们(这是由上述技术强加的),但是以“流动”方式,我们在右侧调用下一个函数,例如"truefalse".replace("true",1).replace("false",0)..
:(不使用 'eval' 之类的将字符串解释为代码的解决方案)?(对于具有一个参数的函数,例如"truefalse"["replace"]("true")["replace"]("false")
:)
javascript - 使用 JSFuck 约定访问 RegExp
我想替换字符串中的一些字符,例如
但是使用jsfuck约定,其中只允许 6 个字符:[]()!+
,为了提高可读性,这里也允许带有字母 az 和 AZ 以及数字 0-9 的 JS 字符串(因为很容易将这些字符串转换为 6 字符的 jsf 代码)。所以我可以这样写
但在上面的代码中,我使用了禁止字符 - 逗号:,
。因此,我使用trincot 在这里发现的 2 个(以及更多)参数调用函数的技术,如下所示
现在我想在替换函数中使用正则表达式并使用上述限制编写代码
但我不知道如何处理正则表达式部分/e/g
?不使用任何类型的“eval”(字符串被解释为代码)就可以做到这一点?
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)')()
- 这是禁止的)
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)
:)