JS调试检测 及 绕过方法
禁止打开控制台
较为简单的反调试手段,常见如下方案:
- 禁用鼠标右键
- 禁用 F12
- 禁用
Ctrl+Shift+i
绕过方案也很简单,可采用如下方式:
- 提前打开控制台,随后访问网页
- 设置 --> 更多工具 --> 开发者选项
时间差异
这是一种从传统反逆向技术借鉴过来的反调试技巧。当脚本在 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
缺点:
- 使用 window属性检查大小可能会有浏览器兼容的问题
- 此方案存在一个漏洞,例如在 Chrome中,若 开发者工具窗口设置为 单独窗口,则无法检测,可前往如下网站测试:https://sindresorhus.com/devtools-detect/
JS调试检测 及 绕过方法相关推荐
- 【文件上传漏洞-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 ...
- 万能检测数据类型的方法
在JS中,检测数据类型的方法有两种,一种是typeof 数据,这种方法简单但是有两个数据类型测不出来,一个是null,还有一个是数组Array //值类型let str = 'abc'let num ...
- js 数据类型_js中检测数据类型的方法汇总
回顾一下js中数据类型分为两大类,基础类型和引用数据类型,主要有: 基本数据类型 Number String Boolean Null Undefined Symbol 复杂数据类型 Array Fu ...
- 网站开发进阶(五十)IE浏览器JS调试方法详解
一.前言 在公司项目开发过程中,会经常性的调试jsp页面.下面主要讲解下如何在jsp页面进行js调试. 目前,常用的浏览器IE.Chrome.Firefox都有相应的脚本调试功能.在掌握了IE中的调试 ...
- OpenRASP xss算法的几种绕过方法
openrasp默认只能检测反射型XSS,存储型XSS仅IAST商业版支持.对于反射型xss,openrasp也只能检测可控输出点在html标签外的情况,本文的绕过方法是针对这种情况.如果可控输出点在 ...
- VS2008 JS调试和Silverlight 后台代码调试 相互影响的问题。---自己做实例证明
但是有几点要注意.首先,不能在同一调试过程中调试托管代码和脚本.(即XAML.cs 和JAVASCRIPT) 这就是说,如果在XAML的隐藏代码中设置一个断点,并且已经打开了Silverlight调试 ...
- JS在html中加法器,JavaScript_JavaScript程序设计之JS调试,本文主要通过一个加法器,介 - phpStudy...
JavaScript程序设计之JS调试 本文主要通过一个加法器,介绍JS如何调试.先上代码: 效果: test.html: 计算器 计算器 + = 计算 demo.js /** * Created b ...
- Windows内存保护机制及绕过方法
0 目录 GS编译 SafeSEH机制 SEH覆盖保护 数据执行保护(DEP) 地址随机化(ASLR) 1 GS编译 1.1 基本原理 Windows操作系统为解决栈溢出漏洞的问题引入了一个对策--G ...
- 中国商标网JS调试 - 动态代码注入
中国商标网JS调试 - 动态代码注入 中国商标网JS调试 - 动态代码注入 前言 背景 工具 知识点 正文 了解 Fiddler Script Session 处理函数 反调试策略 问题分析 解决思路 ...
最新文章
- 经典 Python参数传递采用的肯定是“传对象引用”的方式。相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象
- SpringBoot 集成Mybatis
- suparc服务器没信号,[SupARC平台常见问题帮助](2012-09-19更新)
- 快乐学习 Ionic Framework+PhoneGap 手册1-3 {面板切换}
- 如何合并多个(.txt或其他)文件到一个文件
- GitHub的注册-登录-克隆仓库至本地-同步仓库-分享项目链接
- css设置background图片的位置实现居中
- HDU6025 Coprime Sequence —— 前缀和 后缀和
- 视频课程:CMOS模拟集成电路设计--已上线
- 知其然知其所以然 itoa实现 整型转字符串
- Mysql 索引失效场景
- linux 16进制编辑器 知乎,狂揽2500星,开源十六进制编辑器登顶GitHub热榜
- matlab全桥电路设计,全桥变换电路的Matlab仿真及实验装置开发.pdf
- flink Flink在监控流计算中的应用
- H5页面调用admob激励视频,用户获取奖励
- Oracle格式化总结
- 领导者必须学会的14个说话技巧!
- 荧光染料Alexa Fluor 647 alkyne/炔基炔烃
- 所希望于劳工会的〔1〕
- Hadoop/MapReduce 共同好友解决方案:求大量集合的两两交集