x-zse-96 手撸算法

该文章主要提供交流学习使用。严禁用于商业用途,否则由此产生一切后果与作者无关,如有侵权请联系作者进行删除。

初探

1.直接全局搜索x-zse-96 直接找到断点处 t2 + "_" + tO 就是我们想要的值。
往上寻找 t2,tO变量的赋值,发现t2是固定值“2.0“, tO是tT.signature来的,tT又是从ed方法获取的
2.ed方法传入4个参数te=请求地址, tf.body=空,{"zse93":'101_3_3.0',"dc0":cookie["d_c0","xZst81":null]},tA=空

3.ed方法进来看到做了一些赋值操作,最后把有值的变量用"+"拼接成字符串tp
在用ty()(tp)转成加密,这长度看着像md5验证下确定是。

4.最后在把md5加密后的值 用tJ(ti).encrypt方法进行加密,这个就是本文章突破的重点了。

分析vmp流程

1.tJ(ti).encrypt断点跟进去熟悉的vmp,老规矩直接把上下文有调用的方法直接打印出来看下大致流程。

2.分析日志流程就比较清晰了
a.首先看到把md5加密的值经过遍历charCodeAt操作得到第一个32位数组md5_arr
b.用random生成随机数在经过运算取整得到一个值33,给插入了md5_arr数组的首位,得到34位数组,在该数组后面连续插入14的数组直到长度为48停止,得到第二个数组arr2
c.把数组arr2用slice(0,16)得到16位数组arr3
d.经过一个方法r 把未知的数组arr4作为参数得到另一个数组arr5
e. 在把数组arr2用slice(16,48)得到32位数组arr6
f. 在经过一个方法x 把arr6 和 arr5 作为参数得到 arr7
g.然后把arr5和arr7用concat合并获得48位的arr8
h.最后把arr8 遍历运算经过"6fpLRqJO8M/c3jnYxFkUVC4ZIG12SiH=5v0mXDazWBTsuw7QetbKdoPyAl+hN9rgE" 做charAt操作得到最终值。

寻值

打上日志断点分析。

b流程的随机值取值过程,运行的154条件的逻辑,取该数组下标的3和0做 * 运算
以此类推大家可以找出相对应的值,我就不敲了·······


最终测试下请求正常

代码自取:微信公众号Bug攻防

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值