js逆向之js无限debugger的原理探索

采集pc数据的时候,会遇到很多的反爬机制。今天尝试探索下如何在合适的条件下触发js的无限debugger。

执行效果

在这里插入图片描述

关键词解读

  • 合适的条件触发

    • 打开控制台
    • 一段js代码的执行时间比平时要长
    • 。。。
  • 无限debugger

    • setInterval 间隔1s执行一次debugger代码
我们认为合适的触发条件就是有极大的可能此代码在被非法调试

原理

这里我尝试的是监控控制台的打开,如果控制台打开,那么就执行setInterval 中的无限debugger代码。
控制台打开的监控其实是监控window.visualViewport 下的宽度和高度的变化,如果发生变化,就认为控制台是打开的。

代码

  • 原始代码
<script>
    var width = window.visualViewport.width;
    var height = window.visualViewport.height;
    setInterval(function () {
        var new_width = window.visualViewport.width;
        var new_height = window.visualViewport.height;
        if(new_width<width||new_height<height){
           eval('!function(){debugger}()')

        }
        },1000)

</script>
  • 混淆后
$ = ~[];
    $ = {
        ___: ++$,
        $$$$: (![] + "")[$],
        __$: ++$,
        $_$_: (![] + "")[$],
        _$_: ++$,
        $_$$: ({} + "")[$],
        $$_$: ($[$] + "")[$],
        _$$: ++$,
        $$$_: (!"" + "")[$],
        $__: ++$,
        $_$: ++$,
        $$__: ({} + "")[$],
        $$_: ++$,
        $$$: ++$,
        $___: ++$,
        $__$: ++$
    };
    $.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$;
    $.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;
    $.$ = ($.___)[$.$_][$.$_];
    $.$($.$($.$$ + "\"" + "\\" + $.$__ + $.___ + "\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\" + $.__$ + $.$$_ + $._$_ + "\\" + $.$__ + $.___ + "\\" + $.__$ + $.$$_ + $.$$$ + "\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\" + $.__$ + $.$_$ + $.___ + "\\" + $.$__ + $.___ + "=\\" + $.$__ + $.___ + "\\" + $.__$ &#
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值