无限reload
反调试原理
控制台打开后,才会执行 console.warn 方法,进而触发reload方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function forceReload() {
const context = {
log: (...args) => {
/**
* 不显式调用console.xx函数,避免被构建时的remove console 配置移除
*/
const a = console
a.warn(...args)
},
reload: () => {
location.href = '/'
}
}
context.log(
Object.defineProperties(new Error(), {
toString: {
value() {
const error = new Error()
if (error?.stack && error?.stack.includes('toString@')) {
context.reload()
}
}
},
message: {
get() {
context.reload()
}
}
})
)
}
forceReload()
</script>
</body>
</html>
反反调试原理
油猴插件设置window.onbeforeunload = () => false
,弹出里面点取消即可
无限debugger
反调试
利用setInterval,里面无限执行 debugger
setInterval(()=>{debugger},1000)
反反调试
F12在 sources 里面关掉 deactivate breakpoint 就行