环境准备
使用USB调试iphone
用wifi调试的时候,会觉得有些卡壳,所以,改用USB,这样速度会明显提升。使用USB连接,需要安装usbmuxd,安装以后,做端口转发即可。
ssh连接越狱iPhone
usbmuxd自带工具iproxy,iproxy可以快捷连接iPhone操作。由于Mac上只支持4位的端口号,所以需要把iPhone的默认端口22映射到Mac上,相当于建立一个Mac和iPhone的通道。
终端输入:
iproxy 25025 22
然后会自动显示如下等待连接字样
waiting for connection
在另外一个终端输入:
ssh -p 25025 root@127.0.0.1
下面的nohup命令是让iproxy在后台运行,这样,可以避免起多个terminal:
nohup iproxy 25025 22 > /dev/null 2>&1 &
ssh root@localhost -p 25025
默认密码
越狱以后的默认密码:alpine
免密登录
在/var/root/.ssh/authorized_keys文件中添加本机的id_rsa.pub内容,可以实现免密ssh登录iOS。
数据传输
scp -P 25025 image.jpg root@localhost:/var/mobile/Containers/Data/Application/498DC197-C1C2-46B0-A828-3AF1E9C36CE1/tmp/
静态分析篇
要对一个iOS应用进行分析,尤其是有壳的应用程序,需要先砸壳。下面就从砸壳开始说起,如果没有壳,也不影响,可以将应用程序dump成IPA,方便进一步分析。
iOS应用程序砸壳
使用dumpdecrypted砸壳
下面就介绍砸壳的过程:
- 下载和编译下面的dumpdecrypted,编译完成以后,会生成dumpdecrypted.dylib
参考:https://github.com/stefanesser/dumpdecrypted
- 将dumpdecrypted.dylib拷贝到当前权限可以写的目录下(看到不少文章写要放在对应的document目录,应该是对于没有越狱的iphone,有权限限制的问题)
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/AAA.app/AAA
- 执行完成以后,就会发现有一个AAA.decrypted的程序,这样,就解决加壳的问题了。
使用frida-ios-dump砸壳(推荐使用)
除了上面的方法,还有使用frida-ios-dump的一键砸壳,可以参考:
http://www.alonemonkey.com/2018/01/30/frida-ios-dump/
这种方法对于动态库(dylib)加壳是非常有用的,可以方便处理。默认dump.py使用的事2222端口,所以,需要将2222映射到IOS的22端口上。
nohup iproxy 2222 22 > /dev/null 2>&1 &
frida-ios-dump之前的版本,在Frida 12.5.0以后,存在兼容性问题,不过,后面作者修改了code,已经解决了。所以,如果你的Frida版本高于12.5.0,一定要用最新版的frida-ios-dump。
# 列出iOS设备上的应用程序
python dump.py -l
PID Name Identifier
---- ---