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


抓包可以看到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
frida
charles
IDA
trace:
这里用的棕熊的iOS版本qbdi,链接:https:
/
/
bbs.kanxue.com
/
thread
-
287137.htm
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直播授课