JS逆向-关于jsfuck的处理

文章开始我本想和大家用 JSFuck 打个招呼,结果发现是我天真了,简单的一句 hello world 转换后有近 5 W 字符。

所以大家将就看看下面的图:

【表情】

JSFuck是什么?

下面这个网站是 JSFuck 的官网:

http://www.jsfuck.com/

我们可以使用它对我们原有的 JS 代码进行编码风格上的转换。

JSFuck 是使用 []()!+ 六种字符来表示原有的字符的,就像下面这样的对应关系:

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

当然还有更多的对应关系没有列出来,但是这并不重要,我们只需要知道 JSFuck 是什么就可以了,接下来我们实战走一波。

如何在实战中处理 JSFuck?

JSFuck 的处理方法有以下几种:

1
2
3
document.write(xxx)
alert(xxx)
console.log(xxx)

这里的 xxx 指的就是 JSFuck 的内容,解决方法很简单,我们拿个例子测试一下。

这里本来想拿某文书网的 JSFuck 实战的,但是自从某文书网下了瑞数之后,整个网站频繁瘫痪。

猝。

所以这里用另一个例子测试一下,因为处理的方法是通用的:

复制 JSFuck ,打开 开发者模式,切换至 Console 选项卡,输入下面的内容并执行:

1
console.log(xxx)

执行结果如下:

这里看到提示Cannot read property 'attr' of null 我们不管他,我们注意到右手边的vm87:1,点进去看看:

这里就是浏览器为我们还原的代码了,用其他的方法也是同样的效果。

欢迎大家提供更多 JSFuck 的案例,本文测试的 JS 已经上传至 Github , 后台回复「js逆向」即可获取地址。

本文完。

煌金 wechat
扫描关注公众号,回复「1024」获取为你准备的特别推送~
  • 本文作者: 煌金 | 微信公众号【咸鱼学Python】
  • 本文链接: http://www.xianyucoder.cn/2019/07/16/js加密学习15-jsfuck/
  • 版权声明: 本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!