在一次偶然的机会遇到了一个特别的网站,在打开F12并刷新查看元素时,发现会自动跳到debug,然后接着的就是无限debug。如下图:
一看这情况,顿时就来了兴趣。究竟怎样才能突破这层反反调试呢?面对这种一进入调试模式就无限debug,应如何应对?
经过翻阅各大神精华贴,发现下面这个帖子还是很有借鉴作用。
当然这里我第一个反应是借鉴安卓逆向的常规思路,跳过反调试逻辑是不是就可以越过这层防护了呢?为什么我会有这样一个想法?先看下图:
F5刷新后,程序就停在图中圈起来的地方,明显可以看出是一个js文件,而且还是写了反调试逻辑的 js。那是不是就可以大胆假设这个wz.js文件写满的是防止游客调试该网址的防护代码?当然可能不只有这样一个反调试 js,也可能还有几个,但是逆向本身就是见招拆招的过程,不必过于在意有几个或几种反调试在等我们。
网页js与安卓逆向也有不一的地方,网页js代码是在服务器端的,本地常规手法是无法直接修改。那在不使用极端手法的前提下,应如何跳过js的反调试呢?
在这里,我给出的最简单方案是利用抓包工具fiddler(因为本来电脑就安装了,所以就懒得用其他抓包工具)。
众所周知,抓包工具本身就是一个拦截器,可以拦截浏览器访问服务器的数据,也可拦截服务器给浏览器的数据。那在这里,我们将用到的是伪造服务器返回给浏览器的数据。
要实现这一手法:
第一步 通过"查看网页源代码"打开网页的html代码,然后全选复制。
第二步 桌面新建一个文本文件并打开,把刚才复制的内容粘贴到文本里,关闭文本并保存,然后将文本的后缀改成 .html。
要注意一点是:如果看到粘贴的内容如下图,那就把fiddler关闭,再查看网页源代码,即可复制到完整的内容。
如果关闭fiddler后,查看网页源代码得到的是下图这样一大坨东西
那就用下面这个网站格式化后再复制即可。
HTML 代码格式化
第三步 打开fiddler,把浏览器的调试台先关掉,然后F5刷新下页面。
在fiddler中点击找到目标网页,再fiddler的右边窗口找到”自动回复“
然后点击”添加规则“,图中打圈的都要勾上
点击”添加规则“后,就会出现下图的情况
点击图中红框位置,然后把滚动条拉到最下面,选择"查找文件",选择刚刚粘贴网页代码的html后缀文件(后面均称为A.html)。
点击打开后,这个伪装服务器返回给浏览器数据的准备工作就算完成了。
但是打开F12重新刷新页面,还是会去到debug界面,因为A.html文件里,有调用反调试js的代码,现在我们需要做的就是像修改安卓的classes.dex文件一样,把不用的代码注释或删除掉即可。
上面的初步分析中提到程序是停留在wz.jsxxxxxx文件,那就在A.html文件搜索 “wz.js” ,看在哪里调用了。
从上图可以看出,wz.js是动态写入,那就先把图中框起来的这行代码全部删除并保存,然后在浏览器打开F12并重新刷新网页。
此时,就会发现网页不会卡在debug,就这样首页的反调试就过了。
总结:
整个过程下来,不难看出本文是借用了抓包的拦截和返回数据功能成功跳过了原服务器的 js 反调试保护。
预告:
逆向JS分析实战某违规网站2将会讲述从主页跳转后,如何过资源界面的反调试。