首页
论坛
课程
招聘
微信协议入门——原理篇
2020-5-9 11:55 11250

微信协议入门——原理篇

2020-5-9 11:55
11250

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

 

 

 

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

 

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


[注意] 欢迎加入看雪团队!base上海,招聘安全工程师、逆向工程师多个坑位等你投递!

收藏
点赞18
打赏
分享
最新回复 (21)
雪    币: 1186
活跃值: 活跃值 (917)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
MTRush 活跃值 1 2020-5-9 14:24
2
4
手抖点了赞,扣了15雪碧,这。。。。。。。
雪    币: 30
活跃值: 活跃值 (114)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
尕可 活跃值 2020-5-9 19:25
3
0
赞一个
雪    币: 8
活跃值: 活跃值 (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
duanqiang 活跃值 2020-5-11 07:41
4
0
我看腾讯招聘。这个pc版本貌似用的duilib,然后duilib介绍说,腾讯维护了一个自己的版本的duilib。
雪    币: 2048
活跃值: 活跃值 (934)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Vn小帆 活跃值 2020-5-11 08:55
5
0
期待 后面的内容
雪    币: 4814
活跃值: 活跃值 (883)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
CCkicker 活跃值 2020-5-11 09:47
6
2
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
我赞一下你的回帖,送你5雪币
雪    币: 1186
活跃值: 活跃值 (917)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
MTRush 活跃值 1 2020-5-11 10:25
7
0
CCkicker 我赞一下你的回帖,送你5雪币
感谢版主,15个有点多,要攒好几天呢
雪    币: 4814
活跃值: 活跃值 (883)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
CCkicker 活跃值 2020-5-11 10:35
8
0
MTRush 感谢版主,15个有点多,要攒好几天呢
发个精华文章,1000雪币就到账了
雪    币: 1933
活跃值: 活跃值 (866)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
KongKong20 活跃值 2020-5-11 11:49
9
0
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
我也赞一下
雪    币: 1933
活跃值: 活跃值 (866)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
KongKong20 活跃值 2020-5-11 11:50
10
0
duanqiang 我看腾讯招聘。这个pc版本貌似用的duilib,然后duilib介绍说,腾讯维护了一个自己的版本的duilib。
是的,duilib的githu下又多个分支
雪    币: 1472
活跃值: 活跃值 (485)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nohackxu 活跃值 2020-5-11 17:02
11
0
MTRush 手抖点了赞,扣了15雪碧,这。。。。。。。
送你5个雪币,不要难过了~
雪    币: 227
活跃值: 活跃值 (129)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Altai001 活跃值 2020-6-15 09:59
12
0
大兄弟,那个中间那个未知数据 00 69 之后的0x69个字节的数据并不是固定的,,,,就是一个加密数据 
雪    币: 1933
活跃值: 活跃值 (866)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
KongKong20 活跃值 2020-6-15 10:55
13
0
Altai001 大兄弟,那个中间那个未知数据 00 69 之后的0x69个字节的数据并不是固定的,,,,就是一个加密数据 [em_86]
没换机器,一直没变,但不知道是什么
请教下这个是对什么加密的呢?
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_qsuqtzye 活跃值 2020-6-16 03:45
14
0
厉害,有联系方式吗?
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
like9618 活跃值 2020-6-16 19:43
15
0
我想拜你为师
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
i叶落y 活跃值 2020-6-17 20:17
16
1
原来点赞会扣雪币的嘛?
雪    币: 5780
活跃值: 活跃值 (381)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
NightGuard 活跃值 1 2020-6-20 19:53
17
0
厉害,支持
雪    币: 84
活跃值: 活跃值 (359)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
编程小白 活跃值 2020-6-20 20:13
18
0
?
雪    币: 160
活跃值: 活跃值 (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ciiiiiii 活跃值 2020-7-1 14:01
19
0
数据包中能否抓取到微信号?
雪    币: 92
活跃值: 活跃值 (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bravoice 活跃值 2020-7-23 15:02
20
0
ciiiiiii 数据包中能否抓取到微信号?
PC端使用ollydb加载微信,加载那个最大的动态库文件,查字符串uin,在找到像链接一样串上下断点,再在手机上给自己发点消息,应该会找到,注意要在断点后面call调用后,查看一下相关寄存器指向内存的前后找一下那个似链接的串。
雪    币: 2
活跃值: 活跃值 (116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_artpehde 活跃值 2021-5-26 15:18
21
0
膜拜大神,求拉交流群
雪    币: 372
活跃值: 活跃值 (203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
闪星星 活跃值 2021-7-22 01:48
22
0
膜拜大佬
游客
登录 | 注册 方可回帖
返回