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

微信协议入门——原理篇

2020-5-9 11:55
23439

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

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

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的数据结构

欢迎交流交流
509K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6w2L8$3&6Y4d9$3!0F1k6K6t1H3i4K6u0r3g2$3g2o6K9r3q4@1f1p5y4t1L8$3!0C8


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 22
支持
分享
最新回复 (21)
雪    币: 164
活跃值: (1843)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
2
手抖点了赞,扣了15雪碧,这。。。。。。。
2020-5-9 14:24
4
雪    币: 19
活跃值: (341)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
赞一个
2020-5-9 19:25
0
雪    币: 7
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我看腾讯招聘。这个pc版本貌似用的duilib,然后duilib介绍说,腾讯维护了一个自己的版本的duilib。
2020-5-11 07:41
0
雪    币: 2708
活跃值: (1723)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
期待 后面的内容
2020-5-11 08:55
0
雪    币: 6119
活跃值: (1222)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
6
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
我赞一下你的回帖,送你5雪币
2020-5-11 09:47
2
雪    币: 164
活跃值: (1843)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
7
CCkicker 我赞一下你的回帖,送你5雪币
感谢版主,15个有点多,要攒好几天呢
2020-5-11 10:25
0
雪    币: 6119
活跃值: (1222)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
8
MTRush 感谢版主,15个有点多,要攒好几天呢
发个精华文章,1000雪币就到账了
2020-5-11 10:35
0
雪    币: 3278
活跃值: (3081)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
我也赞一下
2020-5-11 11:49
0
雪    币: 3278
活跃值: (3081)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
duanqiang 我看腾讯招聘。这个pc版本貌似用的duilib,然后duilib介绍说,腾讯维护了一个自己的版本的duilib。
是的,duilib的githu下又多个分支
2020-5-11 11:50
0
雪    币: 3016
活跃值: (3087)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
送你5个雪币,不要难过了~
2020-5-11 17:02
0
雪    币: 234
活跃值: (314)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
大兄弟,那个中间那个未知数据 00 69 之后的0x69个字节的数据并不是固定的,,,,就是一个加密数据 
2020-6-15 09:59
0
雪    币: 3278
活跃值: (3081)
能力值: ( 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
雪    币: 451
活跃值: (1375)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
18
?
2020-6-20 20:13
0
雪    币: 160
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
数据包中能否抓取到微信号?
2020-7-1 14:01
0
雪    币: 98
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
ciiiiiii 数据包中能否抓取到微信号?
PC端使用ollydb加载微信,加载那个最大的动态库文件,查字符串uin,在找到像链接一样串上下断点,再在手机上给自己发点消息,应该会找到,注意要在断点后面call调用后,查看一下相关寄存器指向内存的前后找一下那个似链接的串。
2020-7-23 15:02
0
雪    币: 2
活跃值: (271)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
膜拜大神,求拉交流群
2021-5-26 15:18
0
雪    币: 446
活跃值: (352)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
膜拜大佬
2021-7-22 01:48
0
游客
登录 | 注册 方可回帖
返回