前言
最近 iOS 逆向莫名火了起来,从逆向课程到最近阿里的大神出了一本《iOS应用逆向与安全》,看到圈子一直在刷着,按捺不住躁动的心想学习,恰逢这几天有机会拿到越狱设备机器,于是开始一次 iOS 逆向之旅。
准备
越狱设备一台(最好是9.0 - 9.1系统,支持完美越狱,9.2-9.3.3也是可以重启再越狱的)
MonkeyDev (用于重签安装 ipa)
Cycript (用于hook正在运行的进程,能够在运行时修改应用的很多东西)
Clutch (用于砸壳,当然还有其他工具)
开始砸壳
先确定你的设备跟电脑处于同一网段且打开 openssh ,用 ssh 命令登录到设备
ssh root@192.168.2.3
密码一般是 alpine
将下载好的 Clutch 传输到设备的 /usr/bin 下, 在 Mac 中执行
scp Clutch-2.0.4 root@192.168.2.3:/usr/bin
传输完成后到目录下修改文件名把带 "-2.xxx" 后面的去掉,在设备中执行
cd /usr/bin
mv Clutch-2.0.4 Clutch
据说 Clutch 此工具使用比较简单,但有时候好像有些问题,我所用的设备用这个没砸出来,后来托了哥们的手机砸出来了,还有另外的dumpdecrypted工具,使用方法自行 Google ,dumpdecrypted 需要 hook 到进程,由于种种原因,打不开我要砸壳的 App ,至今未解,可能是设备问题?另外 Clutch 砸出来的是 ipa 后缀,dumpdecrypted 砸出来 是 decrypted 后缀,可以多尝试,下面说 Clutch 的用法,刚才我们已经把 Clutch 放入手机设备中,接着执行
Clutch -i
可列出设备中的 App 信息:
下一步选择你想砸的 App ,可用序号也可用 Bundle ID 如:
Clutch -d 4 此命令等价于 Clutch -d com.tencent.xin
接着神奇的事情即将发生
到此砸壳成功,并且会告诉你 ipa 的目录,到目录下将 ipa 包 scp 到 Mac 上即可,也可以采用 itools pro 等工具将 ipa 包导出。
当然也可能出现砸壳失败的情况: (原因未知,可能是设备打不开 App 的问题)
很多人都是第三方软件导出出现问题,这里最简单的方法就是用 scp 命令传输,先 cd 到上边给出的目录,然后 mv 改一下这个这么长的命名,不然的话转义字符好像也会有点问题,这里 mv com.xxxxx.ipa wechat.ipa
scp 从远程传到本地桌面命令 scp root@地址:包的全路径 ~/Desktop
至此导包成功,顺便讲下我们用 scp 和 ssh 都是可以不用接USB到电脑的,只要保持手机设备和 Mac 在统一网段就可以了,第三方软件需要 USB 接上Mac 导包,scp 和 ssh 走的都是22号端口,ftp是21号端口,telnet是23号端口,所以22合并了两者可以登录和做文件传输,有兴趣的朋友可以自行 Google ssh22号端口的由来。
拿到 ipa 包之后借助某阿里某大神的工具 MonkeyDev 可以进行重签,工具的安装使用方法就直接看 wiki 吧,默认集成了 Reveal 、Cycript 、class-dump ,利用自己的开发者账号重新编译至真机即可调试。
class-dump 导出头文件
简单导头文件可直接用命令,先解压 ipa 包,mkdir 创建一个文件夹,执行:
class-dump -H 你的app(注意是.app后缀) -o 文件夹
即可导出头文件,当然用MonkeyDev编译导出的亦可
Cycript报错
Cycript 走的是 6666 号端口,到 Cycript 文件夹下 ./cycript -r 设备地址:6666
连接的时候可能会出现以下问题:
dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
Referenced from: /Users/Jveryl/Desktop/Crash/cycript_0/Cycript.lib/cycript-apl
Reason: image not found
原因是缺失 ruby 的库,看了别的方法是关闭 SIP 之类的,后面找到比较简单的解决方法如下:
1.先安装brew
2.用brew安装ruby@2.0 brew install ruby@2.0
3.安装成功后把/usr/local/Cellar/ruby@2.0/2.0.0-p648_2/lib/libruby.2.0.0.dylib拷贝到Cycript.lib目录下再次执行即可
Reveal 报升级
MonkeyDev 的 RevealServer.framework 版本好像比官方的低了,如果报错说需要升级的话,到官网下载新版找到新的 RevealServer.framework 替换掉Mac系统中路径 /opt/MonkeyDev 下的 framework 即可。
Xcode重签名安装到设备的时候安装失败
解决办法: 直接
cmd+shift+k
clean一下重新编译
后记
总算也是有机会接触 iOS 逆向了,踩了不少坑,完全是站在巨人的肩膀上编程,据说今天 iOS 11.3.1 越狱 也开放了,大家可以试试,感谢开源,感谢巨人们的贡献,此次的砸壳重签安装到此就结束啦,有任何问题疑虑的朋友欢迎留言讨论指正。