首页
社区
课程
招聘
[原创]iOS某大厂vmp参数还原
发表于: 2025-6-9 10:55 1622

[原创]iOS某大厂vmp参数还原

2025-6-9 10:55
1622

文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口均已做脱敏处理。严正声明禁止用于商业和非法用途,否则由此产生的一切后果与作者本人无关。若有侵权,请在下方联系方式中,联系我

工具说明

样本:脱敏!保密!保命!


抓包可以看到header里xxx中包含x1,x2,x3,x4,x5,x6,x7。
x6就是本次分析的目标。

首先就是定位参数, 然后找到参数算法生成的位置, 都是OC层代码, 很简单直接跳过。

进入核心算法触发的调用点,固定入参发现结果一直在变,找到内部的随机数逻辑hook掉。
跑一个trace,这个样本倒不是很大。

开始进入分析x6

找到x6生成的地方

可以看到x6的计算为:
w8 ^ w9 = target

查找w8这列数值计算的地方

结果计算的地方

同样是由w8,w9两个值add得到

搜一下

继续找这块数据生成的部分

看下0x42008873生成的地方

继续看W15=0x4d7a9f97的生成

熟悉的朋友想必已经发现0x6a09e667是sha256的h0

回到上头0x42008873的生成中,看W14=0xf485e8dc

继续W13=0xaedaced5的生成中w3=0xa9237f7f的生成


那么w3分支对应sha256中S0,s0组成的temp1会和temp2有add,temp2中有W[i]参与,目的通过w[i]找明文。


找w[i],发现0x5b74f56中有明文操作经过分析:


w[64] = 0xeefa6859,找到0xeefa6859的生成地方,搜下:

找到W[0]

找0x5f15b545即w[0]的生成,中途看到W[0]参与的计算

对应

继续找w[0]的生成,找到

搜下0xc097c,明文填充0x80,拼接0拼接长度,然后bswap

继续定位 0x5f15b545的来源


发现又是新一次轮sha256,这里标记下,并且汇编地址0xc0b40上面有看到。
w14-> 0xaf9a9a47的生成


找0xf810018,之前图里提过w4=w[i]

找0x633c8d9f即w[i]


找到w[0]

找到填充bwap的地方

看到这里明文为转了大端序:

长度为0x280对不上,结合上面的0x5c,2次sha56,诸多特征当然还有我后续的分析,确定这是HMAC-256。
验证下没问题:

Key的还原略过,找到后异或就行了。
继续分析数据明文:

找一下和文章最后w9分析一致,v1通过a45678解码,v1是固定的,a45678也是固定的,结果解出来也是固定的,直接拿到结果保存使用就行。



看截图里0x2AD7D2BB,0xeb86d391还有运算这MD5嘛

找下入参明文,由x1, x2, x3, x4, x5, x7组成。

入参拿到后验证下, 标准md5没问题

找一下和文章最后w9分析一致, v1通过a45678解码, v1是固定的,a45678也是固定的,结果解出来也是固定的, 直接拿到结果保存使用就行。


省略N次
与下面W9分析那里逻辑一致, 解密出来结果的不同部分而已, 直接保存用就行。

查找到w9的值,继续找生成

继续查找找到生成的地方



省略N次...

按这个逻辑对应ida伪代码


这块和上边一样也是对v1通过a45678解码, v1是固定的 a45678也是固定的。结果解出来也是固定的, 直接拿到结果保存使用就行。

本次是iOS基于trace法还原vmp的小尝试,vmp可借鉴材料的不多,自己也算摸索出来了一点皮毛。
文中如有错误,欢迎大家斧正,欢迎交流。
后面有时间会接着写剩下的参数还原~

欢迎大家关注,你们的关注是我自律的最大动力~

trace:
    这里用的棕熊的iOS版本qbdi,链接:https://bbs.kanxue.com/thread-287137.htm#msg_header_h1_1
frida
charles
IDA
trace:
    这里用的棕熊的iOS版本qbdi,链接:https://bbs.kanxue.com/thread-287137.htm#msg_header_h1_1
frida
charles
IDA
"x6":"97c8cc421b9ada2d94103c174b5814b617cda51cbf148a8a1eb499609bbc9483"
"x6":"97c8cc421b9ada2d94103c174b5814b617cda51cbf148a8a1eb499609bbc9483"
  w8^w9   = target
0xf1^0x66 = 0x97  
0x69^0xa1 = 0xc8
0x74^0xb8 = 0xcc
0x09^0x4b = 0x42
0x22^0x39 = 0x1b
0x1a^0x80 = 0x9a
0x78^0x55 = 0x2d
0x57^0xc3 = 0x94
0xe8^0xf8 = 0x10
0x4a^0x3c = 0x76
...
0xf8^0x7b = 0x83
  w8^w9   = target
