开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[MOD开发讨论] JsFuck 部分运作原理

 发表于 2024-2-4 14:04:50 来自手机|显示全部楼层|阅读模式 IP:河北省
Jsfuck官网: https://jsfuck.com/
Jsfuck呢作为一种很有意思的js编码方式,经常被用来加密或者整活

这是官方的介绍
  1. JSFuck is an esoteric and educational programming style based on the atomic parts of JavaScript. It uses only six different characters to write and execute code.

  2. It does not depend on a browser, so you can even run it on Node.js.

  3. Use the form below to convert your own script. Uncheck "eval source" to get back a plain string.
复制代码


这是官方的描述
Basics

  1. false       =>  ![]
  2. true        =>  !![]
  3. undefined   =>  [][[]]
  4. NaN         =>  +[![]]
  5. 0           =>  +[]
  6. 1           =>  +!+[]
  7. 2           =>  !+[]+!+[]
  8. 10          =>  [+!+[]]+[+[]]
  9. Array       =>  []
  10. Number      =>  +[]
  11. String      =>  []+[]
  12. Boolean     =>  ![]
  13. Function    =>  []["filter"]
  14. eval        =>  []["filter"]["constructor"]( CODE )()
  15. window      =>  []["filter"]["constructor"]("return this")()
复制代码


讲解
想要理解jsfuck需要对js有足够的基础,接下来我来对内容进行详细的讲解
  1. false >![]
复制代码

[]代表数组类型,我们要把他转换成原始类型
我们先试着用valueof方法还原 然后发现他会报错
既然valueof不行 那么我们就换一种方法
  1. [].toString()
复制代码

我们试着将[]转换为字符串
这样我们就得到了一个空字符串
此时他是有值的 值是一个空字符串 所以他就代表true
那么![] = !true就能得出false

然后再讲一下true
为什么true前面要加上两个!呢
因为[]就代表[]
!!代表!false也就是true

undefined同理
[]表示数组[][[]]就表示数组[]里的第[]个
然后我们可以把他理解为[][1]
拿 true == 1 举例 他返回true
true会转换为1
[]的第一位没有声明值
所以返回undefined

NaN代表非数字(not a number)
我们来分析一下
[![]] 的意思我们可以理解为false
( 为啥看前面 我就不老讲了 )
false是一个布尔值
所以就会返回NaN
不是一个数字

+[]很好理解
[]代表空字符串
+运算符遇到数组时会先调用toString()来将数组转换为字符串,然后转换为数字相加
那不就是0么

然后讲一下类型
Array表示数组 这个很基础 都知道应该
+[] 把空字符串转换为数字类型也就是Number
String 运用了+号的特性 []代表""
那字符串之间用+代表拼接 所以[]+[]不是数字类型
而是字符串类型
因为值可以代表布尔类 所以[]加上逻辑运算符!就可以得到布尔变量 这个一般用来判断是否存在值 而不需要typeof返回类型

function我没理解还 等我研究透了我再讲
苦力怕论坛,感谢有您~
 楼主|  发表于 2024-2-4 14:09:17 来自手机|显示全部楼层 IP:河北省
冒昧问一句,都看明白了么
2#2024-2-4 14:09:17回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-2-4 14:14:05|显示全部楼层 IP:天津
jsfuck的原理类似brainfuck,其实都差不多。
3#2024-2-4 14:14:05回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 楼主|  发表于 2024-2-4 14:16:40 来自手机|显示全部楼层 IP:河北省
lihl 发表于 2024-2-4 14:14
jsfuck的原理类似brainfuck,其实都差不多。

挺有意思的
4#2024-2-4 14:16:40回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-9-22 16:13:16 来自手机|显示全部楼层 IP:广东省
输出helloworld都要6132个字符。。。
5#2024-9-22 16:13:16回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-21 16:38

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3