js逆向-deepseek头部参数wasm分析
警告:此案例无不良行为,无任何商业用途,仅用于学习交流!!!
一.核心参数的定位
通过简单的抓包分析,发现 chat/completion 接口返回的EventStream流数据,而响应成功拿到回答,就必须分析核心参数 x-ds-pow-response 它的生成。

通过关键字搜索很容易就定位到位置,这个n方法是btoa,将二进制字符串转成base64编码,这五个参数最核心的其实是answer这个参数,找它就是找e,我们往前跟栈

跟到这里就得注意目标在c.res里,现在我们就要去跟c里面,c是一个异步返回的结果,我们打断点,重新跟进去

这里return是返回的结果,跟进t.retrieveAnswer里面,不要选中执行,直接点进去,单步调试,

单步可能走到if这一行,没走上面的 let {pair: e} = this.useProofOfWorkStore.getState()赋值,你会看见参数已经生成,这时候可以先打一个断电,打到没生成的时候,再慢慢单步调试

走到this.calcImmediatelyNotStore()这个异步在单步进去,

单步走到这里,进入this.doSolveChallenge,我们看见


下一个跟栈核心是找到 a = await o(e, s), 单步进入异步

找到r这个异步后,我们来看这个异步会有两个回调,异步成功的回调和失败的回调,返回结果走的肯定是成功的回调,走到里面,发现answer在r的data里面,继续向前跟

最后会走的核心加密位置,也是最终answer生成的位置,很明显的wasm的结构,进去以后是看不懂的偏向于最底层的代码。不懂没关系,我们知道怎么调用就行,不知道怎么调用的,可以看看之前的wasm案例。


本案例相对较为简单,基本上找到加密核心地方,扣几行代码就能逆向出来。
二.成果展示

支持联网搜索、深度思考和专家模式。响应比网页相对较快。
更多推荐

所有评论(0)