在攻破首页的反调试逻辑保护后,就可以完成首页相关资源的爬取。而当我们爬取某个资源的播放页面时,发现又出现首页同样的反调试保护,
那逆向的思路就不言而喻了,但当我们使用“逆向JS分析实战某违规网站1”的方法进行处理后,再次打开F12并刷新页面。
此时,会发现这次出现了不一样的情况,没有绕过反调试逻辑。
但这个画面这个代码是不是和“逆向JS分析实战某违规网站1”提到的网址里的案例一样?
浏览器控制台反调试
根据该网站提出的解决方案,如下图
用这个方法是否能成功跳过反调试呢?接下来我们进行尝试:
在图中1处下断点后,
然后刷新页面,可以看到程序在断点断下来了。
先在控制台空白处右边点击“清除控制台”,然后在控制台输入以下代码并回车。
Function.prototype.constructor=function(){}
接着点击继续执行
此时会惊奇的发现,代码没有生效,并且程序往下正常执行到 debug 行
既然这里下的断点帮不了我们,只能先看看“调用堆栈”的代码执行顺序来捋一捋逻辑,看看能否找到有用的突破口。
这个也是“浏览器控制台反调试”中提及到的反调试函数,而且从图中可以得出
(function anonymous(
) {
Function(arguments[0]+"bugger")()
})
调用了
(function anonymous(
) {
debugger
})
所以采用同样的手法,在
(function anonymous(
) {
Function(arguments[0]+"bugger")()
})
下断,然后刷新页面,如下图
然后在控制台输入以下代码并回车
Function = function () {}
接着点击继续执行,此时程序能继续运行,且没有被反调试函数拦截下来,说明资源页的反调试成功跳过了。
总结:
反调试是层层调用,如果最后一层无法绕过,千万不要在一棵树上死磕,此时可以尝试通过 “调用堆栈” 寻找上一级调用的反调试函数,然后对其进行函数抹除处理,或许会有奇效。