JS逆向 - Akamai阿迪达斯(三次) 补环境、纯算

文章目录

概要

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

逆向:JS逆向 - Akamai阿迪达斯(三次) 补环境、纯算
URL:aHR0cHM6Ly93d3cuYWRpZGFzLmNvbS5jbi8=

整体架构流程

提示:分析整体流程

1、访问首页

  1. 会发三次包:第二次发包是事件触发,不用管,第三次是轨迹达到21次触发:POST =》sensor_data
  2. 我们可以XHR断点,然后往回跟栈
  3. js混淆还原(墨竹大佬的还原脚本)


2、din对象的键值的顺序 是每次都变的,ajr的值算法 也是会变的,dvc的值是vmp的 算法固定(b+j+g+i+e+h+c+k+l+d+f+动态的),mev的值则是轨迹计算得到的
3、扣算法(第三次接口返回的cookie里面:0)

技术名词解释

提示:补环境

  1. 描述符检测:
javascript 复制代码
Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor() {
    if (arguments[1] === 'contentWindow') {
        contentWindow_getter = function contentWindow() { }
        contentWindow_getter.toString = function toString() {
            return "function get contentWindow() { [native code] }"
        }
        return {
            get:contentWindow_getter
        }
    }
    if (arguments[1] === 'loading') {
        loading_getter = function loading() { }
        loading_getter.toString = function toString() {
            return "function get loading() { [native code] }"
        }
        return {
            get:loading_getter
        }
    }
    if (arguments[0] === navigator.__proto__ && arguments[1] === 'plugins') {
        plugins_getter = function plugins() { }
        plugins_getter.toString = function toString() {
            return "function get plugins() { [native code] }"
        }
        return {
            get:plugins_getter
        }
    }
    if (arguments[0] === navigator.__proto__ && arguments[1] === 'mimeTypes') {
        mimeTypes_getter = function mimeTypes() { }
        mimeTypes_getter.toString = function toString() {
            return "function get mimeTypes() { [native code] }"
        }
        return {
            get:mimeTypes_getter
        }
    }
    if (arguments[1] === 'path') {
        return undefined
    }
    if (arguments[1] === 'createElement') {
        return undefined
    }
    return Object.getOwnPropertyDescriptor_.apply(this,arguments);
}
  1. SharedWorker检测:onmessage的回调
javascript 复制代码
Object.defineProperty(wroker_port, 'onmessage', {
        set: function (value) {
            debugger
            value({
                data:{
                    "ts": (new Date(window.bmak.startTs+1000)).toString(),
                    "oscpu": null,
                    "tz": "Asia/Shanghai",
                    "la": navigator.language,
                    "las": navigator.languages,
                    "dm": navigator.deviceMemory,
                    "hc": navigator.hardwareConcurrency,
                    "net": [
                        navigator.connection.effectiveType,
                        -1,
                        "null"
                    ],
                    "ua": navigator.userAgent,
                    "av": navigator.appVersion,
                    "pl": "xxx",
                    "uad": {
                        "architecture": "xxx",
                        "bitness": "xxx",
                        "brands": xxx,
                        "fullVersionList": xxx,
                        "mobile": false,
                        "model": "",
                        "platform": "xxx",
                        "platformVersion": "10.0.0",
                        "uaFullVersion": "xxx",
                        "wow64": false
                    },
                    "gpu": {
                        "gpuVendor": "xxx",
                        "gpuRenderer": "xxx",
                        "gpu2Vendor": "xxx",
                        "gpu2Renderer": "xxx"
                    }
                }
            })
        }
    })
  1. speechSynthesis.getVoices检测:第一次返回的是空,第二、三次返回的有值voiceURI、lang
  2. 各种原型链检测、toString检测、navigator的属性回调检测、plugins的原型+item、refresh
  3. document.cookie里面必须带有首页返回的bm_sz、document.currentScript必须是第一次返回的js的url、等等

小结

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

相关推荐
我滴老baby20 小时前
0基础速通Python+AI|2026热门轻量化玩法全攻略:从入门到实战,3天搞定AI应用开发
开发语言·人工智能·python
雷帝木木20 小时前
Python 类型提示与静态类型检查的高级应用
人工智能·python·深度学习·机器学习
一个天蝎座 白勺 程序猿20 小时前
Python(29)Python生成器函数深度解析:asyncio事件循环的底层实现与异步编程实战
开发语言·python
七夜zippoe20 小时前
Python RESTful API设计终极指南:从理论到企业级实战
开发语言·python·http·pandas·restful api
dinglu1030DL20 小时前
golang如何实现告警分级与升级_golang告警分级与升级实现步骤
jvm·数据库·python
xcLeigh20 小时前
Python开篇:撬动未来的万能钥匙 —— 从入门到架构的全链路指南
数据库·python·架构·教程·应用·网页
雷帝木木20 小时前
Python 中的正则表达式:从基础到高级应用
人工智能·python·深度学习·机器学习
m0_4636722020 小时前
Golang如何做图片处理缩放_Golang图片处理教程【收藏】
jvm·数据库·python
车位涂鸦20 小时前
在线浏览“秀人网合集”的新思路:30 行 Python 把封面图链接秒变本地可点图库
开发语言·python