地址:d5d2aa1e5acf92ac6fadf6a2ba68734dcf2dfb581261dac8fc67a4a3390c06e9接口:2d74917137a05047e8d6ce026c01d8f6affef71f566f9898943237104f4ceb8c以fetch(node.js)格式复制请求,对比后发现参数变化工具网站(在线代码对比):923K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1k6i4S2@1k6r3W2X3k6W2)9J5k6h3!0B7k6h3&6S2K9g2)9J5k6h3y4G2L8g2)9J5c8R3`.`. 这里面有2个,都打上断点,其中有一个函数是没有用到的 function f(t)对外暴露的是函数a 从调用堆栈往上追一下,看看是谁在调用 这样就定位到我们的请求头构建函数了,而且把传入的参数e也定位到了,从控制台打印一下e,复制下来,这是前面各种环境检测后的初始值,后面加密运算用的输入参数,右键复制object,在js代码中定义一个参数e备用 再回到我们当前断点的堆栈上,找到所属的函数模块key 现在只需要用加载器函数,调用这个就可以了上面的代码就把请求头中的参数都做完加密了,检查后,发现还缺少一个参数x-tingyun,重新搜索定位一下,并打个断点 从代码对比上看,这里就n发生了变化,n的生成函数就在前面,调用了G函数,悬浮一下就能直接抓到 复制下来,这样所有的请求参数就都获取到了响应出来的json都是密文,而且可以看到和请求参数值很像。有经验的可以想到里面会有拦截器,我没有按照这个方法去找,还是从堆栈里面找到的 request后就这三个调用,挨个找一下并打断点,很容易定位到解密函数 打上后耐心点逐步调试,看到这个e.data的时候,打个断点,然后打印看一下e,里面有解密好的数据,在e.data.data.list里面 现在就成功定位到了解密函数,然后看一下传入的是什么参数,就能够执行了很容易找到,解密函数就是加密函数中的b函数,e.data往上找找看,是请求后的返回值同样的方法调用解密函数js代码的框架能够正常获取,注释掉一部分加密参数也可以获取到,比想象中简单一些 let window = globalThis;
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289975.htm
自己摸索并记录的webpack逆向案例
287 浏览
1 回复
tql