js逆向之js无限debugger的原理探索
Posted 「已注销」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>
- 混淆后
$ = ~[];
$ =
___: ++$,
$$$$: (![] + "")[$],
__$: ++$,
$_$_: (![] + "")[$],
_$_: ++$,
$_$$: ( + "")[$],
$$_$: ($[$] + "")[$],
_$$: ++$,
$$$_: (!"" + "")[$],
$__: ++$,
$_$: ++$,
$$__: ( + "")[$],
$$_: ++$,
$$$: ++$,
$___: ++$,
$__$: ++$
;
$.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$;
$.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;
$.$ = ($.___)[$.$_][$.$_];
$.$($.$($.$$ + "\\"" + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\\\" + $.__$ + $.$$_ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\\\" + $.__$ + $.$_$ + $.___ + "\\\\" + $.$__ + $.___ + "=\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$_$ + $._$ + "\\\\" + $.__$ + $.$$_ + $.$$$ + ".\\\\" + $.__$ + $.$$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$$_ + $._$$ + $._ + $.$_$_ + (![] + "")[$._$_] + "\\\\" + $.__$ + $._$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$$_ + $.___ + $._$ + "\\\\" + $.__$ + $.$$_ + $._$_ + $.__ + ".\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\\\" + $.__$ + $.$_$ + $.___ + ";\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\\\" + $.__$ + $.$$_ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$_$ + $.___ + $.$$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$__ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.___ + $.__ + "\\\\" + $.$__ + $.___ + "=\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$_$ + $._$ + "\\\\" + $.__$ + $.$$_ + $.$$$ + ".\\\\" + $.__$ + $.$$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$$_ + $._$$ + $._ + $.$_$_ + (![] + "")[$._$_] + "\\\\" + $.__$ + $._$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$$_ + $.___ + $._$ + "\\\\" + $.__$ + $.$$_ + $._$_ + $.__ + ".\\\\" + $.__$ + $.$_$ + $.___ + $.$$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$__ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.___ + $.__ + ";\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $._$$ + $.$$$_ + $.__ + "\\\\" + $.__$ + $.__$ + $.__$ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.__ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $._$_ + "\\\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + (![] + "")[$._$_] + "(" + $.$$$$ + $._ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$__ + $.__ + "\\\\" + $.__$ + $.$_$ + $.__$ + $._$ + "\\\\" + $.__$ + $.$_$ + $.$$_ + "\\\\" + $.$__ + $.___ + "()\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\\\" + $.__$ + $.$$_ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "_\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\\\" + $.__$ + $.$_$ + $.___ + "\\\\" + $.$__ + $.___ + "=\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$_$ + $._$ + "\\\\" + $.__$ + $.$$_ + $.$$$ + ".\\\\" + $.__$ + $.$$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$$_ + $._$$ + $._ + $.$_$_ + (![] + "")[$._$_] + "\\\\" + $.__$ + $._$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$$_ + $.___ + $._$ + "\\\\" + $.__$ + $.$$_ + $._$_ + $.__ + ".\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\\\" + $.__$ + $.$_$ + $.___ + ";\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\\\" + $.__$ + $.$$_ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "_\\\\" + $.__$ + $.$_$ + $.___ + $.$$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$__ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.___ + $.__ + "\\\\" + $.$__ + $.___ + "=\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$_$ + $._$ + "\\\\" + $.__$ + $.$$_ + $.$$$ + ".\\\\" + $.__$ + $.$$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$$_ + $._$$ + $._ + $.$_$_ + (![] + "")[$._$_] + "\\\\" + $.__$ + $._$_ + $.$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$$_ + $.___ + $._$ + "\\\\" + $.__$ + $.$$_ + $._$_ + $.__ + ".\\\\" + $.__$ + $.$_$ + $.___ + $.$$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$__ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.___ + $.__ + ";\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$$$ + "(\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "_\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\\\" + $.__$ + $.$_$ + $.___ + "<\\\\" + $.__$ + $.$$_ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.__ + "\\\\" + $.__$ + $.$_$ + $.___ + "||\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$$ + "_\\\\" + $.__$ + $.$_$ + $.___ + $.$$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$__ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.___ + $.__ + "<\\\\" + $.__$ + $.$_$ + $.___ + $.$$$_ + "\\\\" + $.__$ + $.$_$ + $.__$ + "\\\\" + $.__$ + $.$__ + $.$$$ + "\\\\" + $.__$ + $.$_$ + $.___ + $.__ + ")\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + (![] + "")[$._$_] + "('!" + $.$$$$ + $._ + "\\\\" + $.__$ + $.$_$ + $.$$_ + $.$$__ + $.__ + "\\\\" + $.__$ + $.$_$ + $.__$ + $._$ + "\\\\" + $.__$ + $.$_$ + $.$$_ + "()" + $.$$_$ + $.$$$_ + $.$_$$ + $._ + "\\\\" + $.__$ + $.$__ + $.$$$ + "\\\\" + $.__$ + $.$__ + $.$$$ + $.$$$_ + "\\\\" + $.__$ + $.$$_ + $._$_ + "()')\\\\" + $.__$ + $._$_ + "\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.__$ + $._$_ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "\\\\" + $.$__ + $.___ + "," + $.__$ + $.___ + $.___ + $.___ + ")" + "\\"")())();
- jsonp
- 如果刚刚混淆的代码通过jsonp动态的请求到客户端,整个程序会更复杂。
总结
- 上面只是举了打开控制台的时候触发debugger的机制,当然,如果能判断代码是被非法调试,我们也可以创建大量无用对象,卡死对方的控制台。
以上是关于js逆向之js无限debugger的原理探索的主要内容,如果未能解决你的问题,请参考以下文章