首先确保你的Mac已经连接上了越狱的手机,这里建议用USB连接,更稳定。
详情参考这篇文章
连接完之后,就可以开始我们的工作啦。
首先,找到你要提取的app在哪个目录里。我们需要先把所有在后台或者在前台运行的APP干掉。方法是双击iPhone的home键,然后把多任务栏中的所有界面清空。
然后,打开你要提取的APP,让他在前台运行着。
这时候在终端上输入(若未特殊说明,文中终端都指已经连接上手机的终端窗口):
ps -ef
这条命令打印出了所有正在手机上运行的进程,像这样:
UID PID PPID C STIME TTY TIME CMD
0 1 0 0 0:00.00 ?? 0:27.35 /sbin/launchd
0 24 1 0 0:00.00 ?? 0:00.89 /usr/sbin/syslogd
0 44 1 0 0:00.00 ?? 0:23.63 /usr/libexec/logd
0 92 1 0 0:00.00 ?? 0:00.62 /System/Library/PrivateFrameworks/MobileInstallation.framework/XPCServic
501 122 1 0 0:00.00 ?? 0:00.12 /System/Library/PrivateFrameworks/IMDPersistence.framework/XPCServices/I
501 151 1 0 0:00.00 ?? 0:00.15 /System/Library/PrivateFrameworks/Accessibility.framework/Frameworks/AXH
0 161 1 0 0:00.00 ?? 0:01.09 /System/Library/CoreServices/ReportCrash com.apple.ReportCrash.SimulateC
501 207 1 0 0:00.00 ?? 0:00.06 /System/Library/Frameworks/Social.framework/XPCServices/com.apple.facebo
0 354 1 0 0:00.00 ?? 0:00.03 /usr/local/bin/dropbear -F -R -p 127.0.0.1:22
501 1084 1 0 0:00.00 ?? 0:01.84 /var/containers/Bundle/Application/226D2102-E8FE-4C2F-A20A-EB0B95738B6F/
..........
这里需要注意的是,每个进程后面都跟着可执行文件的路径,而这个路径显示多少是根据你的终端窗口大小走的,所以,你的终端能拉多大拉多大,至少要保证你能看到子文件的路径,而不是到像Application、Bundle这种公共文件的路径。
这里就是考验大家iOS基础知识的地方了,我们都知道,一般从App Store下载的App,他的路径是这样的/var/containers/Bundle/Application/xxxxxxxxxx。仔细观察上面的进程,发现还真有一个/var/containers/Bundle/Application/226D2102-E8FE-4C2F-A20A-EB0B95738B6F/…….这样的进程存在,这下就知道为什么第一步要你把所有App都干掉,然后打开目标App了吧,不然很多App在运行,你就不知道目标进程是哪一个了。
找到文件的路径,直接cd进入该目录:
cd /var/containers/Bundle/Application/226D2102-E8FE-4C2F-A20A-EB0B95738B6F/
ls
发现里面确实有app文件,像这样:
XXXXX.app/ iTunesArtwork iTunesMetadata.plist
找到文件之后,就要想办法把这个文件打包发送到电脑上。
使用下面的命令打包文件 XXXX.tar 到 /tmp 下(名字你随便取,路径也可以随便放到哪,但是你得记得住,下面要用到):
tar -cvf /tmp/XXXX.tar ./
然后出现:
./
./.com.apple.mobile_container_manager.metadata.plist
./XXXXX.app/
./XXXXX.app/AppIcon29x29.png
./XXXXX.app/AppIcon29x29@2x.png
./XXXXX.app/AppIcon29x29@3x.png
./XXXXX.app/AppIcon40x40@2x.png
...........
./iTunesArtwork
./iTunesMetadata.plist
直到压缩完成。
此时新建一个终端窗口,此窗口就是正常的Mac终端窗口,直接输入:
scp -P 2222 root@127.0.0.1:/tmp/XXXXX.tar ~/Desktop
这是利用scp命令,将 XXXXX.tar 文件发送到Mac的桌面上,当然,发送到哪里你随便订,但是tar文件的路径一定不要错。
-P是指定目标端口,在文章开头的链接中,我是用的2222端口,所以这里跟2222,如果是用其他端口,那么这个端口一定要对应。
这里提取的IPA包是未砸壳的包,用处不大,下面的文章会讲如何一键提取已经砸好壳的IPA包。