禁止打开控制台

较为简单的反调试手段,常见如下方案:

  • 禁用鼠标右键
  • 禁用 F12
  • 禁用 Ctrl+Shift+i

绕过方案也很简单,可采用如下方式:

  1. 提前打开控制台,随后访问网页
  2. 设置 --> 更多工具 --> 开发者选项

时间差异

这是一种从传统反逆向技术借鉴过来的反调试技巧。当脚本在 DevTools 等工具下执行时,运行速度会非常慢,所以我们可以根据运行时间判断脚本是否正在被调试。

演示代码如下:

setInterval(function () {start_time = new Date().getTime();debugger;stop_time = new Date().getTime();if (stop_time - start_time > 600) {alert('go out!')}
})

Object.defineProperty检测

利用了 div 元素的 id 属性,当打印 div 元素时,浏览器会自动尝试获取其元素id。如果代码在调用了 console.log 后又调用了 getter 方法,说明控制台当前正在运行。

演示代码如下:

let div = document.createElement('div');function start_timer() {return setInterval(function () {console.log(div);console.clear()}, 500)
}timer = start_timer();Object.defineProperty(div, "id", {get: () => {clearInterval(timer);alert("go out!");timer = start_timer();}
});

检测窗口大小

检测窗口大小比较简单,首先需要明确两个概念,窗口的 outer大小 和 inner大小

  • window.innerWidth / window.innerHeight:可视区域的宽高,包含滚动条的宽度
  • window.outerWidth / window.outerHeight:会在 inner 的基础上加上工具条的宽度

具体实现代码可参考如下仓库:devtools-detect

缺点:

  1. 使用 window属性检查大小可能会有浏览器兼容的问题
  2. 此方案存在一个漏洞,例如在 Chrome中,若 开发者工具窗口设置为 单独窗口,则无法检测,可前往如下网站测试:https://sindresorhus.com/devtools-detect/

JS调试检测 及 绕过方法相关推荐

  1. 【文件上传漏洞-03】前端JS检测与绕过实例—以upload-labs-1为例

    目录 1 前端JS检测与绕过 2 前端JS检测与绕过实例 2.1 实验目的 2.2 操作环境 2.3 前期准备 2.4 具体过程 2.4.1 文件上传前期盲测 2.4.2 方法一:删除JS直接上传 2 ...

  2. 万能检测数据类型的方法

    在JS中,检测数据类型的方法有两种,一种是typeof 数据,这种方法简单但是有两个数据类型测不出来,一个是null,还有一个是数组Array //值类型let str = 'abc'let num ...

  3. js 数据类型_js中检测数据类型的方法汇总

    回顾一下js中数据类型分为两大类,基础类型和引用数据类型,主要有: 基本数据类型 Number String Boolean Null Undefined Symbol 复杂数据类型 Array Fu ...

  4. 网站开发进阶(五十)IE浏览器JS调试方法详解

    一.前言 在公司项目开发过程中,会经常性的调试jsp页面.下面主要讲解下如何在jsp页面进行js调试. 目前,常用的浏览器IE.Chrome.Firefox都有相应的脚本调试功能.在掌握了IE中的调试 ...

  5. OpenRASP xss算法的几种绕过方法

    openrasp默认只能检测反射型XSS,存储型XSS仅IAST商业版支持.对于反射型xss,openrasp也只能检测可控输出点在html标签外的情况,本文的绕过方法是针对这种情况.如果可控输出点在 ...

  6. VS2008 JS调试和Silverlight 后台代码调试 相互影响的问题。---自己做实例证明

    但是有几点要注意.首先,不能在同一调试过程中调试托管代码和脚本.(即XAML.cs 和JAVASCRIPT) 这就是说,如果在XAML的隐藏代码中设置一个断点,并且已经打开了Silverlight调试 ...

  7. JS在html中加法器,JavaScript_JavaScript程序设计之JS调试,本文主要通过一个加法器,介 - phpStudy...

    JavaScript程序设计之JS调试 本文主要通过一个加法器,介绍JS如何调试.先上代码: 效果: test.html: 计算器 计算器 + = 计算 demo.js /** * Created b ...

  8. Windows内存保护机制及绕过方法

    0 目录 GS编译 SafeSEH机制 SEH覆盖保护 数据执行保护(DEP) 地址随机化(ASLR) 1 GS编译 1.1 基本原理 Windows操作系统为解决栈溢出漏洞的问题引入了一个对策--G ...

  9. 中国商标网JS调试 - 动态代码注入

    中国商标网JS调试 - 动态代码注入 中国商标网JS调试 - 动态代码注入 前言 背景 工具 知识点 正文 了解 Fiddler Script Session 处理函数 反调试策略 问题分析 解决思路 ...

最新文章

  1. 经典 Python参数传递采用的肯定是“传对象引用”的方式。相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象
  2. SpringBoot 集成Mybatis
  3. suparc服务器没信号,[SupARC平台常见问题帮助](2012-09-19更新)
  4. 快乐学习 Ionic Framework+PhoneGap 手册1-3 {面板切换}
  5. 如何合并多个(.txt或其他)文件到一个文件
  6. GitHub的注册-登录-克隆仓库至本地-同步仓库-分享项目链接
  7. css设置background图片的位置实现居中
  8. HDU6025 Coprime Sequence —— 前缀和 后缀和
  9. 视频课程:CMOS模拟集成电路设计--已上线
  10. 知其然知其所以然 itoa实现 整型转字符串
  11. Mysql 索引失效场景
  12. linux 16进制编辑器 知乎,狂揽2500星,开源十六进制编辑器登顶GitHub热榜
  13. matlab全桥电路设计,全桥变换电路的Matlab仿真及实验装置开发.pdf
  14. flink Flink在监控流计算中的应用
  15. H5页面调用admob激励视频,用户获取奖励
  16. Oracle格式化总结
  17. 领导者必须学会的14个说话技巧!
  18. 荧光染料Alexa Fluor 647 alkyne/炔基炔烃
  19. 所希望于劳工会的〔1〕
  20. Hadoop/MapReduce 共同好友解决方案:求大量集合的两两交集

热门文章

  1. iOS-百度语音合成的使用
  2. 计算机的宽度计算公式,平板电脑尺寸怎么计算 平板电脑尺寸计算方法【详细介绍】...
  3. 在控制台使用js获取cookie信息
  4. UR机械臂simscape正逆解仿真
  5. 惠普LaserJet Pro MFP m132nw连接wifi
  6. 移动直播连麦实现——A端合成
  7. 普通人该如何去创业找项目,明白这几点让你心如明镜。
  8. 计算机网络基础 之四:网络层
  9. 简述er图的作用_【ER图的含义】作业帮
  10. Facebook入局区块链,数字通证的春天来了吗?