web逆向学习
一种执行debugger函数的方式
1 | (function() {}['constructor']('debugger')()) |
逐步分析:
每个 JavaScript 函数实际上都是一个 Function 对象。运行 (function(){}).constructor === Function // true 便可以得到这个结论,所以
(function() {}['constructor'])
就是Function
(function() {}['constructor']('debugger'))
创建了一个anonymous函数,函数执行语句只有一行debugger。等同于1
2
3function () {
debugger
}(function() {}['constructor']('debugger')())
将第二步的anonymous函数立即执行。等同于1
2
3(function () {
debugger
}())
用途:常用于反web逆向调试,通过一些检测方式捕获到浏览器处于调试模式时,循环执行此函数,即可影响web调试。