JS逆向专题

企查查 APP 网址协议头加密

2020-06-25  本文已影响0人  归隐小赵

企查查APP的H5网页参数有加密,分析JS后,发现多了个L函数:


image.png
image.png

扣下来函数

var l = function e(t) {
                return r.default.isArray(t) ? r.default.chain(t).reduce((function(t, i) {
                    return t.push(e(i)),
                    t
                }
                ), []).value() : r.default.isPlainObject(t) ? r.default.chain(t).keys().sortBy().reduce((function(i, n) {
                    var o = t[n];
                    return r.default.isPlainObject(o) || r.default.isArray(o) ? i[n] = e(o) : i[n] = o,
                    i
                }
                ), {}).value() : t
            };

根据之前的对比,T函数为Post内容,即OBJ对象
分析return可知,为三元运算符
return r.default.isArray(t) ?xxx:xxxx;
isArray是否对象,根据此,判断走的为else代码块

r.default.isPlainObject(t) ? r.default.chain(t).keys().sortBy().reduce((function(i, n) {
                    var o = t[n];
                    return r.default.isPlainObject(o) || r.default.isArray(o) ? i[n] = e(o) : i[n] = o,
                    i
                }
                ), {}).value() : t

还是一个三元运算,根据之前的分析
isPlainObject是否为对象,是对象,走下面的代码

r.default.chain(t).keys().sortBy().reduce((function(i, n) {
                    var o = t[n];
                    return r.default.isPlainObject(o) || r.default.isArray(o) ? i[n] = e(o) : i[n] = o,
                    i
                }
                ), {}).value()

如果不是,返回t本身
根据keys,得到键值(百度 keys函数)
sortBy函数 顺序排序
reduce 类似feach的循环函数
i目测为keys后的键值数组,n为键
var o = t[n];
设置变量o的内容为post内容
三元运算

return r.default.isPlainObject(o) || r.default.isArray(o) ? i[n] = e(o) : i[n] = o,
                    i

是否为对象或者数组,如果是,调用函数本身,进行再次循环
如果不是,那么函数i[键值]=内容
由此可知,实际将参数进行了一个排序算法
测试将JSON排序后加密请求:


image.png

OK。请求成功

上一篇下一篇

猜你喜欢

热点阅读