JS逆向 某单词js逆向补环境

admin 2025年6月20日01:13:40评论11 views字数 4754阅读15分50秒阅读模式
https://web.shanbay.com/wordsweb/#/collection单词数据加密JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境使用json hookvar my_parse = JSON.parse;JSON.parse = function (params) {  // 这里可以添加其他逻辑比如    console.log("json_parse params:",params);  debugger  return my_parse(params);};JS逆向  某单词js逆向补环境跳过这个断点 因为这个是服务器返回的加密数据,我们需要找到他的解密位置JS逆向  某单词js逆向补环境断在他解密之后的数据上面,往上面跟栈JS逆向  某单词js逆向补环境解密函数JS逆向  某单词js逆向补环境扣出来 开始补代码可以看到这个_checkVersion 是检测版本什么的 应该不是的返回空字符串 肯定是错的,直接删掉JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境接着运行JS逆向  某单词js逆向补环境缺少new a.default; 未定义JS逆向  某单词js逆向补环境断道这里跟进去JS逆向  某单词js逆向补环境扣出来把函数名修改一下JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境继续扣i函数JS逆向  某单词js逆向补环境修改一下函数让把参数t给传参进去JS逆向  某单词js逆向补环境扣o.default对象JS逆向  某单词js逆向补环境上面有个异常处理直接不要了 下面他的函数 也可以一起扣下来JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境扣fJS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境开始扣 e.initJS逆向  某单词js逆向补环境发现下面有很多函数内容 一起给扣了,把这个列表给复制出来JS逆向  某单词js逆向补环境写个列表赋值一下,这个e对象下面的函数,是通过new a_default 出来的 所以这些函数需要补在a_default下面JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境继续运行缺号this._random.seed继续扣JS逆向  某单词js逆向补环境一样的方法扣出来JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境缺少oJS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境把seed函数里面的o.default.loop 修改成 loopJS逆向  某单词js逆向补环境继续扣 u 函数JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境继续用上面的方法JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境这个位置需要修改一下 给他传递t参数JS逆向  某单词js逆向补环境直接替换成nodejs 自带的base64解码JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境JS逆向  某单词js逆向补环境完成JS逆向  某单词js逆向补环境
function d(t) {
    var e = new a_default(t);
    e.init(t.substr(0, 4));
    var r = e.decode(t);
    return Buffer.from(r, "base64").toString("utf8")
}
f_list = [{
    key: "getChar",
    value: function() {
        return this._char
    }
}, {
    key: "getChildren",
    value: function() {
        return this._children
    }
}, {
    key: "setChar",
    value: function(t) {
        this._char = t
    }
}, {
    key: "setChildren",
    value: function(t, e) {
        this._children[t] = e
    }
}]
function f(key) {
    i.call(this, key), this._char = ".", this._children = {}
    f_list.forEach(function(funDec) {
        this[funDec.key] = funDec.value
    }, this)
}
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
c = [1, 2, 2, 2, 2, 2]
var a_list = [{
    key: "init",
    value: function(t) {
        var e = this;
        this._random.seed(t), this._sign = t, loop(64, function(t) {
            e._addSymbol("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" [t], c[parseInt((t + 1) / 11)])
        }), this._inter["="] = "="
    }
}, {
    key: "_addSymbol",
    value: function(t, e) {
        var r = this,
            n = this._head,
            o = "";
        return loop(e, function(t) {
            for (var e = s[r._random.generate(32)]; e in n.getChildren() && "." !== n.getChildren()[e].getChar();) e = s[r._random.generate(32)];
            o += e, e in n.getChildren() || n.setChildren(e, new f(t_code)), n = n.getChildren()[e]
        }), n.setChar(t), this._inter[t] = o
    }
}, {
    key: "decode",
    value: function(t) {
        for (var e = "", r = 4; r < t.length;)
            if ("=" !== t[r]) {
                for (var n = this._head; t[r] in n.getChildren();) n = n.getChildren()[t[r]], r++;
                e += n.getChar()
            } else e += "=", r++;
        return e
    }
}] u_list = [{
    key: "get",
    value: function(t) {
        return t >>> 0
    }
}, {
    key: "xor",
    value: function(t, e) {
        return this.get(this.get(t) ^ this.get(e))
    }
}, {
    key: "and",
    value: function(t, e) {
        return this.get(this.get(t) & this.get(e))
    }
}, {
    key: "mul",
    value: function(t, e) {
        var r = ((4294901760 & t) >>> 0) * e,
            n = (65535 & t) * e;
        return this.get((r >>> 0) + (n >>> 0))
    }
}, {
    key: "or",
    value: function(t, e) {
        return this.get(this.get(t) | this.get(e))
    }
}, {
    key: "not",
    value: function(t) {
        return this.get(~this.get(t))
    }
}, {
    key: "shiftLeft",
    value: function(t, e) {
        return this.get(this.get(t) << e)
    }
}, {
    key: "shiftRight",
    value: function(t, e) {
        return this.get(t) >>> e
    }
}, {
    key: "mod",
    value: function(t, e) {
        return this.get(this.get(t) % e)
    }
}]
var u = {
    default: {}
}
u_list.forEach(function(funDec) {
    u.default[funDec.key] = funDec.value.bind(u.default)
}) var _random_list = [{
    key: "seed",
    value: function(e) {
        var r = this;
        loop(4, function(t) {
            e.length > t ? r._status[t] = u.default.get(e.charAt(t).charCodeAt()) : r._status[t] = u.default.get(110)
        }), this._mat1 = this._status[1], this._mat2 = this._status[2], this._tmat = this._status[3], this._init()
    }
}, {
    key: "_init",
    value: function() {
        var e = this;
        loop(7, function(t) {
            e._status[t + 1 & 3] = u.default.xor(e._status[t + 1 & 3], t + 1 + u.default.mul(1812433253, u.default.xor(e._status[3 & t], u.default.shiftRight(e._status[3 & t], 30))))
        }), 0 == (2147483647 & this._status[0]) && 0 === this._status[1] && 0 === this._status[2] && 0 === this._status[3] && (this._status[0] = 66, this._status[1] = 65, this._status[2] = 89, this._status[3] = 83), loop(8, function() {
            return e._next_state()
        })
    }
}, {
    key: "_next_state",
    value: function() {
        var t = void 0,
            e = void 0;
        e = this._status[3], t = u.default.xor(u.default.and(this._status[0], 2147483647), u.default.xor(this._status[1], this._status[2])), t = u.default.xor(t, u.default.shiftLeft(t, 1)), e = u.default.xor(e, u.default.xor(u.default.shiftRight(e, 1), t)), this._status[0] = this._status[1], this._status[1] = this._status[2], this._status[2] = u.default.xor(t, u.default.shiftLeft(e, 10)), this._status[3] = e, this._status[1] = u.default.xor(this._status[1], u.default.and(-u.default.and(e, 1), this._mat1)), this._status[2] = u.default.xor(this._status[2], u.default.and(-u.default.and(e, 1), this._mat2))
    }
}, {
    key: "generate",
    value: function(t) {
        this._next_state();
        var e, r = void 0;
        return r = this._status[3], e = u.default.xor(this._status[0], u.default.shiftRight(this._status[2], 8)), r = u.default.xor(r, e), (r = u.default.xor(u.default.and(-u.default.and(e, 1), this._tmat), r)) % t
    }
}]
function a_default(t) {
    i.call(this, t), this._random = new o_default, this._sign = "", this._inter = {}, this._head = new f(t) a_list.forEach(function(funDec) {
        this[funDec.key] = funDec.value;
    }, this) _random_list.forEach(function(funDec) {
        this._random[funDec.key] = funDec.value;
    }, this)
}
i = function(t) {
    var e = t.charCodeAt();
    return 65 <= e ? e - 65 : e - 65 + 41
}

function o_default() {
    this._status = [], this._mat1 = 0, this._mat2 = 0, this._tmat = 0
}

function loop(t, r) {
    "v".repeat(t).split("").map(function(t, e) {
        return r(e)
    })
}
t_code = "" // 自行添加加密数据console.log(d(t_code))

原文始发于微信公众号(逆向有你):JS逆向 -- 某单词js逆向补环境

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月20日01:13:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JS逆向 某单词js逆向补环境https://cn-sec.com/archives/4183533.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息