记录破解"讯飞星火"不让打开控制台调试的经历

379 阅读2分钟

背景

今天在使用讯飞星火的时候,想打开控制台看一下请求,结果直接按F12,没有反应,于是在浏览器菜单中找到开发者工具,打开后,页面直接跳转到about:blank了,根本不给看代码,作为程序员怎么能放弃呢,接下来记录一下怎么一步一步破解的

过程

第一步当然是想办法能够让页面停留在网页上,不要跳转.既然页面有跳转,那就会触发beforeunload事件,所以先试试把beforeunload勾上. 找到开发者工具里面的Sources页面,然后右侧找到Event Listener Breakpoints下面的beforeunload image.png

设置好后,再次输入网址打开讯飞星火(xinghuo.xfyun.cn/)

等了一会儿,果然命中了刚刚的断点 image.png

再点开Call Stack看看,发现了一个ondevtoolopen的函数,刚好找到了跳转到about:blank的代码 image.png

接下来就是想想怎么能跳过这个代码了.

这个代码是没有经过混淆的,所以还是比较好看懂的,看看第一个判断条件传入了A,A的值为2,当0!==A时,就会执行后面的代码,接下来想想有没有办法把A的值改为0,让它不执行下面的代码. image.png

在0!==A下一个断点,然后在watch里面输入A=0,这样在命中断点的时候,也会执行A=0这个语句,强行把A变量改为0.(这里有个小技巧,watch里面不仅仅能输入单个变量,还能输入各种表达式,甚至是一段短代码) image.png

再刷新页面试一下,果然不会跳转了,但是代码会一直进入到这个断点里面,应该是代码还有地方判断打开了控制台,会一直进入这段代码

接着再往上找代码,又看到了一段代码 image.png

这段代码的意思应该很明显了,在访问链接加上?bug=s(xinghuo.xfyun.cn/?bug=s) 再试试

至此,可以正常调试代码了,这应该是开发人员给自己留的一个后门吧,估计讯飞的小伙伴看到这篇文章,又该重新改一个方案了.