概要

提示:仅供学习,不得用做商业交易,如有侵权请及时联系

逆向: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)

更多推荐