JS常见反调试

JS常见反调试

格式化检测

可以删代码,改逻辑(取反操作 !)

可以hook:

1.保存原函数`
​
•   `RegExp.prototype.test_     =  RegExp.prototype.test;`
​
•   `2.替换原函数`
​
•   `RegExp.prototype.test = function(){`
​
•       `3.执行原函数`
​
•           `var a = RegExp.prototype.test_.apply(this,arguments)`
​
•               `return !a;`
​
•           `}`
​
•   `4.保护toString`
​
•       `RegExp.prototype.test.toString = RegExp.prototype.test_.toString;

如何进入VM(虚拟机)

1.eval() 执行一段文本代码 var a = eval("debugger; function xx(){return 2};xx()")

2.用大Function

过掉Function中的debugger (hook其构造函数)

Function.prototype.constructor_ = Function.prototype.constructor;
​
•   Function.prototype.constructor = function(a){
​
•       a = a.replace("debugger","");  (对所有debugger进行全局替换)
​
•       return Function.prototype.constructor_(a);
​
}
​
Function.prototype.constructor.toString = Function.prototype.constructor_.toString(做保护)

禁止控制台调试

console.log = function(){} 或者一直调用clear方法,禁止了控制台的输出

可以在运行到之前保存代码

检测调试:

1.基于时间的检测

function aa() {
var b = Date.now();
debugger;
if(Date.now() - b > 200 ){
    console.log("no")
    }
}
aa();

可以对Date.now()方法进行hook ,让其变为固定值

2.基于dom(页面)

监听F12事件

监听快捷键

Object.toString() 如果控制台输出的是对象,则保留对象的引用,每次打开开发者工具的时候都会重新调用一下对象的 toString()方法将返回结果打印到控制台(console tab)上。

监听 windows 的纵横比的变化 ( 把窗口单开即可解决 )

数据劫持:打开控制台开始检测id 执行它自己的方法

基于控制台api检测:一点F12就关闭浏览器调用了window.close(),

断点到这里进行本地替换js ,load断点有时候会重置url

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值