iOS 逆向与安全开篇

624 阅读4分钟

前提条件

  1. 一定的正向开发经验(最起码对 iOS 系统的 UIKit 框架有一定的了解)
  2. 一台越狱的 iOS 设备(推荐至少是 arm64 架构之上的,iPhone 也就是从 iPhone 5s 开始,iPad 是从 iPad Air 和 iPad mini 2 开始)
  3. 命令行的基本知识以及如何使用终端
  4. 时间和恒心

如何越狱可以使用爱思助手的工具箱里面的一键越狱工具或者英文不错的直接阅读这个网站的文档,安装文档的提示进行越狱,注意并不是所有版本所有 iOS 设备都能够越狱,一般而言最新的 iOS 系统或最新的 iPhone 设备在没有发现漏洞之前,都是比较安全,无法越狱的,但是这并不影响我们对 iOS 逆向的学习。甚至当你具有足够的水平之后,也可以去逆向分析最新的 iOS 系统漏洞实现越狱(😛这个需要相当高的技术水平了)。目前最合适的手机可能是 iPhone X,iPhone 8,iPhone 8 Plus 了,因为这些手机可以安装到 iOS 16 系统并进行越狱。

开篇

许多 iOS 开发人员工作了很多年一直都在使用 Xcode 开发着自己的 APP,从来没有想过是否可以修改别人的 APP 扩展自己想要的功能,也没想过自己写的 APP 是否会被别人修改,这些都是通过逆向开发可以实现的。以下是一些例子:

  • 逆向开发可以移除 APP 内的广告
  • 可以绕过钉钉打卡类 APP 的 WiFi 检测,GPS 检测实现任意打卡;
  • 可以实现微信自动抢红包;
  • 可以窥探别人 APP 甚至是 UIKit 等系统框架的实现细节,将汇编代码还原成源代码;
  • 等等。。。

玩过 LOL 的老玩家应该还记得很久以前某些辅助工具可以实现自己使用任意皮肤(这也是通过逆向开发做到的,但这是 window 平台方向的,而不是 iOS 平台的,只是说明逆向开发能做什么,还有游戏的外挂辅助软件也都是通过逆向开发实现的)。。。这些都是正向开发做不到,不可能提供的。这些也正是逆向开发的用武之地。当然,学会了如何破解别人的 APP,自然也知道了该如何去防护自己的 APP,提高安全性,不会进攻谈什么安全防护呢。

以上这些功能,如果你听到了就感觉到很兴奋,那么恭喜你来对了地方!通过本门课程的学习,以上案例通通都可以实现(LOL不算😅)。不过还是需要提醒一下大家,一般来说逆向开发的难度相较于正向开发会更加困难,想要掌握逆向开发并不是一件容易的事情,需要持之以恒的学习。

Cydia/Sileo

Cydia 和 Sileo 是越狱 iOS 设备上的包管理工具(同时也是以 APP 的形式存在)。类似于 MacOS 上的 homebrew 。可以用来安装 APP,命令行工具,Cydia 长期以来被认为是越狱的代表,是大多数越狱的首选包管理器。saurik 是 Cydia 的原始创建者已经停止维护该项目,但近年来 Sam Bingner 已更新适用于现代设备和 iOS 版本的软件。SileoAmy 维护的包管理器,适用于 iOS 11 及更高版本。Sileo 以其基于 Swift 的设计、快速性能和总体质量改进(例如适当的 iPad 支持)而自豪。使用哪个取决于你的越狱工具使用了哪个包管理器。本人使用的是基于 checkra1n 越狱的 iPhone 5s iOS 12.5.7 设备,checkra1n 使用 Cydia 作为包管理器。

SpringBoard

SpringBoard 是一个 iOS 系统自带的 APP,它是 iOS 设备的主屏幕和应用程序管理器。在 iOS 中,SpringBoard 负责处理用户与设备的交互,以及展示和管理设备上的应用程序图标、文件夹、壁纸等。在使用 Cydia 或 Sileo 安装工具的时候,经常会遇到提示需要重启 SpringBoard。

常用工具/软件包

iOS 设备上

  1. Apple File Conduit 2 (安装该软件包 iFunBox 才可以使用)
  2. Filza File Manager (iOS 上文件浏览器)

Mac 电脑上

  1. iFunBox (Mac上浏览 iPhone 文件系统的浏览器)
  2. go2shell(在 Finder 中直接打开命令行终端的工具)
  3. iTerm2 (系统 terminal 的替代品,功能更强大更好用)

还有爱思助手,在使用爱思的过程中大概率 Mac 和 iPhone 都会自动安装上,所以就不添加了。以上只是目前暂时需要的一些常用工具,后续的学习会需要安装更多其他工具。

参考资料