不让我C? 我偏要C ! 分享下web过反调试的一些基本操作

铁子们在网页cilicili的时候通常会遇到一些反调试debugger

反调试debugger的原理是什么呢?它在何时触发?如何绕过?本文就从实战的角度来浅浅的分享一些基本的操作

声明:本文所提及的技术仅供学习和交流之用,不得用于任何非法或未经授权的活动。使用本技术信息时,您应遵守所有适用的法律和法规,并承担因违反这些法律和法规而产生的所有责任。

话不多说直接开始

测试案例1

首先使用常规的右键,F12操作,直接嘎调

ef7f633022365b20aafafc3efe7a6dc
0eb1ddf154fa79e83371e608729bccd

不过显然不是问题,直接手动打开,毫无压力,过!!!!

下面遇到第二个问题,这种情况可能是检测窗口大小的。

image

选择把调试调试工具停靠侧独立出来,过!!!!

接下来就自由发挥了下面进行第二个案例

测试案例2

首先还是常规打开控制台,发现直接断住了

直接选择不在此处暂停或者选择条件为false的条件断点,直接下一步

发现还有高手,继续走上一步的操作,发现开始套娃了,咋点下一步都是这玩意儿,哥们都点一排了还是这破东西

参数看着怪怪的赋个空试试

_$db = null

换地方了!!!!继续一直不在此处暂停发现又套娃了,一看这是个eval.

什么是eval? 就当字符串这块长这样就是eval

(function() {var a = new Date(); debugger; return new Date() - a > 100;}())

直接赋为空继续过

eval_a = eval
eval = function(a){
    if (a === '(function() {var a = new Date(); debugger; return new Date() - a > 100;}())'){
        return null;
    }else{
        return eval_a(a)
    }
}

继续下一步过!!!

???哥们这东西是不是在哪见过,咋又出来了,看样子不是刚刚参数的问题.

点进源码里面去逛逛,找了半天感觉像是构造器,先试试再说

var _constructor = constructor;
Function.prototype.constructor = function(s){
    if (s ==="debugger"){
//console.1og(s);
        return null;
    }
    return _constructor(s); 
}

wc了还真是,直接顺利进入,接下来该干嘛干嘛了

接下来再说说测试案例里面没碰到的

就像上面这个gov里面是在构造器里面启动的套娃debugger,有的网站也有可能是用的定时器(setInterval)启动,没有非人类的手速在定时器反应过来之前完事的建议还是同样赋空干他

方法1:
setInterval = function(){}
方法2:
var new_setinterval = setInterval;

    window.setInterval = function(a,b){
        if(a.toString().indexOf("debugger")!=-1){
            return null
        }
        new_setinterval(a,b);
    }

有的时候还会碰到不能赋空的情况,这种可能是代码在之前将范围设置为const这种的不能变了

解决方法:打开油猴直接进行注入

image

最后要是所有的方法都不行怎么办??? :melting_face: :melting_face: :melting_face:

2cc86c5b448b69cb03b98b879ce1e74

掀桌子直接都别玩了,后续通过抓包工具进行分析了 :smiling_imp: :smiling_imp:

image

篇幅有限就讲这么多了,菜鸡一枚,欢迎大佬进行补充 :smiling_face_with_three_hearts: :smiling_face_with_three_hearts: :smiling_face_with_three_hearts:

说漏的:文件替换,当找到代码中有debugger时可以直接复制他的代码然后在本地进行复制删掉debugger然后替换

image

166 Likes

前端的东西,玩不明白

前排

始皇好像用的debugger :laughing:

这就叫道高一尺魔高一丈

楼主试下这个 ja-netfilter

这是啥 :face_with_peeking_eye:,好像没反调试啊

devtools的源码overrides可以直接修补js代码绕过或增加逻辑,对于大部分反调试手段都有效

2 Likes

自己搭的jetbrain激活,套了cf的access,需要自己邮箱接码后进入就能看到了

1 Like

看到佬友分享,也稍微补充一点可能可行的方法。

1.先在任意网页打开开发者工具,再输入目标网址进入网站。
2.尝试在请求网站的 url 中添加请求参数,?debug=true
3.在任意网页打开开发者工具,进入手机仿真调试,然后输入目标网址进入,调试目标网页的手机版。

1 Like

小弟才疏学浅,看不懂:)

有意思, 学到了

之前一直出现Debugger就放弃了, 没想到还有种方案

学习了。

新版Firefox是不是可以直接解决无限debugger

2 Likes

主打一个叛逆

果真么,没咋用过火狐 :face_with_peeking_eye:

1 Like

点赞收藏

一般都是用的你 :rofl:

1 Like

测试案例1的反debugger好像加强了,把devtool独立出来还是会跳检测到调试的页面了

2 Likes

直接一律不再此处暂停

1 Like