切换屏幕
28143阅读 | 39回复

[原创] 剖析iPhone/iPod Touch固件※自己动手从固件中提取文件

[复制链接]
24主题0帖子806人气

级别: 白苹果

帖子
0
经验
632
精华
3
人气
806
发表于 2009-1-31 13:18:27 |浏览量 | |阅读模式
前几天误删了Maps.app,又不想重刷或发帖求助。。。。。。
查阅了一些研究iPhone破解的网站,终于有办法直接从iPhone/iPod Touch的固件(IPSW文件)中提取文件了

需要准备的工具:
Cygwin(编译和运行一些Linux/Unix工具需要用到,点此官方下载连接
vfdecrypt(解密dmg的工具,点此进入官方下载页
iPhone/iPod固件(尽量对应你机器的版本,虽然有时候用别的产品的固件没什么问题,但是后果自负。。)
WinRAR(差点忘记最重要的东西了。。。用来把IPSW文件解压)
PowerISO(用于打开解密后的dmg文件,点此打开官网下载页 注册机在附件中附上)

演示用的机器:iPod Touch一代8G(其实这跟机器没什么关系。。。我们大部分操作都在Windows XP下完成。。其他iPhone、iPhone 3G、iPod Touch二代的基本没什么区别)
演示用的固件:iPod1,1_2.2.1_5H11_Restore.ipsw(时髦吧?哈哈,最新的2.2.1)


开始前需要知道的东西:
1.IPSW文件使用的是ZIP压缩算法,直接用WinRAR或其他可以解ZIP的工具打开即可
2.以iPod Touch一代2.2.1(5H11)固件为例,打开之后你会发现有如下内容
.fseventsd(目录)
Firmware(目录)

018-4437-16.dmg
018-4443-16.dmg
018-4490-10.dmg
kernelcache.release.s5l8900x
Restore.plist
这里解释一下,Firmware目录存放的是一些核心文件,个人猜测就是基带什么的还有一些引导程序。
那三个dmg文件就是iPhone/iPod Touch的系统镜像了(各自具体用途往下看)
注意这个kernelcache.release.s5l8900x,iPhone、iPhone 3G、iPod Touch一代末尾都是“s5l8900x”,只有iPod Touch二代是“s5l8720x”。查阅iPhone Dev Team的Wiki得知,前者的固件里的加密文件被黑客们称为“Apple 8900”文件,目前解密8900的技术已经很成熟了(其实我们用QuickPwn的时候已经包含了很多解密8900文件的过程了,对于PwnageTool这类对固件大动手术的工具来说更不在话下)“s5l8900x”表示的就是iPhone、iPhone 3G、iPod Touch一代的硬件平台。iPod Touch二代之所以还没被Jailbroken大概就是因为这个区别。貌似跑题了
Restore.plist这个文件负责告诉机器哪个文件是干什么的,包含着许多有用的信息。我们用记事本打开它。
注意其中有这么一段:<key>RestoreRamDisks</key>
<dict>
        <key>Update</key>
        <string>018-4437-16.dmg</string>
        <key>User</key>
        <string>018-4443-16.dmg</string>
</dict>意思是说使用iTunes的“升级”时实际上是让机器启动时加载018-4437-16.dmg这个镜像,而用“恢复”刷固件时启动的是018-4443-16.dmg。这个很重要,如果要自己提取decrypt key的话,就要从User段下面指定的镜像,也就是018-4443-16.dmg里提取。
继续往下,会看到有这么一段:<key>SystemRestoreImages</key>
<dict>
        <key>User</key>
        <string>018-4490-10.dmg</string>
</dict>这一段就是说,刷新固件时往机器上写入的就是018-4490-10.dmg这个镜像,一般也是占整个固件体积最多的文件,因为里面包含iPhone/iPod Touch的文件系统,也就是说,我们要提取文件,就得对这个镜像开刀。
可能有人会问,为什么要特别说明Restore.plist里的内容呢?回答是,因为这三个dmg镜像的文件名不是固定的,不同版本的文件名不一样,所以要自己看Restore.plist来了解每一个文件是干什么的
3.关于固件里各文件的加密算法
解开IPSW后得到的所有文件,除了最大那个(也就是包含文件系统的dmg),其他文件包括两个24MB的dmg都是所谓的“Apple 8900”文件,可以通过在Cygwin下操作OpenSSL来实现加密/解密。这个加密/解密过程需要用到两个密匙:KEY和IV。获取这两个密匙的途径比较多,一是在TheiPhoneWiki.com上的这篇文章VFDecrypt Keys里查找,另一个途径是把QuickPwn.exe用WinRAR解压以后在Firmware目录下对应版本的文件夹里的Info.plist中所记录的KEY和IV。这两个途径都是建立在前人已经破解得到密匙的情况上的,我记得有一个讨论iPhone破解的Wiki介绍过利用你手上的iPhone/iPod Touch来截获密匙,不过那个方法很复杂。。是非常非常的复杂。。。。
至于文件系统dmg,使用的是另外一种加密算法。解密的方法相对简单很多,只需要用vfdecrypt这个工具,还有对应的decrypt key。decrypt key的获取也相对简单很多,可以查询上面那篇Wiki文章,也可以自己用自己在Cygwin中操作OpenSSL用KEY解密那个User段下的dmg文件来获取decrypt key。
注意,不同版本的固件,这三个密匙是不一样的。不过只要对应好版本号后面组字符(5H11)不用区分设备(就好像iPhone、iPhone 3G、iPod Touch一代的2.2.1都是5H11,所以他们的密匙是一样的。但是Touch二代是5H11a,所以不同)

好啦。。。。准备了哦。。。。ACTION!

第一步:安装Cygwin
由于我们的重要嘉宾——vfdecrypt是来自Linux的好家伙,所以单独运行是不行的,还需要用到Cygwin里的一些运行库。。。

提示:待会儿我尝试一下能不能单独提取需要的库以脱离这个庞大的cygwin。。
不过如果想自己提取decrypt key的话是需要在Cygwin里操作的,具体步骤在本教程后面还有教程
引用www.cygwin.cn的安装教程
1.双击setup.exe

2.按照安装提示“下一步”
3.选择从“互联网”安装:

4.选择安装的路径,一般是C:\Cygwin,选择本地临时目录,用于存放下载的软件;选择您连接互联网的方式,一般选“直接连接”就可以了。
5.选择下载源,您可以在下载列表里选择:http://www.cygwin.cn 或者,直接在URL里输入http://www.cygwin.cn/pub/

6.根据安装提示,选择需要安装的软件包,完成安装。
然后把vfdecrypt.exe放到C:\Cygwin\bin中

第二步:解压IPSW
这个不用我说了吧。。。用WinRAR打开你的固件,把018-4443-16.dmg(User段的文件)和018-4490-10.dmg(文件系统镜像)解压到C:\Cygwin\var下

第三步:解密018-4443-16.dmg获取decrypt key(通过Wiki取得decrypt key的可以跳过这一步)
依次点击开始--所有程序--Cygwin--MinTTY打开Cygwin的命令行窗口,敲命令。(粗体表示的是根据情况可能不一样的)
cd /var
光标被切换到/var目录中
echo `hexdump -s12 -n4 -e '"%d\n"' 018-4443-16.dmg` / 512 | bc
稍等片刻会显示一个数字,记下它。在这里我们的到49664。继续
dd if=018-4443-16.dmg of=018-4443-16.stripped.dmg bs=512 skip=4 count=49664 conv=sync
注意count=后面粗体所示的数字是刚才那一步得到的数字。这时我们会得到一个018-4443-16.stripped.dmg文件
openssl enc -d -in 018-4443-16.stripped.dmg -out ramdisk-018-4443-16.dmg  -aes-128-cbc -K DA010F69B0E2034B4CE7B7C90B63BAD5 -iv 0
OpenSSL会报错,这正常,因为还没有能完全解密这个文件的,不过我们的目的已经达成——我们的到了ramdisk-018-4443-16.dmg这个文件。注意-K参数后面跟着的KEY,在文章开头已经提到过,可以通过Wiki获取,也可以在QuickPwn的文件里找到,甚至自己用底层的方法从iPhone的刷机过程中截获。IV密匙这里为0,因为不管要不要这个密匙OpenSSL都无法完全解密这个镜像,但是我们都能从中提取decrypt key
strings ramdisk-018-4443-16.dmg | egrep "^[0-9a-fA-F]{72}$"
重头戏来了。如果前面的步骤没有出错的话,稍等片刻屏幕上就会出现decrypt key
对于2.2.1(5H11)我们得到的是ee4eeeb62240c1378c739696dff9fef2c88834e98877f55a29c147e7d5b137967197392a记住他!下一步解密文件系统镜像需要!

第四步:解密018-4490-10.dmg!!!!
好吧,我们已经得到decrypt key了。。。别急着庆祝,好戏在后头
在Cygwin中敲入命令:
vfdecrypt -i 018-4490-10.dmg -o 018-4490-10-decrypted.dmg -k ee4eeeb62240c1378c739696dff9fef2c88834e98877f55a29c147e7d5b137967197392a
稍等片刻!待光标重新出现后,看看你的C:\Cygwin\var吧,是不是有一个比018-4490-10.dmg小几K的018-4490-10-decrypted.dmg?就是它了!
用PowerISO打开,接下来怎么做不用我说了吧?



附:关于越狱
前几天看到帖子http://www.weiphone.com/thread-259000-1-1.html后,研究了一下QuickPwn,发现Info.plist里只是记录了固件的Hash值和IPSW里各8900文件的KEY和IV。知道怎么做了吧?

[ 本帖最后由 chenxingyu 于 2009-1-31 13:19 编辑 ]

PowerISOKeygen.rar

11 KB , 下载次数: 0 , PowerISO注册机

PowerISO注册机

libs_for_vfdecrypt.rar

1.09 MB , 下载次数: 0

评分6

评分次数6

经验+2 人气+32

收起
kisshzj + 5 2014-6-12 20:10第一个命令那么多符号?好象不行啊
platfmsszzz + 5 2013-9-18 20:04很好!但是提示找不到hexdump?
shk1104 + 1 2013-7-17 18:28威锋有你更精彩:)
wanghao6180 + 3 2010-9-24 20:07刚好需要就来了!!
billee + 3 2009-7-12 11:08威锋有你更精彩
sweetpig + 2 + 15 2009-6-26 17:40能否 搞定 1代的彩信??
24主题0帖子806人气

级别: 白苹果

帖子
0
经验
632
精华
3
人气
806
 楼主| 发表于 2009-1-31 14:40:08 |
沉得好快。。。。。自己坐下沙发。。。不知这个沙发会不会变成楼主。。。。如果真的这么RP那就看看有没有能变楼主的板凳。。
43主题1016帖子169人气

级别: 金苹果

每当听见 她或他说  

帖子
1016
经验
1693
精华
人气
169
发表于 2009-1-31 15:28:33 |
好贴,顶个
13主题21帖子39人气

级别: 白苹果

帖子
21
经验
943
精华
人气
39
发表于 2009-1-31 15:36:30 |
传说中的硬刷?
24主题0帖子806人气

级别: 白苹果

帖子
0
经验
632
精华
3
人气
806
 楼主| 发表于 2009-1-31 19:45:11 |
可怜啊。。。写了这么行苦这么快就摔到第三页。
47主题38帖子279人气

级别: 白苹果

帖子
38
经验
1050
精华
人气
279
发表于 2009-1-31 19:56:08 |
试试看 我只想把其中有些中文字体提取出来
2主题0帖子206人气

级别: 青苹果

帖子
0
经验
115
精华
人气
206
发表于 2009-2-16 14:51:56 |
钦佩楼主的研究精神,技术牛贴!
scofield2009
0主题1帖子0人气

级别: 禁止发言

帖子
1
经验
3
精华
人气
0
发表于 2009-4-9 16:43:28 |
提示: 作者被禁止或删除 内容自动屏蔽
5主题0帖子0人气

级别: 小苹果

帖子
0
经验
30
精华
人气
0
发表于 2009-4-9 16:45:12 |
楼主想干吗?
scofield2009
0主题1帖子0人气

级别: 禁止发言

帖子
1
经验
3
精华
人气
0
发表于 2009-4-9 17:07:59 |
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则