首页
社区
课程
招聘
[原创]PCVX小程序抓包分析
发表于: 2022-11-7 23:55 9371

[原创]PCVX小程序抓包分析

2022-11-7 23:55
9371

首先退出当前登录的微信并下载3.7.6.44版本的微信

 

然后将这个目录下的所有文件及文件夹删除
C:\Users\Administrator\AppData\Roaming\Tencent\WeChat

 

登录微信后随便找一个小程序点进去。

 

进到这个目录下查看文件夹名称是否为4648
C:\Users\Administrator\AppData\Roaming\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime

 

并确保该文件的版本为1.9.4648.2
C:\Users\Administrator\AppData\Roaming\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime\4648\extracted\runtime\WeChatAppEx.exe

 

x64dbg附加 WeChatAppEx.exe.
注意: 找有小程序标题的那个附加。
图片描述

 

下断recv先抓一个返回数据
图片描述

 

抓到的数据大概如下格式

 

补图:
图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
17 //协议状态位
03 03 //协议类型 小程序
07 99 //content 长度
BB 81 24 B3 67 12 D2 34 F9 31 F4 95 46 D9 83 C1
9D E3 7C 5B B6 6F B2 E6 F0 AC 1A FE 9E 02 CD B6
67 EA E9 2D 5B C3 7A 26 7C 34 B5 EF 8D B2 30 C3
BA 90 BB 8E 81 BB A7 A9 58 A3 C9 A7 62 14 4D 14
39 EF 8D 17 FB B9 AB 02 CB 85 8F 9A 84 15 94 40
21 15 DB 40 18 82 2F 83 D2 6A 2D 8F 2C 28 FC 67
FC 88 32 D6 6D A1 27 95 36 76 C2 84 3D 26 20 48
66 CC 88 53 88 38 3E 95 F0 32 F6 2A 53 A3 28 DD
26 5A 82 2A C8 88 03 5F FB F9 FC 7C 95 AB AB F0
71 3A 99 C5 7A 30 A0 BC 81 9D 7B E9 D3 99 2E 7E
7C D2 50 2B AC E0 64 6A 8B 48 00 36 70 13 10 AC
EF CB 2E AB 23 AA AD D3 9D 5B 88 //content

其中第一个字节是状态位 分别有 14 15 16 17这几种 16 17 是业务正常数据。15应该是失败。

 

对buffer下访问断返回后来到这里
图片描述
RVA:2DF0866

 

函数会执行两次。
第一次读取包的buffer前5个字节。从中会取出后两位,也就是长度当做下一次调用的参数。
第二次读取buffer+5位置的data(len参数来源于第一次获取)

 

读取完数据后。会从中再读取前8位作为head处理。
剩余数据当作body处理。
图片描述
RVA:1DE4802

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BB 81 24 B3 67 12 D2 34 //head
 
F9 31 F4 95 46 D9 83 C1 9D E3 7C 5B B6 6F B2 E6
F0 AC 1A FE 9E 02 CD B6 67 EA E9 2D 5B C3 7A 26
7C 34 B5 EF 8D B2 30 C3 BA 90 BB 8E 81 BB A7 A9
58 A3 C9 A7 62 14 4D 14 39 EF 8D 17 FB B9 AB 02
CB 85 8F 9A 84 15 94 40 21 15 DB 40 18 82 2F 83
D2 6A 2D 8F 2C 28 FC 67 FC 88 32 D6 6D A1 27 95
36 76 C2 84 3D 26 20 48 66 CC 88 53 88 38 3E 95
F0 32 F6 2A 53 A3 28 DD 26 5A 82 2A C8 88 03 5F
FB F9 FC 7C 95 AB AB F0 71 3A 99 C5 7A 30 A0 BC
81 9D 7B E9 D3 99 2E 7E 7C D2 50 2B AC E0 64 6A
8B 48 00 36 70 13 10 AC EF CB 2E AB 23 AA AD D3
9D 5B 88 //body

然后对body进行一次解密后得到最终response数据交给app做后续处理。
图片描述
RVA:1DE485A

 

从解密的参数来看应该是aes-128-gcm算法
解密后的数据如下,我将其分为了两部分。
第一部分为协议头。
第二部分为json_data(也有可能是HTTP的raw).

1
2
3
00 00 31 01 04 00 00 00 0F 88 61 96 D0 7A BE 94 03 AA 69 3F 75 04 01 09 40 82 E3 6C DC 10 54 C5 A3 7F 5F 96 1D 75 D0 62 0D 26 3D 4C 74 41 EA FB 24 E3 B1 05 4C 1C 37 E1 59 EF 00 07 3E 00 00 00 00 00 0F
 
7B 22 72 65 74 5F 6D 6F 64 75 6C 65 22 3A 7B 22 63 6F 75 6E 74 22 3A ... //json_data

