当前位置:   article > 正文

JS逆向之浏览器补环境(一)

补环境

JS逆向之浏览器补环境(一)

简介

今天分享是是浏览器环境检测以及node js补环境

image-20220316154027340

我们点击检测设备信息看发出的请求,可以看到是sign和data

image-20220316154144257

这个data看起来像base64,我们试一下,发现不是

image-20220316154314765

分析加密位置

image-20220316154405883

可以看到经过混淆了

image-20220316154448202

我们选中看一下

image-20220316154508608

image-20220316154606258

那我们接下来就知道了,要逆向的两个参数变量

_0x392f2d
_0xd9e63f
  • 1
  • 2

我们直接把整个文件拷贝到webstrom里,看一下这两个变量在哪里定义的,可以看到在这

image-20220316154803280

由于我们只需要这两个变量,所以下面的代码可以删除了,变成这样

image-20220316154849200

追踪检测

然后引入proxy检测对象变化的代码

proxy.js

let _window = {
   
    
};
let _stringify = JSON.stringify;
JSON.stringify = function (Object) {
   
    // ?? 的意思是,如果 ?? 左边的值是 null 或者 undefined,那么就返回右边的值。
    if ((Object?.value ?? Object) === global) {
   
        return "global";
    }
    return _stringify(Object);
};

function getMethodHandler(WatchName) {
   
    let methodhandler = {
   
        apply(target, thisArg, argArray) {
   
            let result = Reflect.apply(target, thisArg, argArray);
            console.log(`[${
     WatchName}] apply function name is [${
     target.name}], argArray is [${
     argArray}], result is [${
     result}].`);
            return result;
        },
        construct(target, argArray, newTarget) {
   
            let result = Reflect.construct(target, argArray, newTarget);
            console.log(`[${
     WatchName}] construct function name is [${
     target.name}], argArray is [${
     argArray}], result is [${
     JSON.stringify(result)}].`);
            return result;
        }
    };
    return methodhandler;
}

function getObjHandler(WatchName) {
   
    let handler = {
   
        get(target, propKey, receiver) {
   
            let result = Reflect.get(target, propKey, receiver);
            if (result instanceof Object) {
   
                if (typeof result === "function") {
   
                    console.log(`[${
     WatchName}] getting propKey is [
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/784922
推荐阅读
相关标签
  

闽ICP备14008679号