【iOS开发】iOS逆向开发之环境搭建
本文主要内容如下:
本文要点什么是iOS越狱(iOS Jailbreaking)
iOS jailbreaking. iOS jailbreaking is privilege escalation for the process of removing software restrictions imposed by Apple on iOS and tvOS.
简单来说,iOS越狱是指获取iOS设备的root权限,解除各种限制,可以绕过App Store下载及安装各种App、插件等。
如何判断iOS设备是否越狱
1)看iOS设备桌面是否有Cydia这个应用
2)借助第三方软件判断,如PP助手等。如下图所示,笔者的iPhone 6s是越狱设备。
3)通过代码识别设备是否越狱,主要是判断设备中是否存在越狱设备相关文件。如下所示,可以简单地判断系统/Application文件夹中是否有Cydia.app。当然了,网上还有更多可靠的方法识别,可以自行去搜索。
搭建逆向开发环境
1)Mac远程登录iOS设备
我们经常在电脑上通过terminal对电脑进行一些操作,那么是否可以通过电脑terminal远程访问iOS设备呢。答案是可以的。在terminal中操纵iOS设备,这在逆向开发中是经常要做的事。通过SSH登录即可。首先在iOS设备上安装openSSH,就是下面那个家伙。(SSH及openSSH本文不做介绍,参考阮一峰博士的这两篇博客进行了解)
打开你的电脑terminal,输入:ssh root@iOS设备网络IP,然后回车输入密码即可登录了。要注意保证iOS设备和电脑在同一个局域网内。比如iOS设备网络IP为192.168.1.100,那么在输入 ssh root@192.168.1.100回车输入密码即可登录iOS设备的root账户。iOS设备一般有一个root账户和一个mobile账户,默认密码都是alpine(如下图所示)。通过passwd及passwd mobile命令可以分别更改root用户和mobile用户的密码。
2)利用Mac的服务程序usbmuxd进行SSH登录
第一种方式是以网络连接的形式进行SSH登录,要求iOS设备连接WiFi,有时会效率低下。为了提升传输速度,可以利用Mac的服务程序usbmuxd,通过USB的方式进行传输。usbmuxd在/System/Library/PrivateFrameworks/MobileDevice.framework/Resources中,默认就启动。
在Mac上下载usbmuxd工具包,解压放置任意位置(主要是用到tcprelay.py文件),由terminal cd进入到python-client目录中。
然后执行命令:python -tcprelay.py -t 22:10012。
这一步是将iOS设备的22端口映射到Mac本地的10012端口。注意:10012端口是随意取的,只要不是保留端口号即可。这样就意味着,Mac以后要跟iOS设备通信,只需要跟本地的端口10012通信即可。
也就是说之前的登录方式:ssh root@192.168.1.100(你的iOS设备WiFi IP)可以改成如下方式登录:
ssh root@localhost -p 10012或者ssh root@127.0.0.1 -p 10012即可。注意:一定要另开一个终端页面。
一切准备就绪啦~\(≧≦)/~ 开始用Cycript搞起了
Cycript是一门融合了Objective-C++、JavaScript等语言语法的脚本语言。通过Cydia安装Cycript,然后利用Cycript就可以调试App了。又是那个逼的家伙写的~~~
启动Cycript:
Cycript -p 进程ID或者进程名字,如下图所示调试网易云音乐。
代码解释:
UIApp相当于Objective-C中的[UIApplication sharedApplicartion],也就是获取当前进程的shredApplication单例对象,通过#对象内存地址 可以访问该对象,图中简单地获取了keyWindow和keyWindow的rootViewController。是不是很熟悉
简单地使用了一下Cycript,更多语法请参考官方文档。
最后列举一些开发工具:
Mac上的iFunBox、PP助手等,iOS上的iFile(可以认为是iOS上的iFunBox,都是文件管理系统)、Apple File Conduit、classdump、adv-cmds等。
参考文档:
2、SSH原理与运用