iOS Basic Testing Operations
iOS设备识别和访问摘要
识别iOS设备的UDID
为了唯一识别iOS设备,使用一个称为UDID的40位数字序列。在macOS Catalina或更新版本中,可以在Finder应用程序中找到UDID,因为iTunes不再存在。一旦通过USB连接设备并在Finder中选择,当单击其名称下的详细信息时,设备会显示其UDID以及其他信息。
在Catalina之前的macOS版本中,iTunes可以帮助发现UDID。可以在这里找到详细的说明。
命令行工具提供了检索UDID的替代方法:
使用I/O Registry Explorer工具
ioreg
:
在 macOS(和 Linux)上使用
ideviceinstaller
:
利用
system_profiler
:
使用
instruments
列出设备:
访问设备 Shell
安装 OpenSSH package 后,可以通过 ssh root@<device_ip_address>
进行 SSH 访问。重要的是要更改用户 root
和 mobile
的默认密码 (alpine
) 以保护设备安全。
在没有 Wi-Fi 的情况下,通过 USB 进行 SSH 变得必要,使用 iproxy
来映射设备端口以进行 SSH 连接。通过运行以下设置,可以通过 USB 实现 SSH 访问:
设备上的Shell应用程序,如NewTerm 2,促进了直接设备交互,特别适用于故障排除。反向SSH shell也可以建立,以便从主机计算机进行远程访问。
重置忘记的密码
要将忘记的密码重置为默认值(alpine
),需要编辑/private/etc/master.passwd
文件。这涉及将现有哈希替换为root
和mobile
用户条目旁边alpine
的哈希。
数据传输技术
传输应用数据文件
通过SSH和SCP进行归档和检索: 使用tar
归档应用程序的Data目录,然后使用scp
传输是直截了当的。下面的命令将Data目录归档为.tgz文件,然后从设备中拉取:
图形用户界面工具
使用 iFunbox 和 iExplorer: 这些图形用户界面工具可用于管理 iOS 设备上的文件。然而,从 iOS 8.4 开始,除非设备已越狱,否则苹果限制了这些工具对应用沙盒的访问权限。
使用 Objection 进行文件管理
使用 Objection 进行交互式 Shell: 启动 objection 可访问应用程序的 Bundle 目录。从这里,您可以导航到应用程序的 Documents 目录,并管理文件,包括将它们从 iOS 设备下载和上传。
获取和提取应用程序
获取IPA文件
通过空中下载(OTA)分发链接: 通过OTA分发的应用程序可以使用ITMS服务资产下载工具进行下载,该工具通过npm安装,并用于将IPA文件保存在本地。
提取应用程序二进制文件
从IPA文件中: 解压IPA文件以访问解密的应用程序二进制文件。
从越狱设备中: 安装应用程序并从内存中提取解密后的二进制文件。
解密过程
手动解密概述: iOS应用程序二进制文件由苹果使用FairPlay加密。要进行逆向工程,必须从内存中转储解密后的二进制文件。解密过程涉及检查PIE标志,调整内存标志,识别加密部分,然后转储并用解密后的形式替换此部分。
检查和修改PIE标志:
识别加密部分并转储内存:
使用 otool
确定加密部分的起始和结束地址,并使用 gdb 从越狱设备转储内存。
覆盖加密部分:
用解密的转储数据替换原始应用程序二进制文件中的加密部分。
完成解密: 使用诸如MachOView之类的工具修改二进制文件的元数据,将cryptid
设置为0,表示没有加密。
解密(自动)
frida-ios-dump
frida-ios-dump工具用于从iOS设备中自动解密和提取应用程序。首先,必须配置dump.py
以连接到iOS设备,可以通过iproxy在端口2222上通过本地主机连接,也可以直接通过设备的IP地址和端口连接。
可以使用以下命令列出设备上安装的应用程序:
要转储特定应用程序,如Telegram,使用以下命令:
这个命令启动应用程序转储,导致在当前目录中创建一个Telegram.ipa
文件。这个过程适用于越狱设备,因为未签名或伪签名的应用可以使用像ios-deploy这样的工具重新安装。
flexdecrypt
flexdecrypt工具及其包装器flexdump允许从已安装的应用程序中提取IPA文件。在设备上安装flexdecrypt的安装命令包括下载和安装.deb
软件包。flexdump可用于列出和转储应用程序,如下所示的命令:
bagbak
bagbak, 另一个基于Frida的工具,需要越狱设备进行应用程序解密:
r2flutch
r2flutch利用radare和frida,用于应用程序解密和转储。更多信息可以在其GitHub页面找到。
安装应用程序
侧载指的是在官方App Store之外安装应用程序。这一过程由installd守护程序处理,并需要应用程序使用由苹果签发的证书进行签名。越狱设备可以通过AppSync绕过这一过程,从而可以安装伪签名的IPA包。
侧载工具
Cydia Impactor:用于在iOS上签名和安装IPA文件以及在Android上安装APK文件的工具。可以在yalujailbreak.net上找到指南和故障排除信息。
libimobiledevice:用于Linux和macOS的库,用于与iOS设备通信。提供了用于通过USB安装应用程序的ideviceinstaller的安装命令和使用示例。
ipainstaller:这个命令行工具允许直接在iOS设备上安装应用程序。
ios-deploy:对于macOS用户,ios-deploy可以通过命令行安装iOS应用程序。解压IPA并使用
-m
标志进行直接应用程序启动是该过程的一部分。Xcode:利用Xcode通过导航到Window/Devices and Simulators并将应用程序添加到Installed Apps来安装应用程序。
允许在非iPad设备上安装应用程序
要在iPhone或iPod touch设备上安装专为iPad设计的应用程序,需要将Info.plist文件中的UIDeviceFamily值更改为1。然而,由于签名验证检查,这种修改需要重新签名IPA文件。
注意:如果应用程序要求具有较新iPad型号独有的功能,而使用较旧的iPhone或iPod touch,则此方法可能失败。
参考资料
最后更新于