前言

随着iOS系统的逐步开放和与Android平台越来越多的相似性,很多以前只能通过越狱才可以使用的应用在现在的iOS系统中已经有了很多,所以越狱对于目前iOS用户来说,重要性比起以前有了很大的降低,很多用户都已经不再考虑iOS的越狱了。

那么作为iOS开发者,有没必要了解越狱,越狱完之后我们能干嘛?答案显然是肯定的。

什么是越狱

iOS是相对比较封闭的操作系统,用户和开发者所拥有的权限(自由)只能局限在特定的沙盒之中。那么iOS 越狱则指的是通过系统漏洞,打破这种限制的过程。使得用户最终能够以root权限访问文件系统和管理器,随心所欲的驾驭我们自己的iOS设备。

iOS developer 为什么要越狱

  • 了解整个iOS系统架构,能够在更高的维度看待问题
  • 查看私有的API,扩展APP功能
  • 实现更丰富的UI效果,比如CAAnimation未公开的API
  • 打开受限制的硬件特性,比如iOS7上实现视频硬解码
  • 获取已安装App列表以及App信息
  • 获取特殊的设备信息,比如IMEI,UDID等
  • 动态调试App,查看debugserver的权限问题

越狱与自身App安全

  • 核心代码保护,反逆向,开发时进行代码混淆
  • 保证自己App信息安全,本地数据存储加密,内存数据保护等
  • 防劫持,防注入,阻止GDB等动态调试工具依附
越狱分两种
  • 完美越狱:一次越狱成功后只要不升级系统,就会一直是越狱状态
  • 非完美越狱:手机重启后会造成越狱失败,需要重新使用工具进行越狱

登录iPhone基本流程

手机越狱后会默认安装Cydia

Cydia:是越狱后的另一种App Store.类似苹果在线软件商店iTunes Store 的软件平台的客户端,在越狱的过程中被装入到系统中的.Cydia的主要目的是为越狱的iOS用户提供一个高级包装工具的图形界面前端以安装不被App Store接受的程序。它也是一个软件仓库的聚合器,带有几个被社区信任的源以避免对某个服务器的过度依赖

1.Cydia 中安装openSSH.利用openSSH Mac 登录iPhone .

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

OpenSSH是使用SSH透过计算机网络加密通讯的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子计划。

  • WiFi登录(Mac iphone 在同一个网段下): $ ssh root@手机IP地址

  • $ ssh mobile@手机IP地址

iOS下有两个账户 root 和 mobile 默认密码都是 alpine ,可以通过passwd , passwd mobile 来修改对应账户的密码

这种登录方式优点是简单方便.缺点就是传输速度慢

SSH的通信过程

在建立安全连接过程中,服务器会提供自己的身份证明

在终端会有这样的提示

SSH - 基于密钥的客户端认证

  • 建立安全连接
  • 客户端的认证
  • 数据的传输

ssh的工作原理

  • 服务器建立公钥: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host* 的文件,若系统刚刚安装完成时,由于没有这些公钥,因此 sshd 会主动去计算出这些需要的公钥,同时也会计算出服务器自己需要的私钥。

  • 客户端主动联机请求: 若客户端想要联机到 ssh 服务器,则需要使用适当的客户端程序来联机,包括 ssh, putty 等客户端程序连接。

  • 服务器传送公钥给客户端: 接收到客户端的要求后,服务器便将第一个步骤取得的公钥传送给客户端使用 (此时应是明码传送,反正公钥本来就是给大家使用的)。

  • 客户端记录并比对服务器的公钥数据及随机计算自己的公私钥: 若客户端第一次连接到此服务器,则会将服务器的公钥记录到客户端的用户家目录内的 ~/.ssh/known_hosts 。若是已经记录过该服务器的公钥,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥, 则开始计算客户端自己的公私钥。

  • 回传客户端的公钥到服务器端: 用户将自己的公钥传送给服务器。此时服务器:具有服务器的私钥与客户端的公钥,而客户端则是: 具有服务器的公钥以及客户端自己的私钥,你会看到,在此次联机的服务器与客户端的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称加密系统。

  • 开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密 (2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密,这样就能保证通信安全。

把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部
ssh-copy-id root@服务器主机地址 需要输入root用户的登录密码
ssh-copy-id会将客户端/.ssh/id_rsa.pub的内容自动追加到服务器的/.ssh/authorized_keys尾部
22端口问题

21端口提供FTP服务

80端口提供HTTP服务

22端口提供SSH服务(可以查看/etc/ssh/sshd_config的Port字段)

iPhone 默认是使用22端口进行SSH通信的,采用的是TCP协议

为了加快传输速度,也可以通过USB连接的方式进行SSH登录
Mac上有个服务程序usbmuxd(它会开机自动启动),可以将Mac的数据通过USB传输到iPhone
/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd

usbmuxd的使用

  • 下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的一个python脚本:tcprelay.py)
    https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz

  • 将iPhone的22端口(SSH端口)映射到Mac本地的10010端口

  • cd ~/Documents/usbmuxd-1.0.8/python-client

  • python tcprelay.py -t 22:10010

  • 加上-t参数是为了能够同时支持多个SSH连接

$ python tcprelay.py -t 22:100012

端口映射完毕后,以后如果想跟iPhone的22端口通信,直接跟Mac本地的10010端口通信就可以了

新开一个终端界面,SSH登录到Mac本地的10010端口

$ ssh root@localhost -p 10010

