无限debugger学习

一、无限debugger的主要作用是啥?

反调试:阻止我们调试和分析目标代码的运行逻辑

二、 无限debugger的基本实现

debugger关键字的应用:
Function/eval “debugger”
function debugger

三、解决方案

一、禁用所有断点

无限debugger学习
无法调试、分析代码

二、禁用某处的断点

在需要禁用的“某处”右键选择“Never pause here”,该行会出现黄色的标识
无限debugger学习
上图中,黄色的是禁用此处的断点,绝对不在此处暂停
蓝色的是在此处断点

如果是一个死循环的话,可能会一直陷在这个循环中,直至浏览器内存爆了,所以使用这个方式处理时需要先判断循环的次数。

三、条件断点

在需要禁用的“某处”右键,选择Add conditional breakpoint…
无限debugger学习
此处我添加的条件是false,让这里永远是假,就不会执行了,添加后这里的标志也是黄色的。

四、利用中间人替换字符串

主要是借助其他工具将debugger替换成’debuger’,将关键字变成字符串,使关键字失去它的作用
第三方的工具主要有:fiddler、mitmproxy等,如果有需要请自行百度学习

五、reres替换本地修改过的文件

思路:首先获取js文件,下载到本地,将文件修改(将debugger删除或者改写),重新请求时使用本地修改过的js文件,具体操作请自行百度

六、重写关键函数(使用较多)

注意事项:
断点设置在debugger函数声明之后
然后使用置空法,将debugger函数改写为空

无限debugger学习

另外根据一位热心网友的提示,有一种比较简单的方式也可以**
1、打开F12的Console
2、输入(function(){}).constructor === Function,回车
3、如果返回的是true,继续输入Function.prototype.constructor = function(){},并回车;
4、切换回sources选项卡,点击继续执行,无限debugger的问题就解决了
如果第二步返回的是false,则此方法不可用
该方法参考来源:夜幕爬虫安全论坛某贴,如有侵权,请联系我,会及时处理