网安引领时代,弥天点亮未来
1.这个是接着前面一篇文章:
2.现在很多电影网站,基本都是盗链各大视频网站的资源,然后又怕人家盗用他们的接口,会在JavaScript代码中增加反调试代码。
3.很早很早以前我也帮人写过这种接口卖给别人,但是现在已经从良了。
4.例如这个全民VIP视频解析,当你打算使用控制台调试他们JavaScript代码的时候,就会弹出“已在调试程序中暂停”。
5.通过执行debugger中断你的调试,并且会停止视频的播放,控制台会输出“请勿非法调试,请关闭后刷新重试!”。
6.截图上右边框框里面的东西是中断你F12调试整个过程的调用堆栈。
7.调用过程往回退一步,会发现以下代码。
8.其中xyplay.echo("<br><br><br>检测到非法调试,请关闭后刷新重试!");,目的就是在网页输出“检测到非法调试,请关闭后刷新重试!”。
9.其中代码setInterval("debugger;console.log('请勿非法调试,请关闭后刷新重试!');");目的就是设置一个定时器,一直循环执行,当你打开控制台调试代码的时候会触发这段代码,来中断你的调试。
10.调用过程再往回退一步,又会发现以下代码。
11.然后在372行下一个断点,刷新页面得到code的数值是下面这串base64字符。
IC8vICB2YXIgdG90YWw9IiI7Zm9yICh2YXIgaT0wO2k8MTAwMDAwMDtpKyspe3RvdGFsPSB0b3RhbCtpLnRvU3RyaW5nKCk7aGlzdG9yeS5wdXNoU3RhdGUoMCwwLHRvdGFsKTt9ICAgICAgLy/mrbvmnLrku6PnoIEKLy9sb2NhdGlvbi5ocmVmPSJodHRwczovL3d3dy5ieG1vdi5jb20iOyAgLy/ot7PovaznvZHnq5kKeHlwbGF5LmVjaG8oIjxicj48YnI+PGJyPuajgOa1i+WIsOmdnuazleiwg+ivlSzor7flhbPpl63lkI7liLfmlrDph43or5UhIik7ICAvL+eUqOaIt+eql+WPo+aYvuekuuS/oeaBrwpzZXRJbnRlcnZhbCgiZGVidWdnZXI7Y29uc29sZS5sb2coXCfor7fli7/pnZ7ms5XosIPor5Us6K+35YWz6Zet5ZCO5Yi35paw6YeN6K+VIVwnKTsiKTsgICAgICAvL+iwg+ivleeql+WPo+aYvuekuuS/oeaBrwk=
12.通过Base64在线编码解码,可以发现代码就是前面分析的中断调试的代码。
13.逻辑已经很明显了,通过setTimeout延迟200毫秒,base64解码中断调试的代码,并且一直循环执行,只要打开调试控制台就中断播放。
14.文件位置在https://v.znb.me/include/class.main.js中的372行。
15.至于如何处理反调试,就是把人家的代码复制下来,在本地保存成1.js,最后的代码修改这样。
if (code !== 'IC8vICB2YXIgdG90YWw9IiI7Zm9yICh2YXIgaT0wO2k8MTAwMDAwMDtpKyspe3RvdGFsPSB0b3RhbCtpLnRvU3RyaW5nKCk7aGlzdG9yeS5wdXNoU3RhdGUoMCwwLHRvdGFsKTt9ICAgICAgLy/mrbvmnLrku6PnoIEKLy9sb2NhdGlvbi5ocmVmPSJodHRwczovL3d3dy5ieG1vdi5jb20iOyAgLy/ot7PovaznvZHnq5kKeHlwbGF5LmVjaG8oIjxicj48YnI+PGJyPuajgOa1i+WIsOmdnuazleiwg+ivlSzor7flhbPpl63lkI7liLfmlrDph43or5UhIik7ICAvL+eUqOaIt+eql+WPo+aYvuekuuS/oeaBrwpzZXRJbnRlcnZhbCgiZGVidWdnZXI7Y29uc29sZS5sb2coXCfor7fli7/pnZ7ms5XosIPor5Us6K+35YWz6Zet5ZCO5Yi35paw6YeN6K+VIVwnKTsiKTsgICAgICAvL+iwg+ivleeql+WPo+aYvuekuuS/oeaBrwk=') {
setTimeout(Base64.decode(code));
}
16.类似hook代码中的code,在运行中断调试代码之前拦截下来
17.然后使用Fiddler中的autoresponder功能,将本地代码1.js映射到https://v.znb.me/include/class.main.js,刷新缓存之后代码就换成本地了的
18.最终效果,完美去掉反调试代码了,视频也没有终止播放,也没有出现中断调试的提示了
知识分享完了
喜欢别忘了关注我们哦~
学海浩茫,
弥 天
安全实验室
本文始发于微信公众号(弥天安全实验室):JavaScript逆向基础之去除反调试代码
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论