// 原版
setInterval(function() {
check()
}, 4000);
var check = function() {
function doCheck(a) {
if (("" + a/a)["length"] !== 1 || a % 20 === 0) {
(function() {}
["constructor"]("debugger")())
} else {
(function() {}
["constructor"]("debugger")())
}
doCheck(++a)
}
try {
doCheck(0)
} catch (err) {}
};
check();
// 简化版 效果一样
const check = () => {
// 这里为什么能检测 我真没看出来有什么特殊的地方
/**
猜测是在一瞬间瞬间让你的函数调用超出最大限制, 然后导致控制报错,
此时这个函数下的就存在了某个可以让你进行 debugger 操作的函数, 有大佬可以解释下吗?
本意是为了方便开发者调试结果变成了拦截开发者
**/
const doCheck = (a) => {
(function() {}["constructor"]("debugger")()); // 立即执行匿名函数 调用 constructor函数传入 字符串 "debugger"
doCheck(++a); // 递归调用
};
try {
doCheck(0);
} catch (err) {
console.log("err", err); // 超出最大调用限制 Maximum call stack size exceeded
}
};
check();
// 每隔4秒检测一次
setInterval(check, 4000);
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询