最近在搞事情
发现了一个神奇的现象,js能正确执行,但是当准备调试时,显示无法加载。 这个刷新的我的认知。
如图:
这些方法都能正确执行,当你准备调试这个go方法时,显示无法加载:
=================================
搞了这么久的开发和逆向,这还是第一次遇到, 真牛逼啊, 真实代码直接隐藏了。
=================================
为了搞懂这个原理花了近3个小时,直接说结论吧
对js资源进行获取时服务器返回了X-Sourcemap响应头, 这个是一个地址, debug模式下,现代浏览器默认请求这个地址, 这个请求不会在 网络选项卡 有记录。
服务返回正确的sourcemap结构信息就可以!至于是不是真的sourcemap, 全靠开发者心情了。
sourcemap url: https://xxxx.com/sm/1234/2234
响应内容:
{
"version": 3,
"file": "beacon.js",
"line_count": 1,
"mappings": "AACAA",
"sources": ["/虚假的地址/script"],
"names": []
}
这样当恶意用户准备调试就是调的虚假的地址, 其实这个地址压根不存在, 所以显示无法加载。
解决方案: 如果想要调试,那就禁用sourcemap解析