一、越狱
在一切开始之前,你需要准备一台完美越狱的iPhone,关于如何越狱这里就不多说了,在这里简单说明几点
- 越狱是合法的:本质上是利用iOS的系统漏洞来获取iOS的最高操作权限
- 完美越狱:越狱后iPhone可以正常开关机、正常使用,不会出现白苹果现象
- Cydia:越狱后的iPhone会自动安装Cydia,因此你可以通过判断是否安装了Cydia来判断该iPhone是否越狱
- 通过Cydia可以安装各种插件(一般为.deb格式)、补丁、APP,如果通过Cydia找不到你需要的插件,你可以去网上下载相应插件,然后通过Cydia的自动安装目录来安装,即直接将下载的插件拖到自动安装目录里(Device/var/root/Media/Cydia/AutoInstall/),为了帮助我们更好的操作iPhone,越狱后建议你首先安装如下插件:
- Apple File Conduit 2:该插件使iPhone的整个文件系统可以像Mac上一样去访问
- AppSync Unified:该插件使iPhone可以安装任意来源的APP
- 安装完插件Apple File Conduit 2后,就可以任意访问iPhone的文件系统了,随后可以通过在Mac和iPhone分别安装文件访问APP来访问iPhone的文件系统
- Mac: iFunBox
-
iPhone:iFile(通过Cydia的自动安装目录来安装)
- SpringBoard:安装完插件后,有时会提示重启SpringBoard,SpringBoard指的就是iOS的桌面,直接选择重启即可
二、如何通过Mac操作iPhone?
我们知道所谓逆向就是以Mac为开发工具,调试、破解、修改iPhone上的APP的过程,那么如何通过Mac来操作iPhone呢?答案很简单那就是让Mac远程登录iPhone,OpenSSH提供了安全登录协议SSH的开源实现。
使Mac和iPhone支持远程登录
- Mac默认支持SSH协议
- 通过Cydia安装插件OpenSSH,使iPhone支持远程登录
到此iPhone和Mac都具备了远程登录的环境,下边我们来看下如何远程登录iPhone?接下来我们将分解介绍通过网络和USB访问iPhone
通过网络登录iPhone
- Mac和iPhone需要在同一个局域网内,如同一WiFi环境下
- Mac终端输入指令:
ssh 账户名@服务器ip地址
- 这里的服务器即iPhone
- iPhone有两个账户:root、mobile,为了拥有更高的权限,我们一般使用root账户
1)账号的初始密码均为:alpine
2)两个账户修改密码的指令分别为:passwd
、passwd mobile
通过USB登录iPhone
- Mac上有个服务程序usbmxd(开机自启),可以将Mac和iPhone的数据通过USB传输
- 将iPhone的SSH端口映射到Mac的任意非保留端口,如:10086
- SSH服务默认使用22端口
- 端口映射:
python tcprelay.py -t 22:1086
1)-t:同时支持多个接口映射
2)tcprelay.py文件来源:下载usbmxd文件,从中找到tcprelay.py所在文件夹,在该文件目录下执行上述指令即可完成接口转发,即:maigandeiMac:~ maigan$ cd /Users/maigan/Desktop/iOS逆向/工具/python-client maigandeiMac:python-client maigan$ python tcprelay.py -t 22:10086
- 登录Mac的10086端口:完成端口映射后,访问Mac上的10086端口就等于访问iPhone上的22端口,因此我们只需要登录到Mac的10086端口即可。
- 方式一:
ssh root@localhost -p 10086
- 方式二:
ssh root@127.0.0.1 -p 10086
注意:要一直保持接口转发,才可以通过端口操作iPhone,因此上述的操作我们需要另起一个终端窗口(快捷键command+t)
- 方式一:
退出iPhone
- 终端指令:
exit
三、小结
总的来说使Mac操作iPhone就三步
- 使Mac、iPhone支持远程登录
- 通过网络或USB登录iPhone
- 退出登录
接下来我们对上面用到的一些知识做些扩展
四、知识扩展
SSH、OpenSSH、SSL、OpenSSL
- SSH:全称Secure Shell,安全外壳协议,为远程登录提供安全保证的协议,默认端口号22
- OpenSSH:SSH协议的开源实现
- SSL:全称Secure Socket Layer,为网络通讯提供的一种安全协议,在传输层为网络连接进行加密
- OpenSSL:SSL的开源实现,
- 绝大多数的HTTPS等价于HTTP加OpenSSL
- OpenSSH的加密就是通过OpenSSL实现的
SSH通信过程
- 建立安全连接
服务器(iPhone)将公钥等信息发送给客户端(Mac),提供自己的身份证明。如果客户端没有服务端的公钥信息,就会询问是否建立连接此服务器
注:删除本地存储的服务器公钥:ssh-keygen -R 服务器ip地址
- 客户端认证
-
基于密码的客户端认证:直接登录时输入服务端密码进行客户端认证
-
基于秘钥的客户端认证:客户端生成一对公钥私钥,然后将公钥追加到服务端的授权文件里
注:SSH-2默认会优先尝试“密钥认证”,如果认证失败,才会尝试“密码认证”,因此完成秘钥追加后,后续登录将不再需要密码认证
-
- 数据传输
多指令 脚本文件
我们可以将多条命令写在一个脚本文件(.sh)里,一起执行,如上边接口映射时的cd /xxx/xxx/xxx/xxx/
和python tcprelay.py -t 22:10086
- 建立脚本文件,写入上述命令
- 通过指令
source 脚本文件xx.sh
执行脚本文件,指令source
可以简写为.
- 注意虽然指令
sh
、bash
也可以执行脚本文件,但是这里不采用,因为sh
、bash
执行脚本文件时,当前shell环境会启动一个子进程来执行脚本文件,执行后返回到父进程的shell环境,所以执行cd
时,在子进程中会进入到cd的目录,但是在父进程中环境并没有改变,也就是说目录没有改变
- 注意虽然指令