之前x-s一直用的是des加密,后续的更新也是对des的密钥进行更新。最近x-s进行了比较大的更新,改成了aes算法。
逆向分析
关键词搜索 x-s,直接定位到加密入口
进入到 window._webmsxyw 方法中后,发现经过了ob混淆,并且内部有个vmp
下图是vmp入口
打印日志
先使用babel编写一个插件,对代码进行下反混淆
接着跟栈,找到用于打印日志的变量, 经过测试得知, h变量为vmp中操作的栈,打印h的信息即可
明文入参: c = '/data/sem_sdk', i = undefined
开始打印日志
分析日志
在日志中,寻找入参明文最后一次出现的位置,在六千多行,并且发现了一个字符串,长度为 32,猜测为 md5
通过测试,就是md5
后续观察日志,发现共有四个参数 x1为上一步md5的结果,x2应该为环境检测的结果,x3为cookie中a1的值,x4为时间戳
后续将这个x1-x4再经过base64编码。
最后再将编码结果经过AES加密,拼接到payload中。
只不过这个AES并不是标准的算法,需要自己观察日志分析下。
至于 x-s-common直接扣代码即可,比较简单。
参数验证
有任何问题欢迎留言讨论!或者加v讨论!