【码上爬】 题十一:wasm小试牛刀 wasm文件处理,堆栈分析
暗号aHR0cHM6Ly9tYXNoYW5ncGEuY29tL3Byb2JsZW0tZGV0YWlsLzExLw题目先分析数据接口可以看到m和ts是加密的但是这里的ts的值应该是一个时间戳所以主要要逆向的值是m然后在发起程序的最上面的堆栈下一个断点断点断住后调整堆栈并且观察作用域查找加密值的生成位置就在第二个堆栈就找到了这两个参数的生成位置断点后先一步一步还原e的生成代码还原的流程如下最终得到了e的值为parseInt(Math[round](new Date()[getTime]()/0x3e8)[toString]())再看f的生成代码其实就是由callEncryptFunction对c和e的值进行加密e的值已经解决了输出c查看c的值为4这个应该是页码所以接下来只需要找到callEncryptFunction的代码所以进入这个函数可以看到其实最后返回的是g的值所以又进入到window[exports][encrypt]函数可以看到这是一段wasm代码这里可以直接将代码交给豆包合理运用ai打工让豆包生成加密代码然后就直接出答案了将代码复制到本地其实生成逻辑非常简单然后编写python代码就能获取到数据了附上python代码cookie和headers已经删除import requests import execjs page 3 cjs execjs.compile(open(1.js, r, encodingutf-8).read()).call(result, page) headers {} cookies {} url https://mashangpa.com/api/problem-detail/11/data/ params { page: str(page), m: cjs[m], _ts: cjs[e] } response requests.get(url, headersheaders, cookiescookies, paramsparams).json() print(response)