小白hook无限debugger

查看 66|回复 11
作者:YIUA   
[md]## 常见debugger及如何Hook
1、直接使用debugger
2、使用 eval() 函数
eval("debugger;")
eval('(function() {var a = new Date(); debugger; return new Date() - a > 100;}())')
3、定时器触发
setInterval(function (){debugger;},4000);
第一种:永不在此断点
在debugger左边,右键,选择永不在此断点或者编辑该断点改为false。
优点:简单,易上手
缺点:如果存在内存爆破,无限调用,该方法会使浏览器卡死

第二种:Hook 无限 debugger 函数
通过定时器实现的debugger,必须要从根源进行hook,否则定时器会一直重复执行,也就是必须在定时器执行前将定时器给hook掉
setInterval(function () {
    debugger
}, 500)
猿人学第一题就是该类型,在不使用第一种方法的情况下我们可以这样做

首先在定时器还未运行前进行断点,然后进行hook,下面给一种最简单的hook方法
window.setInterval = function(){};
2.构造器类型debugger
特征点就是有constructor
Function.prototype.__constructor_back = Function.prototype.constructor;
Function.prototype.constructor = function() {
    if(arguments && typeof arguments[0]==='string'){
        if("debugger" === arguments[0]){
            return
        }
    }
   return Function.prototype.__constructor_back.apply(this,arguments);
}
第三种:本地替换
将网页js保存到本地,把debugger函数进行修改然后使用浏览器开发者工具替换修改js,或者通过FD工具替换。
方式五:使用Fiddler、油猴等插件Hook
1.首先打开想要过debugger的网页
2.点击油猴,选择添加新脚本
3.在下面的自调用函数中写hook方法
4.点击文件保存,然后刷新网页就可以用了

Fiddler工具(如何安装证书的教程请百度,这里只讲如何hook)
1.打开工具,使用编程猫插件的注入hook
2.地址清空,然后勾选开启
3.进入调试的网页刷新即可

[/md]

定时器, 断点

wfghim   

还有一种方式,直接改浏览器的程序集文件,让他识别到后,不执行debugger
YIUA
OP
  


Alterx 发表于 2024-3-18 14:59
100px.net  大佬试试这个

利用本地替换,在html文件打个debugger,然后搜索页面的文字会搜到一个方法,你可以把方法直接删掉试试,我是提前打开debugger然后跟着跟着就过了,之前那个回答有误
Lisboy777   

学到了。谢谢大佬!
TONGXIAOYU1   

谢谢楼主分享,辛苦了。。。。。。。。。
zhengsg5   

感谢分享,学习了!
kapibl   

学到了,感谢
whathaohao   

这个debugger方法 学到了,谢谢分享
wsdsg666   

学到了。谢谢大佬!
lws0318   

学到了,谢谢大佬!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部