disable-devtool绕过
初识
最近遇到一些网站,快捷键打不开开发人员工具,或是打开后,页面会返回上一页,变成空白页等。
在尝试勾选事件侦听器中的脚本拦截以及捕捉到的一些蛛丝马迹中,发现网站使用了以下开源项目:
使用的网站示例:
aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLw==
(2024-09-03)
思路
首先需要勾选事件侦听器中的脚本选项,将脚本拦截住,然后通过搜索关键词定位到可能的脚本处,作进一步处理,例如HOOK,替换等。
一打开就空白页或退回到历史页面中?没关系,开发人员打开后勾选脚本,页面手动打开至目标页面即可。
关键词可以参考项目中的配置属性名。
在查看项目的文档时,发现在访问网页时携带一个参数可以避免被禁用开发者工具:
3.2 md5 与 tk 绕过禁用
该库中使用 key 与 md5 配合的方式使得开发者可以在线上绕过禁用。
流程如下:
先指定一个 key a(该值不要记录在代码中),使用 md5 加密得到一个值 b,将b作为 md5 参数传入,开发者在访问 url 的时候只需要带上url参数 ddtk=a,便可以绕过禁用。
disableDevtool对象暴露了 md5 方法,可供开发者加密时使用:
DisableDevtool.md5('xxx');
参数名是可以自定义设置的,默认为ddtk
,通过上面截图中的tkName
设置,因此可以搜索tkName
,找到库提供的绕过逻辑处。
虽然我们可能难以获得那个token
值,但是根据简单的逻辑判断,可以本地覆盖在h.md5
后追加,true
,让它执行到下面的return t("token passed")
中来实现关闭禁用。
最终效果:
disable-devtool
被成功绕过。
同时文档中还提到:
3.6.2 isSuspend
用于获取或设置 DisableDevtool 是否被挂起 (挂起状态所有的禁用都将暂时失效)
DisableDevtool.isSuspend = true;
DisableDevtool.isSuspend = false;
其相关代码就在下面,根据同样的方式改变其值,应该同样可实现取消禁用效果。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Serene!