准备工作
在进行越狱开发之前,我们首先需要一款越狱设备,在iOS9以下可以完美越狱,iOS9以上不完美越狱,具体越狱方式可以下载爱思助手进行一键越狱。
完美越狱:越狱之后之哟啊哦不升级系统就一直是越狱状态
非完美越狱:每次重启手机都要重新越狱
必备插件
安装openSSH插件
通过openSSH连接(登录)手机
$ssh 用户名@用户服务器地址
此时要输入密码,默认的密码是 alpine ,可以在OpenSSH -> Root Password How-To 里面看到
连接成功如图
退出
$exit
iOS 下有两个用户
- root 最高权限的用户 所在目录$HOME:/var/root
- mobile 普通用户 所在目录$HOME: /var/mobile
可以用iFunBox查看目录
修改ssh登录密码
$passwd 输入两次新密码
删除SSH服务器对应的公钥
$ssh-keygen -R 服务器IP地址
SSH
SSH是一种网络协议.用于计算机之间的加密登录!
openSSH
openSSH其中一种软件.
SSH通讯过程
中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)
预防中间人攻击最有效的方法就是验证 公钥是不是服务器的!!
如果是公开的SSH服务器,一般会将公钥的哈希值 公布在网站上!!
SSH使用公钥登录
除了使用密码登录,也可以免密码登录!
所谓的"公钥登录",原理:
1.Mac电脑将自己的公钥发给远程的手机
2.手机随机的生成一段字符串,发给Mac电脑.
3.Mac利用私钥加密字符串!
4.手机利用公钥解密字符串!
如果还要输入密码的话,设置文件的权限! chmod 755
- 1、生成SSH key
$ssh-keygen -t rsa -C "邮箱"
- 2、进入~/.ssh目录, 拷贝ssh key到手机,即可免密登录
$ssh-copy-id root@手机IP
USB连接
SSH的默认的端口是22,所以还可以用如下方式访问手机
$ssh -p 22 root@192.168.0.100
usbmuxd 在iOS和Mac上都是自带的,用来做映射
使用工具
执行脚本
python tcprelay.py -t 22:12345 将本机的12345端口映射到手机的22号端口
连接手机
ssh -p 12345 root@电脑IP
或者ssh root@localhost -p 2222
切换手机之后报错
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:Uvx4S9p5QbJXwuW/T7CZD0BE2tQr1xDHVhOf/253i00.
Please contact your system administrator.
Add correct host key in /Users/heaven/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/heaven/.ssh/known_hosts:11
RSA host key for 192.168.2.7 has changed and you have requested strict checking.
Host key verification failed.
解决办法 删除 known_hosts中的上一次连接保存的
查看手机所有进程
ps -A
文件拷贝
将文件拷贝到手机root根目录(Wifi)
$scp 文件名 root@手机IP地址:~/
(scp -P 2222 dumpdecrypted.dylib root@localhost:~/)
拷贝文件夹
(scp -r -P 2222 文件夹名字/ root@localhost:~/)
应用瘦身
单独导出arm64 的macho文件
$lipo 应用名字 -thin arm64 -output arm64_name