学习条件
-
至少一年iOS开发经验
-
调试设备
- 建议至少iPhone 5S(因为从5S开始支持arm64架构)
- 或者至少是iPad Air、iPad mini2等支持arm64架构的设备
-
iOS 9.1完美越狱
- 建议至少iOS 8完美越狱
- 版本也不能太高,要保证能够完美越狱
- 检查手机是否可以越狱:http://jailbreak.25pp.com/ios(已不存在)
iOS Jailbreak(iOS越狱)
什么是iOS Jailbreak?
利用iOS系统的漏洞,获取iOS系统的最高权限(Root),解开之前的各种限制(合法行为)
iOS Jailbreak的优点
-
打造个性化、与众不同的iPhone
- 自由安装各种实用的插件、主题、APP
- 修改系统APP的一些默认行为
-
自由安装非AppSore来源的APP
- “付费APP”秒变“免费APP”(有各种插件)
-
未越狱iPhone安装APP的途径
- AppStore
- 真机调试
- 通过证书打包签名ipa安装
-
灵活管理文件系统,让iPhone可以像U盘那样灵活
-
给开发者提供了逆向工程的环境(学习其他app的开发模式)
iOS Jailbreak的缺点
- 不予保修
- 费电,越狱后的iOS系统会常驻一些进程,耗电速度约提升10%~20%
- 在新的iOS固件版本出来的时候,不能及时地进行更新
- 每个新版本的固件,都会修复上一个版本的越狱漏洞,使越狱失效
- 如果需要保持越狱状态,要等待新的越狱程序发布时,才能升级相应的固件版本
- 不再受iOS系统默认的安全保护,容易被恶意软件攻击,个人隐私有被窃取的风险
- 如果安装了不稳定的插件,容易让系统变得不稳定、变慢,甚至出现“白苹果”等问题
完美越狱和不完美越狱
-
完美越狱
越狱后的iPhone可以正常关机和重启 -
不完美越狱
iPhone一旦关机后再开机时,屏幕就会一直停留在启动画面,也就是“白苹果”状态
或者能正常开机,但已经安装的破解软件都无法正常使用,需要将设备与PC连接后,使用软件进行引导才能使用 -
一般来说,在苹果发布新的iOS固件后,针对该固件的不完美越狱会先发布,随后完美越狱才可能发布
-
一般较新的系统版本,均为不完美越狱
-
越狱方法推荐
PP助手
如何判断是否越狱成功?
-
桌面是否有Cydia
如果有,代表越狱成功 -
工具判断(比如PP助手)
会有文字提示是否越狱
Cydia
-
越狱后的 “App Store”
可以在Cydia中安装各种第三方的软件(插件、补丁、APP) -
作者
Jay Freeman(saurik) -
Cydia安装软件的步骤1
添加软件源(不同软件的软件源可能不同),方式是点击“Cydia”中的软件源,然后点击“编辑”,再点击“添加”,会让输入软件源地址
添加源成功以后,可以看到源里面的软件列表,点击其中一个就可以安装了 -
SpringBoard
有时候通过Cydia安装完插件后,可能会提示重启SpingBoard,SpringBoard就是iOS的桌面
常用软件安装
Apple File Conduit “2”
- Apple File Conduit “2”
- 可以访问整个iOS设备的文件系统
- 类似的补丁还有:afc2、afc2add
- 软件源
AppSync Unified
-
该补丁作用
可以绕过系统验证,随意安装、运行破解的ipa安装包
iFile
-
作用
可以在iPhone上自由访问iOS文件系统
类似的还有Filza File Manager、File Browser -
软件源
http://apt.thebigboss.org/repofiles/cydia (BigBoss源)
PP助手
- 可以利用PP助手自由安装海量APP(免费+付费)
- 软件源
http://apt.25pp.com
Mac必备
-
iFunBox
管理文件系统 -
PP助手
自由安装少量APP
卸载APP
备份APP为ipa安装包(从iOS9开始,不再支持备份APP)
建议的安装顺序
iPhone -> Cydia -> (Apple File Conduit "2" 和 AppSync Unified) -> iFile 和 PP助手
Mac -> iFunBox 和 PP助手
安装包
- 通常情况下,通过Cydia安装的包都是deb格式的,结合软件包管理工具apt
- 通过PP助手安装的包的格式是ipa的
- 如果通过Cydia源安装deb失败,可以先从网上下载deb格式的安装包,然后将deb安装包放到 /var/root/Media/Cydia/AutoInstall,重启手机,Cydia就会自动安装deb
代码判断设备是否越狱
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//通过判断是否存在Cydia.app来判断是否安装越狱,不同的系统路径可能不一样
if ([[NSFileManager defaultManager]fileExistsAtPath:@"/Applications/Cydia.app"])
{
NSLog(@"此设备已越狱");
}
else
{
NSLog(@"此设备未越狱");
}
}
提高工作效率的工具
-
Alfred
便捷搜索
工作流 -
XtraFinder
增强型Finder -
iTerm2
完爆Terminal的命令行工具 -
Go2Shell
从Finder快速定位到命令行工具
Mac远程登录到iPhone
- 我们经常在Mac的终端上,通过敲一些命令行来完成一些操作,iOS和Mac OS X都是基于Darwin(苹果的一个基于Unix的开源系统内核),所以iOS中同样支持终端的命令行操作
在逆向工程中,我们经常会通过命令行来操纵iPhone - 为了能够让Mac终端中的命令能作用在iPhone上,我们得让Mac和iPhone建立连接
通过Mac远程登录到iPhone的方式建立连接
SSH
- Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议
- 使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗
OpenSSH
- 是SSH协议的免费开源实现
- 可以通过OpenSSH的方式让Mac远程登录到iPhone
使用OpenSSH远程登录
- iPhone上通过Cydia安装OpenSSH工具(软件源http://apt.saurik.com)
- OpenSSH的具体使用步骤可以查看Description
- SSH是通过TCP进行通信,所以要确保Mac和iPhone在同一局域网下,比如连接着同一个WiFi
- 在Mac的终端输入
ssh 账户名@服务器主机地址
,服务器主机地址即手机的IP地址,比如输入ssh root@10.1.1.193
来登录 - 初始密码为
alpine
- 在Mac的终端输入
- 登录成功后就可以使用终端命令行操作iPhone
- 退出登录命令是
exit
root、mobile
- iOS下有两个常用账户:root、mobile
- root:最高权限账户,$HOME(用户文件夹)是
/var/root
- mobile:普通权限账户,只能操作一些普通文件,不能操作系统级别的文件,$HOME是
/var/mobile
- root:最高权限账户,$HOME(用户文件夹)是
- 最好修改一下root和mobile用户的登录密码(登录 root 账户后,分别通过 passwd、pwsswd mobile 完成)
SSL、OpenSSL
- 很多人会将SSH、OpenSSH、SSL、OpenSSL搞混
- SSL
- Secure Socket Layer的缩写,是为网络通信提供安全及数据完整性的一种协议,在传输层对网络连接进行加密
- OpenSSL
- SSL的开源实现
- 绝大部分HTTS请求等价于:HTTP + OpenSSL
- OpenSSL的加密就是通过OpenSSL完成的
SSH安全连接
-
SSH协议一共两个版本
- SSH-1
- SSH-2
-
现在用的比较鑫的是SSH-2,客户端和服务端版本要保持一致才能通信
-
查看SSH版本(查看配置文件的Protocol字段)
- 客户端:/etc/ssh/ssh_config
- 服务器:/etc/ssh/sshd_config
SSH的通信过程
-
SSH的通信过程可以分为3大主要阶段
- 建立安全连接
- 客户端认证
- 数据传输
-
建立安全连接的过程中,服务器会提供自己的身份证明
网友评论