手把手教你使用 PwnageTool 1.1
鸣谢:
WeFit 开发组:提供详尽的 1.1.4 系统下 WeFIT 的手动安装说明,使我能够在很短的时间内完成 1.1+(集成 WeFIT 输入法,但你可以选择不安装)。
mars2fobos:整理了 1.1.4 系统的官方简体中文语言包,使我能够完美集成(原贴见:http://www.weiphone.com/thread-94023-1-1.html)。
glider:提供进行文件对比分析的 UNIX 差分比较脚本。
The iPhone Dev Team 以及其他所有为 iPhone/iPod touch 开发的人员。
---------------------------------------------
PwnageTool 是 The iPhone Dev Team 发布的终极破解工具的 Mac 版本(Windows 版本为 WinPwn,由 http://www.winpwn.com 发布)。下面以本人汉化的 1.1+ 版本为例,分三部分详细介绍 PwnageTool 的使用方法、破解原理和软件结构及高级应用。
已知问题:
1)WeFIT 需要使用终端运行以下指令(大小写敏感),才能保存设置内容:
chown -R mobile:mobile /private/var/mobile/Library/FIT
2)恢复过 2.0 的 iPhone 再恢复 1.1.4 自定固件后,不能将 1.1.4 下的同步备份恢复回 iPhone,原因在查。
3)1.1.4 版本固件中虽然有修改 root 分区大小到字段,但还没有应用成功(1.1.4 版本默认为 300MB,2.0 版本默认为 500MB)。
PwnageTool 1.1 需要的软硬件环境:
Mac 电脑:运行 10.4.x 或 10.5.x
iPhone:运行 1.1.3 以上固件(iPwner 要求,建议 1.1.3 以下的用户先恢复官方 1.1.4 固件)
PwnageTool 1.1+ 多语言版(简体中文、繁体中文、日文):PwnageTool 1.1+ 多语言版 迅雷专用高速下载(24.0MB)
本教程 PDF 版本下载:【图文教程】手把手教你使用 PwnageTool 1.1 迅雷专用高速下载(2.5MB)
一、PwnageTool 的使用方法
本文将以使用 PwnageTool 1.1+ 破解 1.1.4 固件为例(如果您破解 2.0 固件,请在对应位置替换成 2.0),手把手教您 PwnageTool 的使用方法。
所谓 1.1+ 是为了区别原始的 1.1 版本,其区别是:
进行了完整的简体中文化(2008年4月19日10:30重新上传);
对于 1.1.4 版本进行了 UIKit 修改以使调用隐藏的键盘;
添加了官方简体中文语言包(1.1.4,包含隐藏键盘调用 Patch)、WeFIT 输入法(1.1.4 和 2.0)。这些添加的软件包 Bundle 由用户选择安装。
1、选取确认要破解的固件及版本
首先下载并运行 PwnageTool 1.1+(下图)。
PwnageTool 的界面非常简洁(简体中文版——1.1+ 调整了按钮位置并添加了按钮帮助提示),四个按钮的作用分别是:
“浏览 .ipsw 文件”——选取官方固件文件。这是运行该程序必须进行的第一步。也就是说,下面的操作是因固件不同而不同的。在打开的对话框中,选择已下载到本地的 .ipsw 固件文件。
“iPwner”——解放 iPhone,即修改 Bootloader 以使 iPhone 绕过官方固件签名验证,这样才能使用 iTunes 恢复非官方的固件。
“IPSW 生成器”——根据所选的官方固件生成自定固件,用于使用 iTunes 进行恢复。自定固件生成前,程序会根据设定调用所需要的组件。
首先,点按“浏览 .ipsw 文件”,在弹出的打开对话框选取已下载的官方的 1.1.4 固件文件(下图)。
点按“打开”,PwnageTool 将验证所选固件是否可用,如果可用,则出现如下显示(下图)。
2、修改 iPhone
PwnageTool 通过 iPwner 修改 iPhone。现在准备运行 iPwner,解放你的 iPhone(已经运行过 iPwner 的话,可以忽略这一步,第一次使用 PwnageTool 或 WinPWN 破解不能省略)。
确认 iPhone 已经连接到电脑,使 iPhone 进入恢复模式(这里不能使用 DFU 模式。建议使用 ZiPhone 等软件操作,避免长按 Power 和 Home 按钮造成 iPhone 损坏)(下图)。
如果不用软件使 iPhone 进入恢复模式,需要按住 Power 按钮,出现“关机”提示时,滑动滑块关机,然后按住 Home 按钮后按住 Power 按钮,当出现启动徽标后,松开 Power 按钮,继续按住 Home 按钮直至出现恢复徽标。
点按“iPwner”,直至出现下面提示(下图),等待 iPhone 自动重启(这时点按下图“好”按钮无妨)。
特别提示:为保证 iPwner 正常运行,需要运行前连接 iPhone、使其进入恢复模式(非 DFU 模式)、退出 iTunes。否则你将看到以下某个画面,并且 iPwner 不一定成功。
没有连接 iPhone:
iTunes 还在运行:
iPhone 没有进入恢复模式:
iPhone 处于 DFU 模式:
特别提示:
如果 iPhone 处于 DFU 模式,只有通过 iTunes 进行恢复才能跳出,否则即使强制关机,可能也不能自动进入普通恢复模式。
另外,普通恢复模式闲置 15 分钟后,iPhone 会自动重新启动到正常模式。
3、生成自定固件
点按“IPSW 生成器”按钮,会进入设置画面(下图):
“基本功能”:
激活电话——基本中的基本功能,只有激活了才可以使用。激活是跳过苹果的激活过程,使 iPhone 处于已激活状态,以便使用其各项功能。
更新 Baseband——只有您想刷新 Baseband 时才选择,因为这将擦除 iPhone 现有的 Baseband,包括解锁信息和各种修改。已经软件解锁的或除非必要,建议不要选。
刷写 Bootloader——这一步将刷写 Bootloader 以使 iPhone 允许自定固件安装到 Baseband 并且 iPhone 认为是安全的。这是下面“更新 Bootloader”、“解锁 Baseband”所必须的。
更新 Bootloader——将现有的 Bootloader 更新到所选版本。
解锁 Baseband——软件解锁以使 iPhone 可以使用任意 SIM 卡。
自动删除 BootNerter.app——自定固件恢复后,当 BootNeuter.app 执行完所有操作后,删除 BootNeuter.app,在主屏幕将看不到那只靴子的图标。
“自定安装”:
这里列出了 PwnageTool/InternalPackages 内可用于 1.1.4 固件的软件 Bundle 的列表,您可以选择安装。
“自定徽标”:
简单说就是自定启动徽标和恢复徽标,如果都不选,则保留当前的设置。如果选择 PwnageTool 内建的,则是菠萝和漫画。您可以点“浏览…”来选择自己制作或收藏的启动和恢复徽标。
全部设定完成后点按“好”。
第一次运行 PwnageTool 情况下,如果在“基本功能”中选择了“更新 Baseband”,将出现以下提示,让你选择 3.9 和 4.6 的 Bootloader 映像文件。点击“浏览…”来选择已经存储在本地的 Bootloader 文件。按照 PwnageTool 缺省方式,简体中文版也没有捆绑这两个固件文件,需要的可另行下载(见附件)。
点击“浏览…”后,在打开对话框中选取相应的 Bootloader 文件。
选取后会出现“OK”表示文件正确。
完成后点按“好”,将出现存储对话框让您选择自定固件的存储位置。
如果在同一位置已经有同名的自定固件文件,则会出现是否替换的提示,根据情况自行选择替换或选用其它名称或位置。
这样 PwnageTool 会开始整个自定固件的制作。在中途会出现要求输入您的密码,这里输入当前用户的登录密码。
全部完成后,PwnageTool 会出现下面的画面(下图)。至此,自定固件即宣告制作完成。剩下的就是使用 iTunes 恢复刚刚制作的自定固件。
如果制作自定固件途中哪一个环节出现“失败”的显示,则不能最终生成固件,需要具体查找原因。
上面窗口中显示的最后一行为 PwnageTool 1.1+ 版本简体中文化添加的。
二、PwnageTool 的破解原理和软件结构(基础)
PwnageTool 是第一个深入 iPhone/iPod touch(以下仅称 iPhone)系统底层进行破解的工具。在 Mac 版破解工具中,PwnageTool 从根本上改变了 iPhone 破解方式,尤其该程序进化到 1.1 版后,更让我们寄予厚望,因为,PwnageTool 1.1 已经描绘出 The iPhone Dev Team 的思路,归纳起来,PwnageTool 1.1 具有以下几大特性:
1、底层破解(Pwning):通过修改苹果官方 Bootloader 来绕过数字签名检查,从而使 iPhone 允许使用非官方固件(就是我们说的自定固件)进行恢复。在 PwnageTool 中,这一功能由 iPwner 实现。
2、自定固件(Custom Firmware):PwnageTool 能够帮助您从解压官方固件,到破解固件内的磁盘映像、修改其中的文件实现激活-越狱-解锁、安装程序,直至替换启动徽标或恢复徽标,最后再打包压缩成 .ipsw 文件(官方固件格式,IPhone SoftWare 的缩写),以便由 iTunes 进行恢复。
3、扩展功能:用户只需按规定格式制作需要安装的程序的 bundle(.bundle 为后缀的文件夹,后面会详细说明)并添加到 PwnageTool 程序包中的 InternalPackages 文件夹,即可在制作自定固件时选择安装。如果开发中的 IPSWTool 也采用相同的架构,那么分享软件的 Bundle 将会很快流行。
先认识一下 PwnageTool 1.1 的程序结构:
从上图中可以看到,FirmwareBundles 列出了该程序对应的各种固件。InternalPackages 文件夹则列出了程序要安装的软件包 Bundle。我们要关注的是 InternalPackages 文件夹,顺便介绍 FirmwareBundles 文件夹。
关于 Bundle 的具体制作方法以及与 FirmwareBundles 文件夹中相应固件的关联性,本文也将在第三部分——高级应用中以 1.1.4 为例展开说明。
三、PwnageTool 高级应用(进阶)
PwnageTool 提供了自己添加程序 Bundle 的可能性,1.1 版本更是将这个可能性以一种简单直观的形式呈现出来。说简单直观是相对的,只有充分了解 PwnageTool 的破解原理和软件结构的基础上,才能活用这一超级工具。
因此,如果你不小心跳过了本文的第二部分,那么在继续研究之前,请先返回阅读。
1、Bundle 的结构及创建指南
要想创建一个或多个软件的 Bundle,首先需要明确该软件是独立运行的还是系统级的。所谓独立运行的(如 Hardware Info)就是只要有了软件的程序包,就可以在 iPhone 上正常运行;所谓系统级的(如 WeFIT)就是需要在 iPhone 的系统上除 Applications 目录之外的其它地方安装附带的程序包、文件夹或文件。
对于可能用于共享的 Bundle,最好是每个软件单独建立一个 Bundle,这样在 PwnageTool 生成固件文件时,可以由其他用户选择是否安装(自用的情况下可以将多个软件打包制作一个 Bundle)。
所谓 Bundle,实际上是一个以 .bundle 为后缀的文件夹,文件夹内需要包含一个名称为 info.plist 的 XML 文件和一个对应的名称为 files 文件夹。这里的 info.plist 文件(软件 Bundle 内的)设置了软件的基本信息,用于程序识别和在自定安装窗口的显示;files 文件夹对应程序在 iPhone 系统上的安装位置,也就是说 files 文件夹相当于 iPhone 系统的根目录。
2、创建 Bundle
下面以建立 WeDict 程序的 Bundle 为例,详细解说 Bundle 的制作。
首先在 InternalPackages 文件夹内新建一个名为 WeDict.bundle 的文件夹,命名后会提示是否添加 .bundle 后缀。
点按“添加”,该文件夹将显示为一个单一文件(下图)。
右键点击 WeDict.bundle,选择“显示包内容”,将打开这个 Bundle。初始的该 Bundle 里面没有内容。首先在里面建立一个名称为 info.plist 的空白文本文件(为方便,最好从已有的 Bundle 中拷贝一个文件来修改)和一个名称为 files 的文件夹(下图)。
1)创建 info.plist 文件内容
右键点击 info.plist 文件,选择打开的程序。我比较习惯使用 BBEdit(如果你安装了开发工具,默认使用“Property List Editor”打开)。
打开后,对文件的内容进行修改(下图)。
这里面,只修改<string>和</string>之间的内容。Name 对应的为 WeDict,显示在自定安装列表的名称栏(下图);Identifier 对应的为程序识别该软件包的识别标识,按照苹果的写法改为 com.weiphone.app.wedict,这里写什么都关系不大,但从软件规范化来说,要使用易于识别和管理的标识;Description 是 Bundle 的说明,显示在自定安装列表的说明栏;SupportedFirmware 对应的是固件版本,确认正确后不需要修改;Commands 对应的是要执行的操作(如设定权限等,此处略);Size 对应的是该 Bundle 要安装的内容的大小,也就是 files 文件夹的大小(这里使用的不是 <string></string>),显示在自定安装列表的大小栏。
后面会讲到如何让 PwnageTool 自动勾选这个 Bundle。
2)创建 files 文件夹内容
双击 files 文件夹,在该文件夹内创建 Applications 和 var 两个子文件夹(这里一般 Applications 文件夹是必须的,但其它文件夹是否需要建立依据程序而定),WeDict 程序包放入 Applications 文件夹,而 var 文件夹内,是为了下载词典文件时,预先建立一个存放目录,以便 WeDict 能够找到安装的词典(貌似 WeDict 没有自己建立这个目录)。具体位置是:var/mobile/Library/weDict。
至此,软件的 Bundle 建立完成。
但是,有些细节问题需要明确。info.plist 基本容易理解,但 Commands 一处 PwnageTool 到底支持哪些指令以及书写格式有待进一步研究,而如何知道要在 files 文件夹里面放什么东西呢?这个问题有点复杂。
目前获得这个信息的方法是:在通过 SFTP 备份的 1.1.4 系统中,查找任何和将要制作 Bundle 的软件有关联的各个文件及安装位置,然后在 files 文件夹内原样照搬过来。PwnageTool 会毫无遗漏地把这些文件安装到 iPhone 上,遇到同名的文件会替换,遇到不存在的文件会添加。
而最稳妥的方法是:软件开发人员能够直接提供制作好的软件的 bundle。
---------------------------------------------
探索更高级的应用:
关于权限:
在特殊情况下,可能存在权限设定问题。如 Installer 在 info.plist 里面的权限设定语句:
<key>Commands</key>
<array>
<dict>
<key>Action</key>
<string>SetPermission</string>
<key>File</key>
<string>Applications/Installer.app/Installer</string>
<key>Permission</key>
<string>+s</string>
</dict>
</array>
关于所有权:
按照 PwnageTool 的帮助文件说明,放入 mobile 文件夹内的文件所有权会自动设定为 mobile,而其它地方的文件所有权归 root。但是实际上可能存在问题:比如 WeFit 的 var/mobile/Library/FIT 文件夹的所有权就没有设定成 mobile,这样使用默认设定以外的设定时,设定不能保存,要解决这一问题,需要在终端(Term-vt100)中运行如下指令:
chown –R mobile:mobile /private/var/mobile/Library/FIT
或重新安装 WeFIT。
关于设定所有权指令,网上有介绍使用以下指令的,但在 WeFIT 的情况下不适用,原因不明。
<key>Commands</key>
<array>
<dict>
<key>Action</key>
<string>SetOwner</string>
<key>File</key>
<string>var/mobile/Library/FIT</string>
<key>Owner</key>
<string>mobile:mobile</string>
</dict>
</array>
关于使 PwnageTool 自动勾选自定的 Bundle:
上面制作的 Bundle 在生成自定固件时,默认是不勾选的。要让 PwnageTool 自动勾选上,那就要修改 FirmwareBundles 文件夹中对应的破解固件文件包内的 info.plist。注意这里的 info.plist 文件与 Bundle 内的同名文件不能混淆。
打开 FirmwareBundles 文件夹内的 1.1.4 固件破解包内的 info.plist 文件,在文件的下方添加一行 <string>com.weiphone.app.wedict</string>(下图)。
这里 <string></string>之间的内容,就是前面我们制作 Bundle 时使用的标识内容。
这一步事实上意义不大,写在这里只为探讨 PwnageTool 的安装原理,不留死角。
本文中如有错误之处,请不吝赐教。谢谢!
想要更多iphone教程,iphone主题,iphone应用程序,iphone破解改中文等
鸣谢:
WeFit 开发组:提供详尽的 1.1.4 系统下 WeFIT 的手动安装说明,使我能够在很短的时间内完成 1.1+(集成 WeFIT 输入法,但你可以选择不安装)。
mars2fobos:整理了 1.1.4 系统的官方简体中文语言包,使我能够完美集成(原贴见:http://www.weiphone.com/thread-94023-1-1.html)。
glider:提供进行文件对比分析的 UNIX 差分比较脚本。
The iPhone Dev Team 以及其他所有为 iPhone/iPod touch 开发的人员。
---------------------------------------------
PwnageTool 是 The iPhone Dev Team 发布的终极破解工具的 Mac 版本(Windows 版本为 WinPwn,由 http://www.winpwn.com 发布)。下面以本人汉化的 1.1+ 版本为例,分三部分详细介绍 PwnageTool 的使用方法、破解原理和软件结构及高级应用。
已知问题:
1)WeFIT 需要使用终端运行以下指令(大小写敏感),才能保存设置内容:
chown -R mobile:mobile /private/var/mobile/Library/FIT
2)恢复过 2.0 的 iPhone 再恢复 1.1.4 自定固件后,不能将 1.1.4 下的同步备份恢复回 iPhone,原因在查。
3)1.1.4 版本固件中虽然有修改 root 分区大小到字段,但还没有应用成功(1.1.4 版本默认为 300MB,2.0 版本默认为 500MB)。
PwnageTool 1.1 需要的软硬件环境:
Mac 电脑:运行 10.4.x 或 10.5.x
iPhone:运行 1.1.3 以上固件(iPwner 要求,建议 1.1.3 以下的用户先恢复官方 1.1.4 固件)
PwnageTool 1.1+ 多语言版(简体中文、繁体中文、日文):PwnageTool 1.1+ 多语言版 迅雷专用高速下载(24.0MB)
本教程 PDF 版本下载:【图文教程】手把手教你使用 PwnageTool 1.1 迅雷专用高速下载(2.5MB)
一、PwnageTool 的使用方法
本文将以使用 PwnageTool 1.1+ 破解 1.1.4 固件为例(如果您破解 2.0 固件,请在对应位置替换成 2.0),手把手教您 PwnageTool 的使用方法。
所谓 1.1+ 是为了区别原始的 1.1 版本,其区别是:
进行了完整的简体中文化(2008年4月19日10:30重新上传);
对于 1.1.4 版本进行了 UIKit 修改以使调用隐藏的键盘;
添加了官方简体中文语言包(1.1.4,包含隐藏键盘调用 Patch)、WeFIT 输入法(1.1.4 和 2.0)。这些添加的软件包 Bundle 由用户选择安装。
1、选取确认要破解的固件及版本
首先下载并运行 PwnageTool 1.1+(下图)。
PwnageTool 的界面非常简洁(简体中文版——1.1+ 调整了按钮位置并添加了按钮帮助提示),四个按钮的作用分别是:
“浏览 .ipsw 文件”——选取官方固件文件。这是运行该程序必须进行的第一步。也就是说,下面的操作是因固件不同而不同的。在打开的对话框中,选择已下载到本地的 .ipsw 固件文件。
“iPwner”——解放 iPhone,即修改 Bootloader 以使 iPhone 绕过官方固件签名验证,这样才能使用 iTunes 恢复非官方的固件。
“IPSW 生成器”——根据所选的官方固件生成自定固件,用于使用 iTunes 进行恢复。自定固件生成前,程序会根据设定调用所需要的组件。
首先,点按“浏览 .ipsw 文件”,在弹出的打开对话框选取已下载的官方的 1.1.4 固件文件(下图)。
点按“打开”,PwnageTool 将验证所选固件是否可用,如果可用,则出现如下显示(下图)。
2、修改 iPhone
PwnageTool 通过 iPwner 修改 iPhone。现在准备运行 iPwner,解放你的 iPhone(已经运行过 iPwner 的话,可以忽略这一步,第一次使用 PwnageTool 或 WinPWN 破解不能省略)。
确认 iPhone 已经连接到电脑,使 iPhone 进入恢复模式(这里不能使用 DFU 模式。建议使用 ZiPhone 等软件操作,避免长按 Power 和 Home 按钮造成 iPhone 损坏)(下图)。
如果不用软件使 iPhone 进入恢复模式,需要按住 Power 按钮,出现“关机”提示时,滑动滑块关机,然后按住 Home 按钮后按住 Power 按钮,当出现启动徽标后,松开 Power 按钮,继续按住 Home 按钮直至出现恢复徽标。
点按“iPwner”,直至出现下面提示(下图),等待 iPhone 自动重启(这时点按下图“好”按钮无妨)。
特别提示:为保证 iPwner 正常运行,需要运行前连接 iPhone、使其进入恢复模式(非 DFU 模式)、退出 iTunes。否则你将看到以下某个画面,并且 iPwner 不一定成功。
没有连接 iPhone:
iTunes 还在运行:
iPhone 没有进入恢复模式:
iPhone 处于 DFU 模式:
特别提示:
如果 iPhone 处于 DFU 模式,只有通过 iTunes 进行恢复才能跳出,否则即使强制关机,可能也不能自动进入普通恢复模式。
另外,普通恢复模式闲置 15 分钟后,iPhone 会自动重新启动到正常模式。
3、生成自定固件
点按“IPSW 生成器”按钮,会进入设置画面(下图):
“基本功能”:
激活电话——基本中的基本功能,只有激活了才可以使用。激活是跳过苹果的激活过程,使 iPhone 处于已激活状态,以便使用其各项功能。
更新 Baseband——只有您想刷新 Baseband 时才选择,因为这将擦除 iPhone 现有的 Baseband,包括解锁信息和各种修改。已经软件解锁的或除非必要,建议不要选。
刷写 Bootloader——这一步将刷写 Bootloader 以使 iPhone 允许自定固件安装到 Baseband 并且 iPhone 认为是安全的。这是下面“更新 Bootloader”、“解锁 Baseband”所必须的。
更新 Bootloader——将现有的 Bootloader 更新到所选版本。
解锁 Baseband——软件解锁以使 iPhone 可以使用任意 SIM 卡。
自动删除 BootNerter.app——自定固件恢复后,当 BootNeuter.app 执行完所有操作后,删除 BootNeuter.app,在主屏幕将看不到那只靴子的图标。
“自定安装”:
这里列出了 PwnageTool/InternalPackages 内可用于 1.1.4 固件的软件 Bundle 的列表,您可以选择安装。
“自定徽标”:
简单说就是自定启动徽标和恢复徽标,如果都不选,则保留当前的设置。如果选择 PwnageTool 内建的,则是菠萝和漫画。您可以点“浏览…”来选择自己制作或收藏的启动和恢复徽标。
全部设定完成后点按“好”。
第一次运行 PwnageTool 情况下,如果在“基本功能”中选择了“更新 Baseband”,将出现以下提示,让你选择 3.9 和 4.6 的 Bootloader 映像文件。点击“浏览…”来选择已经存储在本地的 Bootloader 文件。按照 PwnageTool 缺省方式,简体中文版也没有捆绑这两个固件文件,需要的可另行下载(见附件)。
点击“浏览…”后,在打开对话框中选取相应的 Bootloader 文件。
选取后会出现“OK”表示文件正确。
完成后点按“好”,将出现存储对话框让您选择自定固件的存储位置。
如果在同一位置已经有同名的自定固件文件,则会出现是否替换的提示,根据情况自行选择替换或选用其它名称或位置。
这样 PwnageTool 会开始整个自定固件的制作。在中途会出现要求输入您的密码,这里输入当前用户的登录密码。
全部完成后,PwnageTool 会出现下面的画面(下图)。至此,自定固件即宣告制作完成。剩下的就是使用 iTunes 恢复刚刚制作的自定固件。
如果制作自定固件途中哪一个环节出现“失败”的显示,则不能最终生成固件,需要具体查找原因。
上面窗口中显示的最后一行为 PwnageTool 1.1+ 版本简体中文化添加的。
二、PwnageTool 的破解原理和软件结构(基础)
PwnageTool 是第一个深入 iPhone/iPod touch(以下仅称 iPhone)系统底层进行破解的工具。在 Mac 版破解工具中,PwnageTool 从根本上改变了 iPhone 破解方式,尤其该程序进化到 1.1 版后,更让我们寄予厚望,因为,PwnageTool 1.1 已经描绘出 The iPhone Dev Team 的思路,归纳起来,PwnageTool 1.1 具有以下几大特性:
1、底层破解(Pwning):通过修改苹果官方 Bootloader 来绕过数字签名检查,从而使 iPhone 允许使用非官方固件(就是我们说的自定固件)进行恢复。在 PwnageTool 中,这一功能由 iPwner 实现。
2、自定固件(Custom Firmware):PwnageTool 能够帮助您从解压官方固件,到破解固件内的磁盘映像、修改其中的文件实现激活-越狱-解锁、安装程序,直至替换启动徽标或恢复徽标,最后再打包压缩成 .ipsw 文件(官方固件格式,IPhone SoftWare 的缩写),以便由 iTunes 进行恢复。
3、扩展功能:用户只需按规定格式制作需要安装的程序的 bundle(.bundle 为后缀的文件夹,后面会详细说明)并添加到 PwnageTool 程序包中的 InternalPackages 文件夹,即可在制作自定固件时选择安装。如果开发中的 IPSWTool 也采用相同的架构,那么分享软件的 Bundle 将会很快流行。
先认识一下 PwnageTool 1.1 的程序结构:
从上图中可以看到,FirmwareBundles 列出了该程序对应的各种固件。InternalPackages 文件夹则列出了程序要安装的软件包 Bundle。我们要关注的是 InternalPackages 文件夹,顺便介绍 FirmwareBundles 文件夹。
关于 Bundle 的具体制作方法以及与 FirmwareBundles 文件夹中相应固件的关联性,本文也将在第三部分——高级应用中以 1.1.4 为例展开说明。
三、PwnageTool 高级应用(进阶)
PwnageTool 提供了自己添加程序 Bundle 的可能性,1.1 版本更是将这个可能性以一种简单直观的形式呈现出来。说简单直观是相对的,只有充分了解 PwnageTool 的破解原理和软件结构的基础上,才能活用这一超级工具。
因此,如果你不小心跳过了本文的第二部分,那么在继续研究之前,请先返回阅读。
1、Bundle 的结构及创建指南
要想创建一个或多个软件的 Bundle,首先需要明确该软件是独立运行的还是系统级的。所谓独立运行的(如 Hardware Info)就是只要有了软件的程序包,就可以在 iPhone 上正常运行;所谓系统级的(如 WeFIT)就是需要在 iPhone 的系统上除 Applications 目录之外的其它地方安装附带的程序包、文件夹或文件。
对于可能用于共享的 Bundle,最好是每个软件单独建立一个 Bundle,这样在 PwnageTool 生成固件文件时,可以由其他用户选择是否安装(自用的情况下可以将多个软件打包制作一个 Bundle)。
所谓 Bundle,实际上是一个以 .bundle 为后缀的文件夹,文件夹内需要包含一个名称为 info.plist 的 XML 文件和一个对应的名称为 files 文件夹。这里的 info.plist 文件(软件 Bundle 内的)设置了软件的基本信息,用于程序识别和在自定安装窗口的显示;files 文件夹对应程序在 iPhone 系统上的安装位置,也就是说 files 文件夹相当于 iPhone 系统的根目录。
2、创建 Bundle
下面以建立 WeDict 程序的 Bundle 为例,详细解说 Bundle 的制作。
首先在 InternalPackages 文件夹内新建一个名为 WeDict.bundle 的文件夹,命名后会提示是否添加 .bundle 后缀。
点按“添加”,该文件夹将显示为一个单一文件(下图)。
右键点击 WeDict.bundle,选择“显示包内容”,将打开这个 Bundle。初始的该 Bundle 里面没有内容。首先在里面建立一个名称为 info.plist 的空白文本文件(为方便,最好从已有的 Bundle 中拷贝一个文件来修改)和一个名称为 files 的文件夹(下图)。
1)创建 info.plist 文件内容
右键点击 info.plist 文件,选择打开的程序。我比较习惯使用 BBEdit(如果你安装了开发工具,默认使用“Property List Editor”打开)。
打开后,对文件的内容进行修改(下图)。
这里面,只修改<string>和</string>之间的内容。Name 对应的为 WeDict,显示在自定安装列表的名称栏(下图);Identifier 对应的为程序识别该软件包的识别标识,按照苹果的写法改为 com.weiphone.app.wedict,这里写什么都关系不大,但从软件规范化来说,要使用易于识别和管理的标识;Description 是 Bundle 的说明,显示在自定安装列表的说明栏;SupportedFirmware 对应的是固件版本,确认正确后不需要修改;Commands 对应的是要执行的操作(如设定权限等,此处略);Size 对应的是该 Bundle 要安装的内容的大小,也就是 files 文件夹的大小(这里使用的不是 <string></string>),显示在自定安装列表的大小栏。
后面会讲到如何让 PwnageTool 自动勾选这个 Bundle。
2)创建 files 文件夹内容
双击 files 文件夹,在该文件夹内创建 Applications 和 var 两个子文件夹(这里一般 Applications 文件夹是必须的,但其它文件夹是否需要建立依据程序而定),WeDict 程序包放入 Applications 文件夹,而 var 文件夹内,是为了下载词典文件时,预先建立一个存放目录,以便 WeDict 能够找到安装的词典(貌似 WeDict 没有自己建立这个目录)。具体位置是:var/mobile/Library/weDict。
至此,软件的 Bundle 建立完成。
但是,有些细节问题需要明确。info.plist 基本容易理解,但 Commands 一处 PwnageTool 到底支持哪些指令以及书写格式有待进一步研究,而如何知道要在 files 文件夹里面放什么东西呢?这个问题有点复杂。
目前获得这个信息的方法是:在通过 SFTP 备份的 1.1.4 系统中,查找任何和将要制作 Bundle 的软件有关联的各个文件及安装位置,然后在 files 文件夹内原样照搬过来。PwnageTool 会毫无遗漏地把这些文件安装到 iPhone 上,遇到同名的文件会替换,遇到不存在的文件会添加。
而最稳妥的方法是:软件开发人员能够直接提供制作好的软件的 bundle。
---------------------------------------------
探索更高级的应用:
关于权限:
在特殊情况下,可能存在权限设定问题。如 Installer 在 info.plist 里面的权限设定语句:
<key>Commands</key>
<array>
<dict>
<key>Action</key>
<string>SetPermission</string>
<key>File</key>
<string>Applications/Installer.app/Installer</string>
<key>Permission</key>
<string>+s</string>
</dict>
</array>
关于所有权:
按照 PwnageTool 的帮助文件说明,放入 mobile 文件夹内的文件所有权会自动设定为 mobile,而其它地方的文件所有权归 root。但是实际上可能存在问题:比如 WeFit 的 var/mobile/Library/FIT 文件夹的所有权就没有设定成 mobile,这样使用默认设定以外的设定时,设定不能保存,要解决这一问题,需要在终端(Term-vt100)中运行如下指令:
chown –R mobile:mobile /private/var/mobile/Library/FIT
或重新安装 WeFIT。
关于设定所有权指令,网上有介绍使用以下指令的,但在 WeFIT 的情况下不适用,原因不明。
<key>Commands</key>
<array>
<dict>
<key>Action</key>
<string>SetOwner</string>
<key>File</key>
<string>var/mobile/Library/FIT</string>
<key>Owner</key>
<string>mobile:mobile</string>
</dict>
</array>
关于使 PwnageTool 自动勾选自定的 Bundle:
上面制作的 Bundle 在生成自定固件时,默认是不勾选的。要让 PwnageTool 自动勾选上,那就要修改 FirmwareBundles 文件夹中对应的破解固件文件包内的 info.plist。注意这里的 info.plist 文件与 Bundle 内的同名文件不能混淆。
打开 FirmwareBundles 文件夹内的 1.1.4 固件破解包内的 info.plist 文件,在文件的下方添加一行 <string>com.weiphone.app.wedict</string>(下图)。
这里 <string></string>之间的内容,就是前面我们制作 Bundle 时使用的标识内容。
这一步事实上意义不大,写在这里只为探讨 PwnageTool 的安装原理,不留死角。
本文中如有错误之处,请不吝赐教。谢谢!
想要更多iphone教程,iphone主题,iphone应用程序,iphone破解改中文等