首页
社区
课程
招聘
微信协议入门——原理篇
发表于: 2020-5-9 11:55 21849

微信协议入门——原理篇

2020-5-9 11:55
21849

先上两张图,看下微信的架构

各个模块的功能分别如下:

Application协议:微信用的是google的protobuf

Handshake协议:安全地协商出对称加密密钥

Alert协议:用于通知对端发生错误,希望对端关闭连接

Record协议:使用对称加密密钥进行安全的通信

理论上的流程就是:

1、先使用mmtls的Handshake协议,协商出加密密钥

2、业务数据经过protobuf序列化后,再用协商出的加密密钥进行加密传送

更加具体的情况先给出:

1、协商出加密密钥

微信选择的握手协议

1-RTT ECDHE、1-RTT PSK和0-RTT PSK

长连接:1-RTT ECDHE、1-RTT PSK

断连接:1-RTT ECDHE(客户端没有PSK)、0-RTT PSK(客户端有PSK)

具体的握手流程图

mmtls参考TLS1.3,对应的关键握手过程

1、客户端发起协商请求:ClientHello

2、服务器返回协商响应:ServerHello

3、服务器通知协商结束:ServerFinish

4、客户端确认协商结束:ClientFinish

2、加密传送

业务数据,protobuf序列化,压缩,业务层加密,mmtls层加密

具体的分析过程

IDA里面搜索client hello

进入第一个字符串 Client hello,对应的代码就能看出整个Handshake握手相关步骤

进入第二个字符串:send client hello fail,对应的是具体的代码

这里给出clienthello的数据结构

欢迎交流交流
https://github.com/KongKong20/WeChatPCHook


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 22
支持
分享
最新回复 (21)
雪    币: 164
活跃值: (1823)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
2
手抖点了赞,扣了15雪碧,这。。。。。。。
2020-5-9 14:24
4
雪    币: 19
活跃值: (331)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
赞一个
2020-5-9 19:25
0
雪    币: 8
活跃值: (120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我看腾讯招聘。这个pc版本貌似用的duilib,然后duilib介绍说,腾讯维护了一个自己的版本的duilib。
2020-5-11 07:41
0
雪    币: 2719
活跃值: (1589)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
期待 后面的内容
2020-5-11 08:55
0
雪    币: 6112
活跃值: (1212)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
6
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
我赞一下你的回帖,送你5雪币
2020-5-11 09:47
2
雪    币: 164
活跃值: (1823)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
7
CCkicker 我赞一下你的回帖,送你5雪币
感谢版主,15个有点多,要攒好几天呢
2020-5-11 10:25
0
雪    币: 6112
活跃值: (1212)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
8
MTRush 感谢版主,15个有点多,要攒好几天呢
发个精华文章,1000雪币就到账了
2020-5-11 10:35
0
雪    币: 3221
活跃值: (3031)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
我也赞一下
2020-5-11 11:49
0
雪    币: 3221
活跃值: (3031)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
duanqiang 我看腾讯招聘。这个pc版本貌似用的duilib,然后duilib介绍说,腾讯维护了一个自己的版本的duilib。
是的,duilib的githu下又多个分支
2020-5-11 11:50
0
雪    币: 2234
活跃值: (2351)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
送你5个雪币,不要难过了~
2020-5-11 17:02
0
雪    币: 234
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
大兄弟,那个中间那个未知数据 00 69 之后的0x69个字节的数据并不是固定的,,,,就是一个加密数据 
2020-6-15 09:59
0
雪    币: 3221
活跃值: (3031)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
Altai001 大兄弟,那个中间那个未知数据 00 69 之后的0x69个字节的数据并不是固定的,,,,就是一个加密数据 [em_86]
没换机器,一直没变,但不知道是什么
请教下这个是对什么加密的呢?
2020-6-15 10:55
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
厉害,有联系方式吗?
2020-6-16 03:45
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
我想拜你为师
2020-6-16 19:43
0
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
原来点赞会扣雪币的嘛?
2020-6-17 20:17
1
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
17
厉害,支持
2020-6-20 19:53
0
雪    币: 441
活跃值: (1035)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
18
?
2020-6-20 20:13
0
雪    币: 160
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
数据包中能否抓取到微信号?
2020-7-1 14:01
0
雪    币: 99
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
ciiiiiii 数据包中能否抓取到微信号?
PC端使用ollydb加载微信,加载那个最大的动态库文件,查字符串uin,在找到像链接一样串上下断点,再在手机上给自己发点消息,应该会找到,注意要在断点后面call调用后,查看一下相关寄存器指向内存的前后找一下那个似链接的串。
2020-7-23 15:02
0
雪    币: 2
活跃值: (256)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
膜拜大神,求拉交流群
2021-5-26 15:18
0
雪    币: 446
活跃值: (352)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
膜拜大佬
2021-7-22 01:48
0
游客
登录 | 注册 方可回帖
返回
//