前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS逆向 | 分析某监测网站的 debugger 反爬措施

JS逆向 | 分析某监测网站的 debugger 反爬措施

作者头像
咸鱼学Python
发布2020-02-19 15:07:02
1.8K0
发布2020-02-19 15:07:02
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

建议收藏 | 最全的 JS 逆向入门教程合集

目标网站

IGh0dHBzOi8vd3d3LmFxaXN0dWR5LmNuLw0K

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

不过这个网站最近更新了一个比较有意思的反爬。

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

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

JS逆向 | 无限Debugger之淘大象

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

网站分析

现在我们来看看。

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

图2-1

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

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

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

图2-2

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

图2-3

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

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

图2-4

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

图2-5

处理方法

我们可以直接使用置空法将这个endebug方法置空,至于其他形式的debugger可以看看【总结】部分的介绍。

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

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

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

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

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

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

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

图3-1

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

总结

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

扫码查看JS逆向课程

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

撒花![ 完 ]

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标网站
  • 网站分析
  • 处理方法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档