zoukankan      html  css  js  c++  java
  • javascript

    jsfuck
    http://lz12366.iteye.com/blog/961062
    一. 可变变量
    先介绍一下php中的可变变量,简单理解来说就是设置为的变量还是变量的意思,有一点嵌套的感觉,实现的时候就在加一个$就可以了
    要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。
    类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。例如,对于 $foo->$bar 表达式,则会在本地范围来解析 $bar 并且其值将被用于 $foo 的属性名。对于 $bar 是数组单元时也是一样。

    • 注意,在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。$this 变量也是一个特殊变量,不能被动态引用。
      二. 超全局变量
      超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量。

    然后就到了非常精妙的时刻了,有才有才。
    js加密的过程,可以慢慢理解。

    1. $先赋值为一个空数组 (后面会被覆盖)
    2. __ = ![] + [] = false + [] = "false" 这里利用了javascript运算的强制类型转换特性。首先空数组是一个非null值,因此![]的结果是false(布尔型)。在计算false + []时,由于数组对象无法与其他值相加,在加法之前会先做一个toString的转换,空数组的toString就是"",因此事实上在计算false + ""。这时false被自动转换为字符串。最终结果是"false"+"" = "false"。 换句话说,在$为空数组时,使用 “+$”的方式可以将任何一个值转为字符串
    3. 在计算[]时,需要一个数字操作数,空数组无法直接转换为数字,则作为0处理。因此~[] = ~0 = -1。
      Java代码
      参考:
      ~3 = -4
      ~[3] = -4
      ~[3,2] = -1 (无法转为数字)
      ~"3" = -4
      ~"abc" = -1
      因此: _ = ---~[] = ---(-1) = --1 = -~-(-2) = -~2 = -(-3) = 3 理论上,可以用这种方式得出1-9所有数字
    4. !''是true,使用+$将其变为字符串 "true"
    5. 这里需要注意的是,之前一直用“值+[]”来获得“值”的字符串形式。而“+[]”则是0(正号导致[]被自动转换为数值0)。因此:$$ = "true"[3/3] + "true"[+[]] = "true"[1] + "true"[0] = "rt"
    6. __[_] = "false"[3] = "s"
    7. ({} + [])导致空对象{}被转换为字符串"[object Object]", 因此({}+$)[/] = "[object Object]"[1] = "o"
    8. 这里把$覆盖为 [[]]["s"+"o"+"rt"]。注意这里[[]]本身是一个包含空数组的数组,其实对这一步来说,任何一个数组都没有关系(不一定要是嵌套数组),但作者巧妙地把$的首次赋值式放在了数组内部,使代码更为紧凑。最终结果是,$ = [[]]["sort"] = [[]].sort = Array.prototype.sort。
    9. 调用$(),作为整个表达式最终的取值。需要注意,$是全局范围的,是window的一个属性,相当于window.$。而Array.prototype.sort会返回this。对于window.$来说,this就是window。因此,整个第一部分的值,就是window本身!当然,这个过程的正确运作依赖于当前浏览器的Array.prototype.sort实现能对this为window的情况容错。

    接下来介绍js的7种加密方式
    引自于https://blog.csdn.net/doulinxu/article/details/60766242
    一:最简单的加密解密
      二:转义字符""的妙用
      三:使用Microsoft出品的脚本编码器Script Encoder来进行编码 (自创简单解码)
      四:任意添加NUL空字符(十六进制00H) (自创)
      五:无用内容混乱以及换行空格TAB大法
      六:自写解密函数法
      七:错误的利用

  • 相关阅读:
    Java 自动装箱与拆箱(Autoboxing and unboxing)【转】
    工厂方法和new
    java线程池【转】
    大型网站架构演化过程
    jsp el表达式
    GC垃圾回收
    mysql语句
    String StringBuilder StringBuffer
    粉丝关注数据库表的设计
    ECharts图表之柱状折线混合图
  • 原文地址:https://www.cnblogs.com/blankicefire/p/8947659.html
Copyright © 2011-2022 走看看