某日头条a_bogus 1.0.1.7参数补环境详情分析

本文仅用于逆向研究交流,禁止非法用途,如遇侵权联系删除!!

加密位置

不展示跟栈过程了

直接看这个位置,这个就是a_bogus的生成位置

这里我们需要加一个条件断点

d !== undefined && d.length === 168

断住之后看一下函数和参数

参数如下

参数分析

u[3]是请求后缀param拼接的字符串

u[5]是ua!!!补环境时候ua和这个ua尽量要一致!

u = [
    0,
    1,
    8,
    "channel_id=0&max_behot_time=1763369782&offset=0&category=pc_profile_recommend&aid=24&app_name=toutiao_web&msToken=T_WtUwZru1UT6esqeUrVdMv_HMNZS-NuDgn4Md3Nhl4F1WF_8CJfbjz2INhNTAo7d9J_iAKK_Z-Gn9Z36c2tL9U3mX45ThhwyFkHQsKfygDQWDHO-ZHdzGWfdsJNAnA%3D",
    "",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0"
]

分析加密函数

看着有点麻烦

(0,e._u)(r[0], arguments, r[1], r[2], this)

e._u为下方赋值的函数e

e.v为下方[s,o,v]

我们把这几个变量先window赋值

就可以写出获取函数

get_abogus = function (params) {
    u = [
        0,
        1,
        8,
        params,
        "",
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0"
    ]
    r = window.uvl
    d = window.uuf(r[0], u, r[1], r[2], this)
    return d
}

准备好之后我们就可以补环境了

补环境

需要深度代理,需要补原型链

window

window = global
slef = top = globalThis = window
window = watch(window, "window")

发现报错

requestAnimationFrame

需要补tostring 有检测

requestAnimationFrame = function () {
}
requestAnimationFrame.toString = function () {
    return 'function requestAnimationFrame() { [native code] }'
}
requestAnimationFrame = watch(requestAnimationFrame, "requestAnimationFrame")

继续运行发现两个storge

storge

window.storgea = {}
window.storgeb = {}
localStorage = {
    thisname: "localStorage",
    length: 0,
    removeItem: function () {
        console.log('localStorage->removeItem')
        console.log(arguments);
    },
    setItem: function () {
        console.log('localStorage->setItem');
        console.log(arguments);
        window.storgea[arguments[0]] = arguments[1];
        console.log('localStorage->setIte_end')

    },
    getItem: function (args) {
        console.log('localStorage->getItem', arguments)
        return window.storgea[args];
        console.log('localStorage->getItem_end')
    },
}
sessionStorage = {
    thisname: "sessionStorage",
    length: 0,
    removeItem: function () {
        console.log('localStorage->removeItem')
        console.log(arguments);
    },
    setItem: function () {
        console.log('sessionStorage->setItem');
        console.log(arguments);
        window.storgeb[arguments[0]] = arguments[1];
    },
    getItem: function (args) {
        console.log('sessionStorage->getItem')
        console.log(arguments);
        console.log(window.storgeb[args]);
        return window.storgeb[args];
    },
}

window.localStorage = localStorage;
window.sessionStorage = sessionStorage;

运行发现缺document

document

document需要补原型

Document = function Document() {
}
HTMLDocument = function HTMLDocument() {
}
Object.setPrototypeOf(HTMLDocument.prototype, Document.prototype)
document = new HTMLDocument()
document = watch(document, 'document')

再运行缺xml

剩下的就是缺什么补什么

doc body 和doc all 在之前的文章红薯那片有写过不再写了

剩下的就是收集了一些screen和navigator就没什么了补完看位数是168位就能用

测试

头条列表不需要加ck也可获取

mstoken必须带

大概是这样的一个流程

注意execjs运行的记得把log清空下

成功了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值