JS逆向-AQI网站反调试分析

目标网站

IGh0dHBzOi8vd3d3LmFxaXN0dWR5LmNuLw0K

这个网站的加密比较简单的,网上也有不少关于这个网站加密的分析例子,所以关于这个网站的正文加密,这里不做分析。

今天简单看看这个网站的反爬措施。

去年,咸鱼写过一篇关于某网站的无限 Debugger 的样例分析,感兴趣的可以看看之前的分析文章。

除了这类 debugger 样例外,还有一类反调试的样例是通过时刻监控浏览器的控制台是否打开来控制数据接口的读取的。

网站分析

现在我们来看看:

首先访问目标网站,直接打开控制台【图2-1】:

图2-1

打开控制台后,原有加载好的页面替换成上图显示的内容了。

我们简单猜测可以知道,网站应该是做了关于控制台检测。

为了知道这个检测代码在哪,可以通过source面板中加载的内容来找找看,打开source面板,找到首页的源码。

图2-2

可以看到在首页代码结尾的地方【图2-2】,有上面这样的一段代码。

图2-3

并且在【图2-3】所示位置用判断语句用来控制页面的加载。

并且在通过检索,我们找到了endebug的代码。【图2-4】

解密出来的明文中的确是对控制台的状态进行了检测。【图2-5】

图2-5

解密的逻辑需要分析吗?

完全不用。

处理方法

我们可以直接使用置空法将这个endebug方法置空。

当【图2-2】中的方法为空的时候,debugflag的值就是 false,那么在接下来的判断中,就会执行loadTab方法了。

在之前遇到的debugger反爬中,我们都是直接在console中直接使用function 方法名(){}这样的代码置空方法的。

同样的方法咸鱼也来试一试。

console中置空endebug后,发现页面还是没有加载出来,那么问题出在哪里呢?

我们来回忆一下正常的无限debugger场景:一个无限循环的方法中包含了可以被执行的debuger语句,我们通过置空法是下次循环要执行的debugger语句(说明下次循环的debug还未执行)替换为空了。

再来看看我们这个例子,endebug在页面加载的时候就已经完成了调用执行了,和我们在正常的无限debugger场景完全不同,所以为了创建一样的执行条件,我们需要在endebug没有被调用前就将它重新定义为空。

所以如【图3-1】所示,我们在endebug前打上断点,并置空函数。

这样页面就可以正常分析了。

总结

关于这个 debugger 的调试分析样例还有很多,在我们夜幕的Javascript逆向课程中对常见的几种情况以及解决方案都做了详细的解答,感兴趣的可以扫码了解一下。

扫码查看JS逆向课程

同时这里也感谢「花哥」 对我的帮助以及对本次案例提供的技术支持与解答。

撒花!

EOF

煌金 wechat
扫描关注公众号,回复「1024」获取为你准备的特别推送~
  • 本文作者: 煌金 | 微信公众号【咸鱼学Python】
  • 本文链接: http://www.xianyucoder.cn/2020/02/28/每日JS-AQI debugger/
  • 版权声明: 本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!