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

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

简介

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

image-20220316154027340

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

image-20220316154144257

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

image-20220316154314765

分析加密位置

image-20220316154405883

可以看到经过混淆了

image-20220316154448202

我们选中看一下

image-20220316154508608

image-20220316154606258

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

_0x392f2d
_0xd9e63f

我们直接把整个文件拷贝到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 [
  • 9
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值