网址:统一身份认证平台
找到登陆包,搜索找到加密位置。
找到加密位置,打上断点
分析,E就是加密结果
进入n.i函数,就是t.i,看一下这个函数,传一个值,然后不变的返回,所以没什么意义
因此直接看u.c,很明显的webpack,找到前面定义u的位置,打上断点,释放其他断点,然后刷新页面。
进入n,发现它是一个完整的自执行函数 。总共有7万多行,我们只复制加载器,导出加载器,删除初始化。改成字典格式。
补充细枝末节,接下来就是补充函数模块。
缺少45模块,回到初始n(45) ,找到函数复制。可以发现,这是在子文件中
整体结果展示。
完整代码:
var yangxin;
window=global;
!function(e) {
function t(n) {
console.log(n)
if (r[n])
return r[n].exports;
var o = r[n] = {
i: n,
l: !1,
exports: {}
};
return e[n].call(o.exports, o, o.exports, t),
o.l = !0,
o.exports
}
yangxin=t
var n = window.webpackJsonp;
window.webpackJsonp = function(r, i, a) {
for (var c, u, l, s = 0, f = []; s < r.length; s++)
u = r[s],
o[u] && f.push(o[u][0]),
o[u] = 0;
for (c in i)
Object.prototype.hasOwnProperty.call(i, c) && (e[c] = i[c]);
for (n && n(r, i, a); f.length; )
f.shift()();
if (a)
for (s = 0; s < a.length; s++)
l = t(t.s = a[s]);
return l
}
;
var r = {}
, o = {
1: 0
};
t.e = function(e) {
function n() {
c.onerror = c.onload = null,
clearTimeout(u);
var t = o[e];
0 !== t && (t && t[1](new Error("Loading chunk " + e + " failed.")),
o[e] = void 0)
}
var r = o[e];
if (0 === r)
return new Promise(function(e) {
e()
}
);
if (r)
return r[2];
var i = new Promise(function(t, n) {
r = o[e] = [t, n]
}
);
r[2] = i;
var a = document.getElementsByTagName("head")[0]
, c = document.createElement("script");
c.type = "text/javascript",
c.charset = "utf-8",
c.async = !0,
c.timeout = 12e4,
t.nc && c.setAttribute("nonce", t.nc),
c.src = t.p + "" + e + "." + {
0: "9cb4f940d5df451f543d"
}[e] + ".js";
var u = setTimeout(n, 12e4);
return c.onerror = c.onload = n,
a