JS逆向 -最新版 盼之decode__1174(补环境-检测点较多)
·
概要
提示:仅供学习,不得用做商业交易,如有侵权请及时联系
逆向:JS逆向 -最新版 盼之decode__1174(补环境-检测点较多)
URL:aHR0cHM6Ly93d3cucHpkcy5jb20vZ29vZHNMaXN0LzgvNg==
最近更新的频繁,还是补环境吧,懒得去分析!!!
整体架构流程
提示:分析流程
1、首先就是无限debugger

Function.prototype.constructor_ = Function.prototype.constructor;
Function.prototype.constructor = function () {
arguments[1] = arguments[1].replaceAll('debugger;', '');
arguments[2] = arguments[2].replaceAll('debugger;', '');
return Function.prototype.constructor_.apply(this, arguments);
}

2、观察后缀怎么添加的:堆栈断点


3、找到加密的环境数组明文:


技术名词解释
提示:补环境
- 触发后缀:localStorage 里面的健对应的值(时间戳判断是否加载>3000)
- 无限debugger:Math.random.constructor构造
- _waf_bd8ce2ce37、_waf_a86dfdc5f2是否加载
- debugger冲突:在Hook掉的同时,会检测debugger存不存在(影响Math.random)
String.prototype.indexOf_ = String.prototype.indexOf;
String.prototype.indexOf = function indexOf() {
if (arguments[0] === 'debugger') {
return 1;
}
return String.prototype.indexOf_.apply(this, arguments);
}
- Error.stack结合console.debug 打印错误堆栈日志,Object.defineProperty描述符重写属性,影响一些数组的生成
console.debug = function debug() { }
safeFunction(console.debug)
Object.defineProperty_ = Object.defineProperty;
Object.defineProperty = function defineProperty() {
if (arguments[1] != 'stack') {
AsObj.print('Object.defineProperty:', arguments)
Object.defineProperty_.apply(this, arguments);
}
}
safeFunction(Object.defineProperty);
- document.fonts.load事件加载,canvas画布+webgl
- XMLHttpRequest的方法被重写:会创建div标签设置href(localStorage是否存在对应的值判断生效)


小结
提示:学习交流主页,星球持续更新中:(+星球主页+v)
更多推荐



所有评论(0)