某某电影网页wasm逆向思路

查看 82|回复 9
作者:Pueritia   
本文仅供学习交流使用,如有侵权,联系我删除。
网址:aHR0cHM6Ly9tLndhbmRhY2luZW1hcy5jb20vbG9naW4=
发送验证码后,发现协议头的中的check加密了,在发送方法下断点,往下跟踪


image.png (21.75 KB, 下载次数: 0)
下载附件
1
2023-4-13 20:23 上传

找到了加密的方法gowasm.sp,将时间戳,url头等信息传进去加密。


image.png (54.93 KB, 下载次数: 0)
下载附件
2
2023-4-13 20:24 上传

跟进去发现调用了wasm的resume方法,本人新手,面对wasm毫无思路,在多方搜索后无果后最后注册吾爱发现不少wasm的逆向文章,
最后参考的:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1492577 成功逆向。
找到wasm的加载的地方,打断点,刷新下网页让他重新加载wasm,注入脚本:


8.png (61.34 KB, 下载次数: 0)
下载附件
2023-4-13 20:40 上传

[JavaScript] 纯文本查看 复制代码wasm = i.instance.exports;
memories = [wasm.memory]
viewDWORD = (addr) =>{
    const arr = new Uint32Array(memories[0].buffer.slice(addr, addr + 16));
    return arr;
};
viewChar = (addr, size = 16) =>{
    const arr = new Uint8Array(memories[0].buffer.slice(addr, addr + size));
    return String.fromCharCode.apply(null, arr);
};
viewHEX = (addr, size = 16) =>{
    const arr = new Uint8Array(memories[0].buffer.slice(addr, addr + size));
    return (Array.from(arr, x =>x.toString(16).padStart(2, '0')).join(' '));
};
viewHexCode = (addr, size = 16) =>{
    const arr = new Uint8Array(memories[0].buffer.slice(addr, addr + size));
    return (Array.from(arr, x =>'0x' + x.toString(16).padStart(2, '0')).join(', '));
};
dumpMemory = (addr, size = 16) =>{
    const arr = new Uint8Array(memories[0].buffer.slice(addr, addr + size));
    return arr;
};
viewString = (addr, size = 16) =>{
    const arr = new Uint8Array(memories[0].buffer.slice(addr, addr + size));
    let max = size;
    for (let i = 0; i x.charCodeAt());
    const match = (j) =>{
        return k.every((b, i) =>m[i + j] === b);
    };
    const max = Math.min(10_000_000, m.byteLength || m.length);
    for (let i = 0; i
注入之后就可以通过view方法来查看wasm申请的内存,非常方便。
接上面,在wasm的入口继续往下追踪,发现实际是通过md5加密,在加密方法的入口处下断点,通过viewChar来观察入参。


7.png (107.86 KB, 下载次数: 0)
下载附件
2023-4-13 20:39 上传

发现有数据,增加长度后就发现了加密前的字符串,经过验证确认gowasm.sp传入的参数经过加盐操作后md5就得到了check。


4.png (18.55 KB, 下载次数: 0)
下载附件
2023-4-13 20:35 上传

同样的,在另一个地方的加密调用的gowasm.sa方法 跟进去后发现使用的AES加密,
这个算法不懂,因为这个wasm是go语言的转的,百度go的ASE算法实现


5.png (60.55 KB, 下载次数: 0)
下载附件
2023-4-13 20:35 上传

在wasm找到对应的方法,下断点,成功获取到key。然后mode 和 padding都试一遍就试出来了。


6.png (188.64 KB, 下载次数: 0)
下载附件
2023-4-13 20:35 上传

下载次数, 下载附件

zhy1992   

这是破解了?
路人王2021   

学习一下啦
tybo8083006   

好牛逼的样子
vipzzc   

这个不错
Hcj665766   

学习学习
MikeZhang   

非常有帮助,感谢老哥分享
MWH   

非常有帮助,感谢老哥分享
wumianren   

学习一下
ppplp   

学习一下啦
您需要登录后才可以回帖 登录 | 立即注册

返回顶部