作为一个iOS开发者来说越狱开发是不可少的,很多人都不知道怎么入门,今天我心情好,写一篇文章给大家观摩观摩。
首先做一个自我介绍吧,大家可以叫我Roy,是一个久经沙场的…算了,废话不多说。
文章分为三个部分
一、什么是越狱开发
二、需要的那些工具,和掌握那些技能
三、简单的demo演示
只要跟着Roy的步骤走,你一定会成为一个合格的混子。
一、什么是越狱开发,在百度搜点资料随便看一下。
简单来说,就是iPhone越狱后,拿到root权限,做一些正常手机不能做的事,能衍生为逆向开发(后面文章会写逆向)。如果你想做APP插件越狱开发是必不可少的。
二、需要的那些工具,和掌握那些技能
这篇文章只介绍文章内需要用到的工具和技能,以后的每篇文章也是如此。
1、需要一台越狱设备,Roy的是iPhone 5c 9.3.4
2、iFunBox —Mac上用来查看越狱设备的系统文件。
3、openSSH —终端用来跟手机连接
4、Cycript — 一款脚本语言,Cycript 混合了Objective-C与javascript语法的解释器,我们能够在一个命令中Objective-C或者javascript,它能够挂钩正在运行的进程,能够在运行时修改应用的很多东西(非常重要!!!http://www.cycript.org/)。
1、安装 iFunBox下载安装即可(http://www.sdifen.com/1069/)
2、安装 openSSH
越狱成功后, 就会多出个Cydia,这个可是越狱后的神器. Cydia可以安装各种越狱插件, 当然也可以安装各种越狱软件, 当然最主要的就是用来逆向开发。
打开Cydia
搜索openssh, 选择安装
安装完这个工具后可以让你从mac登录进越狱设备, 然后进行一些基本操作. 想一下是不是很激动?
可以通过电脑来控制手机啦~! 既然可以实现自己电脑控制手机, 那么从其他电脑也可以登入您的手机(默认密码都是alpine), 也就导致了手机的不安全(当年的蠕虫病毒就是又这个引起的), 所以强烈建议您更改ssh的密码.
(1)修改ssh密码(注意:要在同一局域网内)
首先打开ssh通道, 终端输入一下命令
ssh root@您的手机IP地址
进入ssh后, iOS上的用户有2个, 分别是root和mobile, 修改密码的命令:
passwd root
修改root的密码, 按提示输入新的密码然后回车即可
passwd mobile
下面Roy介绍一种用USB连接手机的方法
即用来连接iOS设备的传输, 在逆向工程里面我们主要拿来连接iOS设备, 上面我们用到的ssh是通过wifi进行传输, 而usbmuxd就是可以让我们通过USB连接设备, ssh调试我们的设备. 加快设备的连接速度, 在后面说到的lldb以及debugserver就会用到usbmuxd用来加快连接速度
3、usbmuxd配置及使用(USB)
下载usbmuxd(https://link.jianshu.com?t=http://7xibfi.com1.z0.glb.clouddn.com/uploads/default/original/2X/a/aa9cecf05b47d08a59324edeaaeea3f17e0608ee.zip)
解压后得到几个文件, 我们需要用到的是tcprelay.py这个文件, usbmuxd的用法也比较简单, 先介绍加快ssh的速度:
新建第一个Terminal(终端)窗口, 把tcprelay.py拖入Terminal, 在Terminal中输入
/Users/luoziwei/Downloads/USBSSH/tcprelay.py(tcprelay.py的路径) -t远程iOS上的端口:本地OSX/Windows上的端口
即:/Users/luoziwei/Downloads/USBSSH/tcprelay.py -t 22:2222
出现如下,就说明是在等待转发状态了
Forwarding local port 2222 to remote port 22
再新建一个Terminal窗口, Terminal输入如下命令:
ssh root@localhost -p 2222
输入刚刚修改的密码,就连接成功了,如下:
root@localhost's password:
iPhone:~ root#
当然了, 也可以直接通过pp助手一键傻瓜式打开, 然后Terminal按提示输入即可如图:
通过上述操作你就可以成功终端连接手机了。
4 Cycript的安装:
打开Cydia
搜索Cycript, 选择更改->安装即可,安装完成后就可以用终端查看和修改越狱设备的属性了。
三、简单的demo演示
首先我们先查看一下手机的系统文件—输入ls
其实这并不是我们要看的根系统的文件——我们cd /一下再ls
这就是我们真正的系统文件,做逆向开发主要针对的是var这个文件,因为这个文件装着我们的APP我们可以进入这个文件看一下
APP在哪里呢? 我是谁?我在哪?这些都是啥?我现在应该怎么操作?
不着急,慢慢来比较快…混子也不是一天练成的。
我们在终端再cd一下cd containers/Bundle/Application再ls
图中出现的4个串串就是我们手机上安装的APP(出系统APP外)文件名是系统分配的全局唯一文件名,保证文件不重复。
我们再随便cd一个文件进去就能看到里面.app的包了,这个就是我们日后要操作的包文件了。是不是贼简单呢
既然该看的我们也看了,接下来就要开始真正的小demo演示了。
首先我们要注入进程。怎么注入呢?
就用我们刚刚安装的Cycript
用ssh接入手机后在终端输入cycript -p SpringBoard(SpringBoard 是进入我们设备一切眼睛能看到的地方 譬如:APP、状态栏 总之就是眼睛能看到的就是 我们SpringBoard 所要注入的)
显示cy#我们就注入成功了
这样我们就可以瞎几把修改。我们做一个眼睛能够看到的。
在cy# 后面输入alert = [[UIAlertView alloc] initWithTitle:@"Roy de xiao mi di" message:@"sa bi lao wang" delegate:nil cancelButtonTitle:@"OK" otherButonTitles:nil]
回车(我们在上面讲过Cycript解释器是支持oc语法和javascript)
回车后我们看到UIAlertView的frame和layer此事我们手机上还没有显示任何东西。因为我们的UIAlertView是要show一下的(oc语法)
我们再次在终端输入[alert show]然后回车
手机上就会显示我们注入的UIAlertView啦
注意:alert是我们刚刚定义的变量名,这里也支持用地址调用单例 如:[#0x1bf22f20 show] “#”是我们地址调用方法的语法更多高级语法法可在(http://www.cycript.org/)查看。
好啦,我们第一个demo就做完了,我们已经算是进了越狱开发的村了,接下来我们就要找一下越狱开发的门。
下一篇文章我们再记录一下如何修改越狱设备上的APP(其中包括APP砸壳、class-dump导出APP的.h 文件)想想都激动!
文章接着这篇写。
需要准备的东西:
1、手机上安装一个自己写的demo,到时候再说长什么样 嘻嘻~(我现在也没写)
2、在APPstore下载几个APP
猝
领取专属 10元无门槛券
私享最新 技术干货