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

微信协议入门——原理篇

2020-5-9 11:55
23018

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

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

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


[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费 22
支持
分享
赞赏记录
参与人
雪币
留言
时间
空城有麋鹿
期待更多优质内容的分享,论坛有你更精彩!
2024-6-12 13:41
Dragons·宇
为你点赞~
2022-11-10 17:12
PLEBFE
为你点赞~
2022-7-30 14:56
你与贫道有缘
为你点赞~
2021-11-15 15:59
wweifu
为你点赞~
2021-8-13 22:27
谖草
为你点赞~
2021-7-22 09:38
闪星星
为你点赞~
2021-7-22 01:47
桃花岛主@1
为你点赞~
2021-5-28 17:03
wx_流云_437
为你点赞~
2021-5-27 18:04
Qira
为你点赞~
2020-7-20 14:05
江北浪
为你点赞~
2020-7-1 16:44
zhenwo
为你点赞~
2020-6-22 22:29
厘米纪念馆
为你点赞~
2020-6-22 03:14
编程小白
为你点赞~
2020-6-20 20:13
darkedge
为你点赞~
2020-6-10 23:56
渐近线
为你点赞~
2020-5-14 00:06
zzg令狐
为你点赞~
2020-5-13 16:32
zhighest
为你点赞~
2020-5-11 19:16
Vn小帆
为你点赞~
2020-5-11 08:55
xlshn
为你点赞~
2020-5-9 16:39
褐眼男子
为你点赞~
2020-5-9 15:13
MTRush
为你点赞~
2020-5-9 14:22
最新回复 (21)
雪    币: 164
活跃值: (1833)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
2
手抖点了赞,扣了15雪碧,这。。。。。。。
2020-5-9 14:24
4
雪    币: 19
活跃值: (341)
能力值: ( 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
雪    币: 2708
活跃值: (1718)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
期待 后面的内容
2020-5-11 08:55
0
雪    币: 6118
活跃值: (1217)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
6
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
我赞一下你的回帖,送你5雪币
2020-5-11 09:47
2
雪    币: 164
活跃值: (1833)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
7
CCkicker 我赞一下你的回帖,送你5雪币
感谢版主,15个有点多,要攒好几天呢
2020-5-11 10:25
0
雪    币: 6118
活跃值: (1217)
能力值: (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
雪    币: 2854
活跃值: (2907)
能力值: ( 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
雪    币: 441
活跃值: (1265)
能力值: ( 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
活跃值: (266)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
膜拜大神,求拉交流群
2021-5-26 15:18
0
雪    币: 446
活跃值: (352)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
膜拜大佬
2021-7-22 01:48
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册