iOS 逆向学习

前言

本文主要对iOS逆向所需要的工具或者基础做一个大概的总结,如果有什么遗漏或者错误,欢迎读者指出。
想要进行逆向开发,首先就是要对APP进行砸壳,砸壳又需要越狱,当然也可以直接去一些平台下载砸壳后的APP进行逆向,砸壳后就需要对APP进行静态分析和动态分析,用reveal查看视图结构,用hopper查看汇编信息等等。

越狱

iOS12可用unc0ver进行越狱,至于其他iOS版本可自己查阅相关资料
iOS12越狱可参考https://zhuanlan.zhihu.com/p/58097735
iOS13之后可使用checkra.in

SSH

越狱后可以安装OpenSSHadv-cmds方便电脑远程连接手机
WiFi连接:
先确保手机和电脑通处于一个Wifi环境,在手机的网络设置里面找到当前的IP地址

1
$ ssh root@127.0.2.3

root用户的默认密码为:alpine,登录成功后可执行 passwd 修改密码
USB连接:
手机先usb连接电脑
首先安装usbmuxd

1
$ brew install usbmuxd

然后进行端口映射

1
$ iproxy 2222 22

把当前连接设备的22端口映射到电脑的2222端口上
最后进行连接

1
$ ssh -p 2222 root@127.0.0.1

免密登录:
先查看本地(MAC)之前是否已经生成过RSA公私钥,直接进入目录.ssh下查看,如果其中有id_rsa和id_rsa.pub即代表已有,无需重新生成
如果没有,直接使用如下命令生成新的

1
$ ssh-keygen

接着会出现一些问题,全部留空,直接回车即可。之后就可以发现目录.ssh下有了id_rsa和id_rsa.pub了
然后就是将本地公钥发到iPhone端

1
$ ssh-copy-id root@localhost -p 2222

砸壳

Appstore下载的应用都是加密的,可以使用otool查看是否加密
otool -l ting | grep crypt
使用monkeyDev大神的frida-ios-dump可以实现一键砸壳,非常方便,具体使用方法可参考GitHub

class-dump

class-dump 是一个工具,它利用了 Objective-C 语言的运行时特性,将存储在 Mach-O 文件中的头文件信息提取出来,并生成对应的 .h 文件。
安装class-dump:
可以在其class-dump 官网下载,将里面的 class-dump 直接放在/usr/local/bin 目录,并给个可执行权限即可 如果/usr/local/bin没有添加到PATH,请自行添加
class-dump使用:
把砸壳后的ipa文件解压得到payload文件夹。文件夹里面就是.app文件,终端cd到.app文件,然后执行class-dump的命令
$class-dump -H WeChat -o ~/Desktop/wechatHeader

hopper

把砸壳后的可执行文件拖到hopper里面就可以查看对应的汇编代码,可以根据汇编进行自己的逻辑验证

逆向调试

使用monkeyDev大神的无须越狱、自动集成、只需要一个砸壳的应用可以调试砸壳后的应用