hello 大家好我是Monday,今天给大家带来篇Js逆向之wasm的文章。。
引言
wasm是什么 先看下 官网 给的定义。
WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.
WebAssembly
是基于栈式虚拟机的二进制指令集,可以作为编程语言的编译目标,能够部署在 web
客户端和服务端的应用中。
网站:
1 | aHR0cHM6Ly9tYXRjaC55dWFucmVueHVlLmNvbS9tYXRjaC8xNQ== |
抓包分析与加密定位
分析的目的:
所以先开抓包分析此网站 请求只有一个参数m
分析js 的堆栈
找到如下函数
这里就引出了window.q
这个函数
打上断点再点击翻页可以断在window.q
中
我们跟进去看看这里window.q
的逻辑
分析可知,这段js 代码,大概来自wasm
文件,抓包分析时。我们可以下载这个文件代码如下
1 | url = "https://match.yuanrenxue.com/static/match/match15/main.wasm" |
我们可以使用现成的 python 第三方包pywasm
安装
1 | pip install pywasm |
官网使用案例:
1 | import pywasm |
根据分析js文件 window.q(t1, t2).toString() ,相当于我们加载这个wasm文件后,传入t1 和t2 时间参数就可得到
具体代码如下
1 | def get_m(): |
完整代码如下:
1 | import requests |
得到结果如下:
1 | {"status": "1", "state": "success", "data": [{"value": 2086}, {"value": 9613}, {"value": 8563}, {"value": 9659}, {"value": 7656}, {"value": 4363}, {"value": 8892}, {"value": 3371}, {"value": 1335}, {"value": 3312}]} |
结束语:
今天的分享就到这里了,欢迎大家关注微信公众号”菜鸟童靴“