其中response的数据可以直接转文本就是明文字符了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
{
    "ret_module": {
        "count": 50,
        "data": [
            {
                "slot_num": 7,
                "device_id": 100031366,
                "order_id": 31359415,
                "name": "千惠便利店",
                "coins": 3,
                "create_time": "2022-08-09 09:52:36",
                "stack_id": 26507501,
                "status": 1,
                "refundCoins": null
            },
            {
                "order_id": 28234418,
                "slot_num": 7,
                "device_id": 100031366,
                "name": "千惠便利店",
                "coins": 2,
                "stack_id": 23882273,
                "create_time": "2022-07-18 09:56:05",
                "status": 1,
                "refundCoins": null
            },
            {
                "create_time": "2022-07-13 09:47:55",
                "slot_num": 7,
                "stack_id": 23308528,
                "device_id": 100031366,
                "order_id": 27545901,
                "name": "千惠便利店",
                "coins": 2,
                "status": 1,
                "refundCoins": null
            },
            {
                "slot_num": 7,
                "device_id": 100031366,
                "order_id": 27258391,
                "name": "千惠便利店",
                "stack_id": 23074033,
                "coins": 2,
                "create_time": "2022-07-11 09:20:23",
                "status": 1,
                "refundCoins": null
            },
            {
                "slot_num": 7,
                "device_id": 100031366,
                "stack_id": 22288022,
                "name": "千惠便利店",
                "coins": 2,
                "order_id": 26302324,
                "create_time": "2022-07-04 09:34:32",
                "status": 1,
                "refundCoins": null
            },
            {
                "order_id": 24564459,
                "stack_id": 20871834,
                "slot_num": 7,
                "device_id": 100031366,
                "name": "千惠便利店",
                "coins": 3,
                "create_time": "2022-06-21 09:17:29",
                "status": 1,
                "refundCoins": null
            },
            {
                "slot_num": 7,
                "device_id": 100031366,
                "name": "千惠便利店",
                "coins": 2,
                "create_time": "2022-06-20 14:30:20",
                "status": 1,
                "stack_id": 20782357,
                "order_id": 24453351,

如果数据走的HTTP协议的话。解密后的数据则大概如下 其中包含http报文协议头和raw。

1
48 54 54 50 2F 31 2E 31 20 32 30 30 20 4F 4B 0D 0A 53 65 72 76 65 72 3A 20 6E 67 69 6E 78 0D 0A 44 61 74 65 3A 20 4D 6F 6E 2C 20 30 37 20 4E 6F 76 20 32 30 32 32 20 31 31 3A 32 38 3A 31 32 20 47 4D 54 0D 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 61 70 70 6C 69 63 61 74 69 6F 6E 2F 6A 73 6F 6E 0D 0A 54 72 61 6E 73 66 65 72 2D 45 6E 63 6F 64 69 6E 67 3A 20 63 68 75 6E 6B 65 64 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 6B 65 65 70 2D 61 6C 69 76 65 0D 0A 58 2D 50 65 72 6D 69 74 74 65 64 2D 43 72 6F 73 73 2D 44 6F 6D 61 69 6E 2D 50 6F 6C 69 63 69 65 73 3A 20 61 6C 6C 0D 0A 58 2D 44 6F 77 6E 6C 6F 61 64 2D 4F 70 74 69 6F 6E 73 3A 20 76 61 6C 75 65 0D 0A 58 2D 46 72 61 6D 65 2D 4F 70 74 69 6F 6E 73 3A 20 53 41 4D 45 4F 52 49 47 49 4E 0D 0A 58 2D 43 6F 6E 74 65 6E 74 2D 54 79 70 65 2D 4F 70 74 69 6F 6E 73 3A 20 6E 6F 73 6E 69 66 66 0D 0A 58 2D 58 53 53 2D 50 72 6F 74 65 63 74 69 6F 6E 3A 20 31 0D 0A 43 6F 6E 74 65 6E 74 2D 53 65 63 75 72 69 74 79 2D 50 6F 6C 69 63 79 3A 20 75 70 67 72 61 64 65 2D 69 6E 73 65 63 75 72 65 2D 72 65 71 75 65 73 74 73 3B 63 6F 6E 74 65 6E 74 20 2A 0D 0A 53 74 72 69 63 74 2D 54 72 61 6E 73 70 6F 72 74 2D 53 65 63 75 72 69 74 79 3A 20 6D 61 78 2D 61 67 65 3D 36 33 30 37 32 30 30 30 3B 20 69 6E 63 6C 75 64 65 53 75 62 64 6F 6D 61 69 6E 73 3B 20 70 72 65 6C 6F 61 64 0D 0A 52 65 66 65 72 72 65 72 2D 50 6F 6C 69 63 79 3A 20 6F 72 69 67 69 6E 2D 77 68 65 6E 2D 63 72 6F 73 73 6F 72 69 67 69 6E 0D 0A 0D 0A 36 31 0D 0A 7B 22 63 6F 64 65 22 3A 22 32 30 30 22 2C 22 6D 73 67 22 3A 22 E6 93 8D E4 BD 9C E6 88 90 E5 8A 9F 22 2C 22 64 61 74 61 22 3A 22 76 34 6E 50 62 75 33 62 55 70 71 6C 77 71 6D 64 7A 58 2B 36 74 51 3D 3D 22 2C 22 74 69 6D 65 53 74 61 6D 70 22 3A 22 31 36 36 37 38 32 30 34 39 32 31 32 37 22 7D

转字符串后如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 07 Nov 2022 11:28:12 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-Permitted-Cross-Domain-Policies: all
X-Download-Options: value
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1
Content-Security-Policy: upgrade-insecure-requests;content *
Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
Referrer-Policy: origin-when-crossorigin
 
61
{"code":"200","msg":"操作成功","data":"v4nPbu3bUpqlwqmdzX+6tQ==","timeStamp":"1667820492127"}
0

最终效果:
res1

 


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

上传的附件:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 2296
活跃值: (6668)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
2
用http debugger抓不到包吗
2022-11-8 09:46
0
雪    币: 18
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
大佬 发请求的call 咋着
2022-11-13 22:16
0
雪    币: 5201
活跃值: (2794)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
只能抓微信小程序吗?
2022-11-16 00:34
0
雪    币: 761
活跃值: (628)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了
2022-11-24 23:06
0
游客
登录 | 注册 方可回帖
返回
//