- 手表微信可以实现手机+电脑+平板+手表四端登录
- 因此如果能够成功用起来,可以作为一个保底server
- 手表微信需要一个license才能正常登录
- 咸鱼上10块钱一个
- 目前收集到了这些版本的手表微信
- 儿童手表微信:
- 1.x版本(黄色手表微信):
- 1.7.3、1.6.2、1.3.3
- 3.x版本(蓝色手表微信):
- 3.0-beta1、3.0.9
- 小米专版
- watchOS版
我主要分析了儿童手表微信
- 我分析了1.x和3.x版本,都能正常使用,并且代码基本一致
- 通过在Java中搜索cgi-bin即可找到发送微信协议的位置
- 核心协议部分在libwechat_alita.so里,整个手表微信的项目名都叫Alita
- 保留了大部分的日志
- 对cgi url做了简单的异或加密,对关键request解码部分做了ollvm平坦化
- 通过patch so实现:
- 修改cgi <functionlist>配置,使用long link cgi
- 修改log level并开启logcat日志打印
- 通过frida实现了主动发送微信协议请求
- 能够发送大部分基础请求(收发消息、图片、群聊)
- 但是没有小程序请求的能力
- 进一步分析了微信协议
- 协议接口要求发 cmdid(纯数字)、cgiurl(/cgi-bin/…)、protobuf body
- 实测发现只发cmdid或者只发cgiurl都可以正常请求
- 实测发现/cgi-bin/micromsg-bin下面的请求基本都能发,答案是/cgi-bin/mmbiz-bin下面的请求基本都发不出去
- 正常请求发出去错误码是0、2等
- 不存在的cmdid或cgiurl错误码是137
- mmbiz-bin中的请求则总是直接返回-3003,无论是short link还是long link
- 后续
- 手表微信协议目前只能收发消息比较适合用来做后台备份server
- alita的so中实际上有一个flag声明mmtls的版本(1还是2),根据程序中写的<functionlist>,version2其实是可以发js-login等一系列mmbiz-bin请求的,但是强行patch修改version为2后,直接登录不上去了
- 这个其实是有希望的,应该继续看一下
- 应该重新登录抓一次包,试试能不能直接修改协议,然后自己发包