很早就想学下webpack该如何处理,前几天正好看到一篇推送,正好学一下吧
结合了宇哥的视频一起学的。
教程:JS逆向案例-一个案例给你讲明白webpack如何解决

网址:aHR0cHM6Ly9hcHAuZGlhbmRpYW4uY29tLw==
首先找到加密位置,就是这个k参数,在每个请求里都有。

加密位置

去堆栈里找加密位置,这个也卡了一会。一直不确定加密位置在哪。
可以看到就是这个o就是加密结果,传了三个参数。
直接把他扣下来。
加密

往上找,可以看到y在这里定义,也就是n(2337),这就是标准的webpack形式。
y定义

找到n定义的位置,也就是加载器。
点进去
n定义

往上找,找到这种,然后折叠,复制下来。
加载器

把后面改成这种格式,加载器的最后一行是d(),把他引出到外面,用jzq来调用c,运行一下,不报错就对了

1
2
3
4
5
6
7
8
9
!function(o) {
// ......
// d()
jzq = c;
}(
{
// 函数放在这里
}
)

然后就是调用了,改成下面这个调用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
!function(o) {
// ......
// d()
jzq = c;
}(
{
// 函数放在这里
2337: function(t, e, n) {
// ...
},
}
)
y = jzq(2337)
o = Object(y.a)(r, path, {
s: n.s,
k: n.k,
l: n.l,
d: n.d,
sort: n.sort,
num: n.num
}, "get")
console.log(o)

运行一下,会报错的,补一下window = global;
发现还是报错,到这个位置输出一下e

1
2
3
return o[e].call(d.exports, d, d.exports, c),
^
TypeError: Cannot read properties of undefined (reading 'call')

可以看到是缺少119这个函数,去找下然后补进来
加载器

这个网站里webpack的函数分布在不同的js文件里,补函数的过程比较费劲,但好在补完基本就能用了,再补下document就行了

1
2
3
4
5
const { JSDOM } = require('jsdom');

const dom = new JSDOM();
window.document = dom.window.document