web逆向学习

一种执行debugger函数的方式

1
(function() {}['constructor']('debugger')())

逐步分析:

  1. 每个 JavaScript 函数实际上都是一个 Function 对象。运行 (function(){}).constructor === Function // true 便可以得到这个结论,所以(function() {}['constructor']) 就是 Function

  2. (function() {}['constructor']('debugger'))创建了一个anonymous函数,函数执行语句只有一行debugger。等同于

    1
    2
    3
    function () {
    debugger
    }
  3. (function() {}['constructor']('debugger')())将第二步的anonymous函数立即执行。等同于

    1
    2
    3
    (function () {
    debugger
    }())

用途:常用于反web逆向调试,通过一些检测方式捕获到浏览器处于调试模式时,循环执行此函数,即可影响web调试。