本篇文章仅用于交流与学习,严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除。
感谢关注!您的关注和点赞就是我的动力
1.逆向目标
aHR0cHM6Ly93d3cud2FpbWFveGlhLm5ldC9sb2dpbg==
逆向这里的sign参数

2.逆向分析
Wasm 加密是一种前端核心逻辑保护方案,本质是将原本由 JavaScript 实现的加密算法、接口签名、风控校验等敏感逻辑,改用 C/C++、Rust 等编译型语言编写后,编译为 WebAssembly 二进制字节码文件部署在前端,由浏览器加载并通过 JS 桥接调用执行;相较于传统 JS 代码混淆,Wasm 以二进制格式分发,运行在独立的线性内存空间中,其底层指令不具备天然可读性,常规前端调试工具无法直接还原出清晰的源码逻辑,还可叠加控制流平坦化、内存混淆、反调试检测、环境校验等防护手段进一步提升逆向门槛,同时凭借接近原生代码的执行效率保障加密运算性能,大幅增加攻击者静态分析、动态调试和算法还原的时间成本,广泛应用于反爬接口签名、敏感数据加解密、前端风控校验、版权保护等场景,但它并非绝对安全的加密方案,攻击者仍可通过内存 Dump、指令级动态追踪、调用 Hook 等方式逐步还原其核心逻辑。
你可以把 Wasm(WebAssembly)理解成一种能在浏览器里跑的「高效二进制小程序格式」:以前浏览器只能运行 JavaScript 代码,就像商店只收现金,而 Wasm 相当于让浏览器多支持了 "刷高效银行卡"------ 你可以用 C、Rust 这些运行速度很快的语言写好逻辑,打包成 Wasm 二进制文件放进网页,浏览器能直接加载运行,速度比 JS 快很多,接近本地软件的性能。大家常说的 "Wasm 加密",就是把网页里的签名、加密这些核心逻辑藏进 Wasm 文件里:普通 JS 代码打开浏览器控制台就能看懂、随便改,而 Wasm 是二进制格式,打开全是看不懂的底层指令,想逆向扒出里面的加密算法要难得多,相当于给核心代码加了一层很厚的防护壳,不过它也不是绝对破不了,只是大幅提高了破解的门槛和时间成本。
直接搜关键字sign,打上断点发现断住了,往上跟栈,找一下sign的生成位置

sign是在这里生成的,方法入参前三个分别是,用户名,指纹信息和验证码通过的校验信息,进入方法内看一下

方法内是一个wasm,把wasm文件下载到本地用fs模块加载


这里的go是从这里加载的,我们本地也按照这样加载


然后把上面这一堆全扣下来,

加载成功后,就能调用这里的_makeFuncWrapper方法了,
3.逆向结果