设备Cydia 中安装 adv-cmds 插件 用于查看所有进程

  • $ ps -A // 列出所有进程
  • $ ps -A | grep 关键词 // 用关键词过滤进行查询

设备Cydia 中安装 cycript

  • $ cycript // 开启
  • Control + D // 退出
    也可以这样开启 是进入某一个APP内部查看方法参数等.
  • $ cycript -p 进程号
  • 或者 $ cycript -p 进程名字

iOS越狱之Mac登录iPhone相关推荐

  1. iOS逆向学习之 Mac 登录到 iPhone

    1. 登录  Mac 登录到 iPhone 是通过终端的命令行  iOS和Mac 都是基于 Darwin(苹果的一个基于Unix的开源系统内核),所以iOS同样支持终端操作,上次越狱的时候就在手机上安 ...

  2. iOS 逆向编程(五)通过 (OpenSSH) Wifi 远程连接登录 iPhone

    一.安装 Mac 上提高效率的辅助工具 (可选) 二.简介 1.我们经常在 Mac 的终端上通过敲一些命令行来完成一些操作. 2.iOS 和 Mac OS X 都是基于 Darwin (苹果的一个基于 ...

  3. itunes未能连接到iphone_FonePaw iPhone Data Recovery mac版(iphone数据恢复工具)

    iphone数据丢失?想要恢复iphone丢失的数据?FonePaw iPhone Data Recovery for mac是一款功能强大的iPhone手机数据的数据恢复软件.使用能够帮助用户快速恢 ...

  4. iOS越狱开发theOS搭建

    iOS越狱开发theOS搭建 越狱环境搭建 TheOS Theos.最初由DHowett进行开发,由于DHwoett去了微软,不再有时间维护了,所以Adam Demasi(kirb)接手了他的工作,并 ...

  5. 一起使用Mac和iPhone的10种便捷方法

    MacOS和iOS可以很好地协同工作你们真的知道吗?如果你的台式机和电话都来自Apple,那么你触手可得的功能就真的很多. 那么让我们开始探索可以同时使用两个设备的最佳方法吧! 1.复制和粘贴内容 借 ...

  6. iOS 越狱的Tweak开发

    iOS 越狱的Tweak开发 原文链接在我的博客 https://yohunl.com/ios-yue-yu-de-tweakkai-fa/ 上,如果有更新,以博客为准 iOS越狱开发中,各种破解补丁 ...

  7. iOS开发-逆向注入SDK(一)iOS越狱

    越狱 这里采用使用 iphone 5S, iOS 12.4.9 为例,进行 非完美越狱 非完美越狱:重启手机越狱失效,需要再进行越狱,越狱也不麻烦,点几下就行了,不过不关机就行了哈 i4助手 安装 i ...

  8. iOS越狱开发环境搭建 theos

    iOS越狱开发环境搭建 theos http://www.devdiv.com/home.php?mod=space&uid=54&do=blog&id=7596 前段时间在开 ...

  9. iOS越狱程序开发框架

    开发越狱程序和日常开发的iOS程序很相似,不过,越狱程序能做更强大的事情.你的设备越狱之后,你就能够hook进Apple提供的几乎所有的class,来控制iPhone/iPad的功能. @DHowet ...

  10. iOS越狱开发(一) ipa 安装

    原文  http://www.cnblogs.com/easonoutlook/p/3220429.html iOS越狱开发(一) 做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴, ...

最新文章

  1. Apache中KeepAlive 配置
  2. e3d教程做logo教程_看了教程还是不会做平面设计?关键的方法给你揭秘!附450集教程...
  3. Linux PPP实现源码分析-1
  4. 【报告分享】2021中国短视频和直播电商行业人才发展报告.pdf(附下载链接)...
  5. python 字符串中符号的意义
  6. 【办公自动化】国土“三调”用地分类“一键”转国标分类
  7. nvme固件升级 linux,Intel NVME SSD 固件升级步骤
  8. TP-LINK设备如何配置无线上网短信Wifi认证?
  9. 计算机无法装补丁,老司机教你win7 sp1补丁安装失败怎么办
  10. python 百度地图可视化_Python调用百度地图
  11. 解决ubuntu 18.04平台上thinkpad小红点TrackPoint左键随机失效的问题(by quqi99)
  12. antd-vue 划上表格内容显示气泡框及提示内容
  13. 最短路径算法之Dijkstra算法(java实现)
  14. python学习笔记(汇率兑换)
  15. 读《洞穴奇案》——从虐猫到禁食狗肉,自然法真的存在吗?
  16. 【51单片机】 ULN2003模块 驱动步进电机(5线)正反转 代码以及接线图(简单教学,一看就会)
  17. 关于康托展开的用途及写法
  18. linux无线usb网卡,Linux下USB无线网卡WL-167G驱动安装过程
  19. 微信小程序openid如何获得IP白名单的方法
  20. 在排序中,如何不借助中间变量进行排序呢?()

热门文章

  1. pearson特征选择matlab,常用的特征选择方法之 Pearson 相关系数
  2. 怎么制作游戏脚本_抖音脚本范文哪里有?我为你总结了130套爆款文案范例!
  3. Ps 2021教程,如何更换证件照背景?
  4. Linux 系统升级蝉道
  5. 大厂面试 | 阿里巴巴软件测试三面真题
  6. python怎么做相加两个变量_2组语法,1个函数,教你用Python做数据分析
  7. C# 读取Word中的书签
  8. 网易交互设计师微专业C4 让页面更优雅
  9. 平时工作中如何体现个人技术深度?
  10. 质谱借力ICL平台,静待LDT制度打开更大空间