PX3 参数生成之 wasm 函数中的参数D 的生成

打断点之后看到函数的调用栈,使用main.js 中的函数 I0I0I0,调用captcha.js中的函数

image-20241111102354266

image-20241111102950308

image-20241111102854471

o(a(362)) ==> PX1135

Ic反混淆之后的代码如下

1
2
3
4
5
6
7
8
function Rc() {
return "_" + "PXu6b0qd2S"["replace"](/^PX|px/, "") + "handler";
}

function Ic() {
var t = Rc();
return window[t];
}

往上面追栈发现I0I0I0 的参数就是t 中对应的行 参数之间用| 分割

image-20241111103119618

往下走发现创建了worker 线程

image-20241111104420328

查看解混淆后的代码逻辑

image-20241111104847863

  1. 首先y 值一个根据K 和 $i = 1 === e ? 1 : e / 2 算出来的一个array

    形如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [
    { start: 0, end: 190650 },
    { start: 190651, end: 381301 },
    { start: 381302, end: 571952 },
    { start: 571953, end: 762603 },
    { start: 762604, end: 953254 },
    { start: 953255, end: 1143905 },
    { start: 1143906, end: 1334556 },
    { start: 1334557, end: 1525207 },
    { start: 1525208, end: 1715858 },
    { start: 1715859, end: 1906509 },
    { start: 1906510, end: 2097152 }
    ]

    遍历传值到匿名函数中去

  2. ai, 和1中的D组成一个参数 以[D[“start”], D[“end”], C, Q, s, G, E, I, n] 的形式传入function (n, D)

  3. function (n, D) 返回 "(" + n["toString"]() + ").apply(null, " + JSON["stringify"](D) + ")";

  4. 也就是 "(" + ai["toString"]() + ").apply(null, " + JSON["stringify"]([D["start"], D["end"], C, Q, s, G, E, I, n]) + ")";

​ 5. 替换字符串["replace"](poi["name"], poi["toString"]())["replace"](sha256["name"], sha256["toString"]()

因为ai 函数有调用poi 函数

1
2
3
4
function ai(n, D, g, A, r, o, i, w, t) {
for (var c, u = n; u <= D; u++) (c = poi(u, g, A, r, o, i, 0, t)) && postMessage(c);
postMessage(!1);
}

此处将poi 的函数名替换为函数定义,也就是把相关代码放到一起

  1. 然后将这个函数作为第一个参数,

  2. 匿名函数作为第二个参数image-20241111111046483

  3. 这个参数作为错误处理函数 传入Ni

    image-20241111111134636

  4. Ni 的作用就是 创建一个worker

这里可以看到函数的定义和传值

image-20241111111419692

函数的返回值通过postMessage 将数据通过nw函数的返回值赋值给Vi

1
2
3
4
5
function nw(n, D) {
Vi = n,
Xi = u() - D,
Wi = !0
}

worker 中的代码稍微更改一下,再根据 DW 中的传值,就可以把这个函数的生成逻辑补全。


https://kingjem.github.io/2024/11/15/PX3 参数生成之 wasm b 函数中参数D 的生成/
作者
Ruhai
发布于
2024年11月15日
许可协议