0xf1^0x66 = 0x97  
0x69^0xa1 = 0xc8
0x74^0xb8 = 0xcc
0x09^0x4b = 0x42
0x22^0x39 = 0x1b
0x1a^0x80 = 0x9a
0x78^0x55 = 0x2d
0x57^0xc3 = 0x94
0xe8^0xf8 = 0x10
0x4a^0x3c = 0x76
...
0xf8^0x7b = 0x83
add w8, w9, w8  ;W8=0x42 -> 0xf1, W9=0xaf // 0xf1
add w8, w9, w8  ;W8=0x0 -> 0x69, W9=0x69 //0x69
add w8, w9, w8  ;W8=0x88 -> 0x174, W9=0xec  //0x174 strB
add w8, w9, w8  ;W8=0x73 -> 0x109, W9=0x96
add w8, w9, w8  ;W8=0x40 -> 0x122, W9=0xe2
add w8, w9, w8  ;W8=0x73 -> 0x109, W9=0x96
add w8, w9, w8  ;W8=0x40 -> 0x122, W9=0xe2
add w8, w9, w8  ;W8=0xe -> 0x1a, W9=0xc
省略N次...
add w8, w9, w8  ;W8=0x42 -> 0xf1, W9=0xaf // 0xf1
add w8, w9, w8  ;W8=0x0 -> 0x69, W9=0x69 //0x69
add w8, w9, w8  ;W8=0x88 -> 0x174, W9=0xec  //0x174 strB
add w8, w9, w8  ;W8=0x73 -> 0x109, W9=0x96
add w8, w9, w8  ;W8=0x40 -> 0x122, W9=0xe2
add w8, w9, w8  ;W8=0x73 -> 0x109, W9=0x96
add w8, w9, w8  ;W8=0x40 -> 0x122, W9=0xe2
add w8, w9, w8  ;W8=0xe -> 0x1a, W9=0xc
省略N次...
Call addr: 0x20a19b8d0 [libsystem_platform.dylib!_platform_memmove] (dst=0x13bd375b0, src=0x13bd36ed8, n=32)
源内存内容:
 (dst=0x13bd375b0, src=0x13bd36ed8, n=32)0000: 42 00 88 73 40 0e 03 08 30 6f c1 b1 07 54 11 6d   B..s@...0o...T.m
 (dst=0x13bd375b0, src=0x13bd36ed8, n=32)0010: 8b dc f9 04 c7 7d 26 75 76 84 2e fc 3f a4 ce 94   .....}&uv...?...
Call addr: 0x20a19b8d0 [libsystem_platform.dylib!_platform_memmove] (dst=0x13bd375b0, src=0x13bd36ed8, n=32)
源内存内容:
 (dst=0x13bd375b0, src=0x13bd36ed8, n=32)0000: 42 00 88 73 40 0e 03 08 30 6f c1 b1 07 54 11 6d   B..s@...0o...T.m
 (dst=0x13bd375b0, src=0x13bd36ed8, n=32)0010: 8b dc f9 04 c7 7d 26 75 76 84 2e fc 3f a4 ce 94   .....}&uv...?...
0x1003e8b40 0xc0b40     add w14, w15, w14   ;W14=0xf485e8dc -> 0x42008873, W15=0x4d7a9f97
0x1003e8b40 0xc0b40     add w14, w15, w14   ;W14=0xf485e8dc -> 0x42008873, W15=0x4d7a9f97

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

收藏
免费 39
支持
分享
最新回复 (32)
雪    币: 20
活跃值: (1078)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
666
2025-6-9 11:16
0
雪    币: 192
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
666
2025-6-9 11:40
0
雪    币: 302
活跃值: (1632)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
666
2025-6-9 11:49
0
雪    币: 1130
活跃值: (855)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
study
2025-6-9 14:37
0
雪    币: 25
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
tql 了
2025-6-10 10:18
0
雪    币: 104
活跃值: (5701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
dddd
2025-6-10 11:43
0
雪    币: 0
活跃值: (584)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
脱敏脱的不错
2025-6-10 14:52
0
雪    币: 69
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
LeeLinux 脱敏脱的不错
嘿嘿嘿
2025-6-10 15:04
0
雪    币: 7003
活跃值: (7532)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
兔哥牛逼
2025-6-10 15:16
0
雪    币: 30
活跃值: (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
1
2025-6-10 16:17
0
雪    币: 30
活跃值: (1735)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
666
2025-6-10 16:41
0
雪    币: 3531
活跃值: (2939)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
13
六百六十六
2025-6-10 22:55
0
雪    币: 227
活跃值: (1231)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
tql
6天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
NB
6天前
0
雪    币: 252
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
666666
6天前
0
雪    币: 351
活跃值: (746)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
666
6天前
0
雪    币: 43
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
666666
6天前
0
雪    币: 13
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
666
6天前
0
雪    币: 30
活跃值: (956)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
666
6天前
0
雪    币: 7761
活跃值: (5157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
感谢分享
6天前
0
雪    币: 390
活跃值: (933)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
1
5天前
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
不错的分享
5天前
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
4天前
0
雪    币: 395
活跃值: (447)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
这是用什么trace出来的,为什么可以这么全
4天前
0
游客
登录 | 注册 方可回帖
返回