首页文章iOS越狱开发指南手机越狱「iOS越狱开发指南」

iOS越狱开发指南手机越狱「iOS越狱开发指南」

时间2025-02-05 17:44:26发布yu分类文章浏览150
导读:若干年前,大家看到iPhone互相问好的第一件事是“你越狱了吗”。据不完全统计,早期有80%左右的iPhone用户会选择越狱。但是随着iOS系统的逐步完善,这个比例已经在慢慢降低,甚至很多人已经不知道越狱为何物,是美剧吗?那么作为iOS开发者,有没必要了解越狱,越狱完之后我们能干嘛?答案显然是肯定的,那么这篇文章将带你进入越狱的世界里。 越狱(jailb...

若干年前,大家看到iPhone互相问好的第一件事是“你越狱了吗”。据不完全统计,早期有80%左右的iPhone用户会选择越狱。但是随着iOS系统的逐步完善,这个比例已经在慢慢降低,甚至很多人已经不知道越狱为何物,是美剧吗?那么作为iOS开发者,有没必要了解越狱,越狱完之后我们能干嘛?答案显然是肯定的,那么这篇文章将带你进入越狱的世界里。

越狱(jailbreaking)在汉语词典里面的指的是监狱中的囚犯非法地离开或逃离监狱的行为。众说周知,iOS是相对比较封闭的操作系统,用户和开发者所拥有的权限(自由)只能局限在特定的沙盒之中。那么iOS 越狱则指的是通过系统漏洞,打破这种限制的过程。使得用户最终能够以root权限访问文件系统和管理器,随心所欲的驾驭我们自己的iOS设备。


大概可以分为这么几个方面:

第三方应用市场:91助手,百度助手,PP助手,360助手等

比如快捷设置,来电归属地,一键清理,更换界面主题,动态壁纸,苹果公司近几年的iOS系统更新所添加的新功能有很多都是从越狱插件中借鉴的;
代表:91桌面,Settings


91桌面

Settings

可以非正式地解开运营商对iPhone的锁定,使得能够使用其它运营商提供的服务,比如一些定制机或者其他地区版本限制了移动4G服务

可在苹果漏洞未修复前,提前进行修复

以上总结的是越狱之后的对于用户来说大致几个方面的意义,但是随着苹果对iOS的逐步完善和免费App(下载免费)成为趋势,不可否认的是越狱的人群正逐步减少,作为iOS开发者还有哪些更重要的意义呢?
主要包括以下几个方面:

包括iOS整体框架,比如私有API,能够更好的扩展App功能,也意味着苹果未来可能开放这部分接口,更早的掌握核心技术;
常用的私有API特性:
a. 实现更丰富的UI效果,比如CAAnimation未公开的API
b. 打开受限制的硬件特性,比如iOS7上实现视频硬解码
c. 获取已安装App列表以及App信息
d. 获取特殊的设备信息,比如IMEI,UDID等
e. 应用内安装卸载IPA软件包


私有库列表

作为开发者,总是惊叹于很多优秀的App能够做的如此之好,tableview可以如丝般顺滑;那么在赞叹之余,我们能够动起手来了解这些App的设计思想,算法,以及实现方式,弄清楚程序运行的本来面目。


a. 远程调试,远离找数据线烦恼;
b. app,bundle,framwork等可动态替换和加载,不需要重复安装加载;
c. 文件目录自由访问,动态修改替换配置文件,特别是iOS8.4之后限制了App的文件目录读取,显得尤为重要;
iOS系统目录:


d. 更好的进行性能测试和监控
一个top命令就可以了解整体的一个运行情况, 一个简单的ping即可调试当前设备的网络情况。还有更高级的用法,我们平时开发中经常使用Instruments监测我们的应用程序,但是功能往往比较局限,这时候通过越狱插件的形式能够更好的监测我们应用程序的整体运行情况;



a. 核心代码保护,反逆向,进行代码混淆
b. 保证信息安全,本地数据加密,内存数据保护
c. 防劫持,防注入,阻止GDB等动态调试工具依附


综上所述,作为开发者,虽然面对的用户(利益)可能越来越少,学习和应用越狱知识依然意义重大,使得技术更加纯粹;

桌面操作系统: Mac OS X
iOS设备: iPhone,iPod touch,iPad
设备越狱:
(1). 确定对应设备系统版本是否能够完美越狱,寻找对应的越狱工具
目前完美越狱的iOS系统版本:
iOS 1.0 ~ iOS 10.2.1(个别小版本不支持,比如iOS 9.3.5)
(2). 使用iTunes进行数据备份,越狱有风险,一定要谨慎,记得备份,备份,备份
(3). 各个越狱工具,步骤可能略有不同,随着越狱技术的成熟,目前基本上支持一键越狱
Cydia:
越狱环境下的App Store,一般越狱工具会自动安装

从App Store官方途径下载的ipa包是经过加壳的,也就是做了一层加密处理。所以我们第一步就需要通过一定的技术手段剥开这层保护壳,才能深入内部去探寻我们感兴趣的东西。
相关技术:
a. AppCrackr: 早期使用的工具,简便好用,但是目前已被和谐
b. dump decrypted: 流程稍微复杂一些,需要在iOS设备上进行
详细教程:http://wiki.sankuai.com/pages/viewpage.action?pageId=500734074

最方便快捷的途径是去第三方的应用分发平台,比如91,PP助手等直接下载相应的ipa包,但是一些国外或者冷门的App在上述平台可能没有,那就必须自己动手了。

什么是Mach-O?它是一种用于可执行文件,目标代码,动态库,内核转储的文件格式,目前Mac OS X,iOS的可执行文件都是采用的这种文件格式。所以,无论基于何种目的,我们的入口基本都是从这里入手
可视化查看工具:
MachOView,免费开源的项目,能够可视化查看Mach-O的文件信息
dmg:http://sourceforge.net/projects/machoview/
GitHub:https://github.com/gdbinit/MachOView

逆向解析出目标程序所有的头文件信息,把盘子铺开
原理:
在Mach-O结构中主要通过以下几个Section段,“__objc_classname” Section段保存有Objective-C所有的类名信息,“__objc_methname”的Section段则保存了所有的方法列表,而"__objc_classlist"的Section段则具有所有类的信息,包括类名,变量,函数等关联信息。所以通过以上几点,从而能够针对App,bundle,framwork,static library等的可执行程序导出所有Objective-C的头文件信息;
Class-dump
class dump是一个命令行工具,它可以dump出破解之后的iOS二进制文件的头文件信息
教程:http://wiki.sankuai.com/display/~zhangzifeng02/Class-dump
官网:http://stevenygard.com/

对于逆向出的各个头文件信息,可能有几百上千个文件,就像一幅图上众多的点,你很难有效的组织起来,从而能够看穿一切。这就需要更加深入的分析,利用反汇编反编译的手段,将点连成线,深入了解目标程序的整体逻辑关系
原理:
反汇编(Disassembly),是把目标代码转换为更加便于易读的汇编代码的过程,对于任何的计算机程序都可以实施反汇编,并且对于有些强大的反汇编工具,甚至能够转换为高级语言的代码;
反汇编反编译工具:
IDA
逆向工程界的神器,功能强大,支持Windows,Mac OS X和Linux等平台。正式版需要收费,价格不菲,有免费试用版本,但是功能受限,对于初学者来说其实功能也够用,但是不支持64位的CPU,对于目前iOS设备普遍都是64位的CPU来说有点尴尬;
官网:https://www.hex-rays.com/products/ida/index.shtml


Hopper Disassembler
后起之秀,主要针对Mac OS X平台,能够逆向32位和64位可执行程序,功能也相当强大。有免费和收费版本,对比于IDA收费版本价格更加亲民,个人版本700左右人民币即可收入囊中。
官网:https://www.hopperapp.com/

对目标程序进行静态分析之后,我们能够窥探程序的整个逻辑结构。正如我们了解了一个工具的基本构造之后,它是如何使用的呢?所以我们还必须通过动态调试的手段探测程序的运行时情况。
动态调试指的是利用调试器在软件运行时,动态的调试跟踪软件的运行情况。作为iOS开发人员,我们应该都会用Xcode的在Debug模式下调试我们的程序,那么对于已发布的Release程序,我们能否进行动态调试呢,答案是肯定的。

OpenSSH是使用SSH协议进行远程登录的首选连接工具, 可以安全方便的远程调试iOS设备。首次越狱后需要单独安装,也可进入Cydia搜索"openssh"进行在线安装。安装成功之后,默认密码为"alpine",为了避免安全隐患,记得及时修改root和mobile账户的默认密码。


官网:http://www.openssh.com/

11.gif

a. GDB
GDB是GNU开源组织发布的,功能强大的命令行调试器,支持C, C++, Objective-C, Pascal等多种流行的程序语言。
支持的功能:
♦ 启动程序,指定可影响程序运行的任何内容
♦ 可以让程序在指定的断点条件下停止
♦ 在程序停止时(断点处),检查程序运行的情况
♦ 可以动态修改程序运行时的内容
GDB的基本调试步骤:


官网:https://www.gnu.org/software/gdb/

b. LLDB
从Xcode5开始LLDB取代了GDB成为了Xcode新的默认调试器,它是具有REPL(read-eval-print-loop,交互式解释器)特征的开源调试器,其可以安装C++或者Python插件。它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。所以随着官方GDB被取代的趋势,在iOS动态调试使用LLDB也就比用GDB来得更加靠谱。
LLDB的基本调试步骤:
(1). LLDB只能运行在Mac上,在iOS上调试需要安装debugserver,从而能够进行远程调试,首先需要装载Mac上的DeveloperDiskImage,注意要选择对应设备系统版本下的DeveloperDiskImage


(2). 拷贝debugserver到本地目录


(3). 对debugserver进行瘦身,只取对应的设备的架构包(这边我的是iPhone5S对应的是arm64)


(4). 创建一个名为entitlements.plist的文件,并且输入相应的签名文件内容,保存到当前目录


(5). 对debugserver进行签名


(5). 将debugserver远程拷贝到对应设备的usr/bin/目录,注意@后面为局域网内设备的IP地址


(6). SSH连接iOS端开启监听端口,注意后面跟的是进程名字,比如"Elephant"


(7). Mac端远程连接iOS,进行远程调试


注意:由于各种网络原因,有可能会导致连接会比较久,不知道还以为程序死了,其实等等还是会有的,这时可考虑采用U连接方式
a. 下载umuxd,地址为https://cgit.sukimashita.com/umuxd.git/snapshot/umuxd-1.0.8.tar.gz
b. 解压到相应目录,终端进入umuxd-1.0.8/python-client/目录
c. 开启端口转发,python tcprelay.py -t 8888:8888

(8). 连接成功之后,即可在iOS上对应的App进行LLDB动态调试,其调试技巧与GDB有些差别,但是基本上大同小异
LLDB与GDB命令的对照表:http://lldb.llvm.org/lldb-gdb.html
官网:http://lldb.llvm.org/

c. Cycript
这是由越狱大神saurik开发的一门脚本语言,能够允许开发者对Objective-C++ 和 JavaScript混合使用,实现探测和修改运行中的应用程序,主要用于注入目标进程或者链接库中进行动态调试,它的好处是对原生程序或者代码完全无副作用


官网:http://www.cycript.org/

(3) UI动态调试工具
Reveal
Reveal是iOS上强大动态UI调试工具,能够实现注入,修改,调试iOS应用程序。需要收费,第一次下载有14天的免费期限
普通集成方式:
a. CocoaPods 集成
b. 断点加载
c. 项目依赖
越狱集成方式:
a. 将Reveal目录下的Reveal.framework和libReveal.dylib拷贝到设备上的相应目录;


b. 在设备的/Library/MobileSubstrate/DynamicLibraries/目录下创建libReveal.plist,并且编辑匹配的目标程序的BundleID,内容如下;


c. 保证Mac端和设备处在同一局域网内,这时Mac打开Revea,并且在iOS设备上打开目标程序,即可进行UI动态调试;
官网:https://revealapp.com/

MacPorts和dpkg
MacPorts一个软件包管理系统,可用于简化OS X和Darwin操作系统内软件的安装。而dpkg则是Debian软件包管理器的基础,是一个底层工具,主要用于安装,卸载和管理deb软件包,dpkg通过MacPorts来安装
https://www.macports.org/
Theos
Theos最初是一个“iphone-framework”,以简化在iOS设备(主要是越狱设备)上命令行的代码构建。后面演变为基于make的构建系统,可运行在OSX,iOS,Linux和Windows上,主要用于iOS越狱软件的开发。
(1). 安装ldid,在Theos开发中,ldid替代Xcode自带的Codesign对插件进行签名;


(2). 安装Theos,一般是安装在/opt/目录下


(3). 创建工程


(4). 工程代码编写,以tweak为例子


(5). 编译,打包和安装插件


GitHub:https://github.com/theos/theos

iOSOpenDev
可视化的iOS越狱开发工具,与Xcode深度整合,不需要通过命令行,在熟悉的Xcode上即可进行iOS越狱开发,调试也方便。与开发普通App相比,熟悉的味道,一样的配方
官网:http://iosopendev.com/
GitHub:https://github.com/kokoabim/iOSOpenDev

iTools
国产iOS系统管理工具,界面简洁,功能全面,除了有丰富的用户端功能之外,还有针对开发者的高级功能
iFunBox
老外出品,主要功能是针对iOS系统的文件管理
91手机助手PC版
最早的iOS系统管理工具,V3版本之后功能比较臃肿,缺少了开发者工具

(1). 熟悉iOS基础知识,ObjC语言以及框架
(2). 汇编和编译原理
(3). 逆向工程

巴音郭楞蒙古版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com

展开全文READ MORE
越狱
CE修改器 vv2.2.1ce修改器手机版「CE修改器 vv2.2.1」 索尼获得新专利:颠覆未来通信与存储的电子设备,推动智能科技发展索尼新手机「索尼获得新专利:颠覆未来通信与存储的电子设备,推动智能科技发展」