首页
社区
课程
招聘
[原创]尝试解下fairplayd(苹果|ios)的混淆(块调度)
发表于: 2018-9-26 20:24 16221

[原创]尝试解下fairplayd(苹果|ios)的混淆(块调度)

2018-9-26 20:24
16221


块调度只是各个地方叫法不一样,这个就和开源的Hikari,

https://github.com/HikariObfuscator/Hikari/blob/release_60/lib/Transforms/Obfuscation/IndirectBranch.cpp

这部分代码类似,光这个块调度相对较弱,与苹果这个比较。聚安全(顶象)快调度,还有我自己做的也相对要强一些。

第一次接触这种混淆是为了开发一个类似的混淆(2018年6月),处于好奇心去分析,当时能做到函数中的块与块之间跳转的计算。

函数入口第一个块到第二个块之间当时是没有找到方法的,估计是被吓到了,分析过的人都说是和this(r0)指针相关的,没法解,

this(r0) 指针是动态的。这个一直在我心里有悬念,所以有花了两个晚上分析,然后发现都可以解了。

特别强调

这里只分析通过静态的方式计算下一个块的偏移,单纯是解混淆不存在对功能的分析,更不涉及黑灰。

块调度的原理无非就是把跳转指令diy下,由跳转到一个偏移变成跳转到一个寄存器的值。寄存器的值就可以通过算法计算得到呢。

先解函数中间的块,结构如下,


这个相对简单,口算假设下w8和w26的值就能得到x11.

在两种条件下分别得到跳转地址

口算不能解决数量级问题,还是得借助工具算,这里我使用unicorn https://github.com/unicorn-engine/unicorn


带this(r0)指针,或者说是带参数的,比如下图的X19,依赖于sub_100CB3AEC返回值


sub_100CB3AEC的参数往上又依赖于一堆东西,瞬间有点懵逼了。X0->X19->X0->X8->X9->SP一系列的回朔有点晕,

不过神奇的地方就是这是苹果的障眼法。这个函数是一个纯计算函数,也可知道参数是int8_t类型那么直无非就是0-0xff.继续带入计算,

解得w0永远等于0xfffffff0。这样这部分就和函数中间的一样了,同理解得x19等于0x1001594e4

然后毋庸置疑的进入了下一个函数sub_1001594E4

要分析流程解一两个肯定不算,还得继续分析,到这个函数更懵逼的事情发生了。

也是上一次我没解的问题,如下图,要得到X9,往上W20->W9->X25->X0.不一样的X0出现了,


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-9-26 20:25 被lpcdma编辑 ,原因:
收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  junkboy   +1.00 2018/09/27
最新回复 (7)
雪    币: 2575
活跃值: (502)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
2
iOS的文章很少
2018-9-26 21:40
0
雪    币: 3279
活跃值: (3331)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
加油,我放弃了!
2018-9-27 15:46
0
雪    币: 136
活跃值: (549)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
Author here.
光的开源版确实是暴露了未处理的基本块地址,主要原因是因为一些Linker时做Relocate的问题。
在收费版里这部分通过其他的一些混淆方式得到了解决,当然具体的细节鉴于安全保护产品的特性肯定是不方便公开说的
2018-9-30 21:44
0
雪    币: 136
活跃值: (549)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
大概长这样,老实说如果有人魔改了Backend应该会比这个做得更好。
2018-9-30 21:53
0
雪    币: 116
活跃值: (305)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
naville 大概长这样,老实说如果有人魔改了Backend应该会比这个做得更好。
恩,理解,已经很不错了。
2018-10-1 18:36
0
雪    币: 154
活跃值: (560)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
干得漂亮啊, 终于有人拿fairplay 练手了。
2018-10-7 19:59
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
能去破解脱壳App吗 可以的话加我:Q1853328299 重金
2020-6-11 22:41
0
游客
登录 | 注册 方可回帖
返回
//