首页
社区
课程
招聘
[原创]计算iOS固件img3文件key的方法
发表于: 2015-3-19 23:45 33796

[原创]计算iOS固件img3文件key的方法

2015-3-19 23:45
33796
typedef struct AppleImg3Header{
  u32 magic;
  u32 size;
  u32 dataSize;
}AppleImg3Header;
typedef struct AppleImg3KBAGHeader {
 
  uint32_t key_modifier;    // key modifier, can be 0 or 1   
  uint32_t key_bits;      // number of bits in the key, can be 128, 192 or 256 (it seems only 128 is supported in current iBoot)
} AppleImg3KBAGHeader;
    //设置加密密钥,使用字符缓冲区  
    int AES_set_encrypt_key(  
            const unsigned char *userKey,  
            const int bits,  
            AES_KEY *key);  
       
    //设置解密密钥,同样适用字符缓冲区  
    int AES_set_decrypt_key(  
            const unsigned char *userKey,  
            const int bits,  
            AES_KEY *key);  
       
    //加解密的接口,通过最后的enc来区分是加密还是解密操作  
    //每次执行AES_cbc_encrypt后,iv(向量)会被更新,  
    //所以需要自己保存它。  
    void AES_cbc_encrypt(  
            const unsigned char *in,  
            unsigned char *out,  
            const unsigned long length,  
            const AES_KEY *key,  
            unsigned char *ivec,  
            const int enc);
typedef struct Unparsed_KBAG_256 {
     uint32_t magic;       // string with bytes flipped ("KBAG" in little endian)
     uint32_t fullSize;    // size of KBAG from beyond that point to the end of it
     uint32_t tagDataSize; // size of KBAG without this 0xC header
     uint32_t cryptState;  // 1 if the key and IV in the KBAG are encrypted with the GID Key
                           // 2 is used with a second KBAG for the S5L8920, use is unknown.
     uint32_t aesType;     // 0x80 = aes128 / 0xc0 = aes192 / 0x100 = aes256
     uint8_t encIV[16];    // IV for the firmware file, encrypted with the GID Key
     uint8_t encKey[32];   // Key for the firmware file, encrypted with the GID Key
} UparsedKbagAes256_t;
uint32_t aes_crypto_cmd(uint32_t encrypt, void *inBuf, void *outBuf, uint32_t size, uint32_t type, void *key, void *iv);

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (26)
雪    币: 0
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
技术贴。。。计算这个有什么用处呢??不明觉厉
2015-3-20 00:34
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
技术贴.   这跟激活设备之类的有关系?!
2015-3-20 03:36
0
雪    币: 133
活跃值: (233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好详细的固件解包分析,赞,
GIDKey被固化在AP中,至于怎么固化的,是烧的熔丝位,还是怎么个方法还不清楚。目前也没看到有直接能读出GIDKey的办法。
而通过AP中的AES硬件加速器可以让GIDKey参与运算,这也是官方使用的方法。
这也说明当我们不知道GIDKey具体值的情况下,不能用PC来算,只能用iOS设备来算key

这样的话用设备本身能计算GIDKey吗,计算出key可以对iboot做什么操作呢,修改引导?
2015-3-20 10:13
0
雪    币: 2443
活跃值: (464)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
谢谢,学习了~

下面是iPhone4S iOS 8.3b2版本的iBoot代码,核心内容在image3_load_decrypt_payload函数中
这个iBoot代码如何获取呢?
2015-3-20 13:15
0
雪    币: 2829
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习学习学习
2015-3-21 23:55
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最喜欢 这样的 帖子了,问题 答案 很详细。
2015-3-22 10:44
0
雪    币: 471
活跃值: (4048)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
nice,水果的秘密世界的窥探
2015-3-22 21:50
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
辛苦楼主 不过对硬件一窍不通。。
2015-3-23 11:19
0
雪    币: 218
活跃值: (674)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
10
解开ipsw固件,找到iboot程序,找到对应版本的IV和KEY,使用xpwntool解密,方法和kernelcache一样。不一样的是iboot是bin格式文件,去掉解密后的img3文件头,开始的部分是异常向量表。例如:
RAM:9FF00000                 B               _arm_reset
RAM:9FF00000 ; END OF FUNCTION CHUNK FOR _arm_reset
RAM:9FF00004 ; ---------------------------------------------------------------------------
RAM:9FF00004                 LDR             PC, =_off_arm_undefined_handler
RAM:9FF00008 ; ---------------------------------------------------------------------------
RAM:9FF00008                 LDR             PC, =_off_arm_syscall_handler
RAM:9FF0000C ; ---------------------------------------------------------------------------
RAM:9FF0000C                 LDR             PC, =_off_arm_prefetch_abort_handler
RAM:9FF00010 ; ---------------------------------------------------------------------------
RAM:9FF00010                 LDR             PC, =_off_arm_data_abort_handler
RAM:9FF00014 ; ---------------------------------------------------------------------------
RAM:9FF00014                 LDR             PC, =_off_arm_reserved_handler
RAM:9FF00018 ; ---------------------------------------------------------------------------
RAM:9FF00018                 LDR             PC, =_off_arm_irq_handler
RAM:9FF0001C ; ---------------------------------------------------------------------------
RAM:9FF0001C                 LDR             PC, =_off_arm_fiq_handler
2015-3-23 22:37
0
雪    币: 11075
活跃值: (17602)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我虽然看不懂,但支持楼主继续深入研究
2015-3-24 10:03
0
雪    币: 2443
活跃值: (464)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
恍然大悟! 谢谢~~
2015-3-24 12:24
0
雪    币: 201
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
mark 一下,感谢楼主的分享,牛
2015-3-31 22:38
0
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
14
很好,赞一个!
我三年前就想写一文章进行这方面介绍的,一直没抽出时间。
2015-4-1 09:24
0
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
15
用处嘛,
掌握这技术后可以自己通过设备解密出AES key和iv,之前iPhone4的iOS还能升级时,我一直是用这个技术,第一时间(网站上往往要几天后才会放出来)在设备上解密AES key和iv。

现在iPhone4不能升级iOS了。

iPhone4S以后如果有公开的bootrom漏洞了,也可用这技术解密出AES key和iv。
2015-4-1 09:28
0
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
16
固件里有,也就是ipsw文件里,zip解压后,去theiphonewiki上找到对应的key和iv就能解密得到。
2015-4-1 09:30
0
雪    币: 2443
活跃值: (464)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
谢谢,已经得到了,IDA修正一下偏移就能正确反汇编了
2015-4-1 22:59
0
雪    币: 265
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
技术牛!
2015-4-9 10:53
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
支持楼主!!
2015-4-10 08:22
0
雪    币: 1
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
哪位大师,能不能降级苹果4S系统,谢谢了,qq1350604296,不会让你白辛苦的,谢谢
2015-5-12 21:22
0
雪    币: 26
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
讲得很详细,但是我有img3,有kbag,还是不能解密啊
2015-5-22 09:02
0
雪    币: 71
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
牛逼的技术贴~~~
2015-5-22 09:16
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
第二个GABK是干什么用的?解密只用了第一个GABK。
2015-7-27 13:50
0
雪    币: 149
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
AppleTV3的固件现在没有任何密钥(例如Root FS key等)可以查的到,请问原因是为什么呢?
是因为到现在为止没有处理器的漏洞可以查询的到还是因为什么其他原因?
2015-10-3 19:48
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
LZ 解个4s 9.0.2的给我看看 :-)))
2015-10-11 02:13
0
游客
登录 | 注册 方可回帖
返回
//