跳过内容

MASTG-TECH-0056: 安装应用

当您在不使用 Apple App Store 的情况下安装应用程序时,这称为侧载。侧载有多种方式,下面会进行介绍。在 iOS 设备上,实际的安装过程由 installd 守护进程处理,它会解压缩并安装应用程序。为了集成应用程序服务或安装在 iOS 设备上,所有应用程序必须使用 Apple 颁发的证书进行签名。这意味着应用程序只有在成功完成代码签名验证后才能安装,这在 IPA 文件签名中进行了解释。

禁用签名验证 (可选): 在越狱设备上,您可以使用 AppSync Unified绕过签名验证的要求,它会钩住适当的系统守护进程,并在启用时禁用使用以下列出的工具进行的任何安装的签名验证。

存在不同的方法可以将 IPA 包安装到 iOS 设备上,下面会详细介绍。

Sideloadly

Sideloadly是一个 GUI 工具,可以自动完成您所需的所有步骤。它需要有效的 Apple 开发者凭据,因为它将从 Apple 服务器获取有效的签名。

只需通过 USB 连接您的设备,输入您的 Apple ID,然后将 IPA 文件拖放到 SideLoadly 上。单击“开始”以自动签名并安装给定的 IPA。

libimobiledevice

在 Linux 和 macOS 上,您可以选择使用 libimobiledevice suite。这允许您通过执行 ideviceinstaller 通过 USB 连接安装应用程序。该连接通过 USB 多路复用守护进程 usbmuxd 实现,该守护进程提供通过 USB 的 TCP 隧道。

让我们使用以下命令安装 iGoat-Swift 应用程序

$ ideviceinstaller -i Uncrackable.ipa
...
Install: Complete

Filza

Filza 允许您安装已位于您设备上的 IPA 文件。您可以使用 scp ( 主机-设备数据传输) 或 AirDrop 将 IPA 文件复制到您的设备,之后您只需导航到文件系统上的 IPA 文件,然后单击右上角的 安装 按钮即可。

ipainstaller

也可以通过命令行使用 ipainstaller 将 IPA 直接安装在 iOS 设备上。当然,这需要越狱设备,否则您无法通过 SSH 连接到设备。将文件复制到设备后,例如通过 scp ( 主机-设备数据传输) 或 AirDrop,您可以使用 IPA 的文件名执行 ipainstaller

ipainstaller Uncrackable.ipa

ios-deploy

在 macOS 上,您还可以使用 ios-deploy 工具从命令行安装 iOS 应用程序。您需要解压缩 IPA,因为 ios-deploy 使用应用程序包来安装应用程序。

unzip UnCrackable.ipa
ios-deploy --bundle 'Payload/UnCrackable Level 1.app' -W -v

xcrun

安装 Xcode 命令行工具后,您可以执行以下命令来安装签名的 IPA

# Get the correct device id
$ xcrun devicectl list devices
Devices:
Name                 Hostname                                     Identifier                             State                Model
------------------   ------------------------------------------   ------------------------------------   ------------------   ------------------------------
Foobar               00008101-00FF28803FF9001E.coredevice.local   ABD1F3D8-7BC1-52CD-8DB6-9BFD794CE862   available (paired)   iPhone 14 Pro Max (iPhone15,3)

$ xcrun devicectl device install app --device 00008101-00FF28803FF9001E ~/signed.ipa
11:59:04  Acquired tunnel connection to device.
11:59:04  Enabling developer disk image services.
11:59:04  Acquired usage assertion.
4%... 12%... 28%... 30%... 31%... 32%... 33%... 35%... 36%... 37%... 39%... 40%... 42%... 43%... 45%... 49%... 51%... 52%... 54%... 55%... 57%... 59%... 60%... 62%... 66%... 68%... 72%... 76%... 80%... 84%... 88%... 92%... 96%... Complete!
App installed:
• bundleID: org.mas.myapp
• installationURL: file:///private/var/containers/Bundle/Application/DFC99D25-FC36-462E-91D2-18CDE717ED21/UnCrackable%20Level%201.app/
• launchServicesIdentifier: unknown
• databaseUUID: DA52A5EB-5D39-4628-810E-8F42A5561CDF
• databaseSequenceNumber: 1516 options:

Xcode

也可以使用 Xcode IDE 通过执行以下步骤来安装 iOS 应用程序

  1. 启动 Xcode
  2. 选择 窗口/设备和模拟器
  3. 选择连接的 iOS 设备,然后单击 已安装的应用 中的 + 符号。

允许在非 iPad 设备上安装应用程序

有时应用程序可能需要在 iPad 设备上使用。如果您只有 iPhone 或 iPod touch 设备,则可以强制应用程序接受在这些类型的设备上安装和使用。您可以通过将 Info.plist 文件中 UIDeviceFamily 属性的值更改为 1 来执行此操作。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

  <key>UIDeviceFamily</key>
  <array>
    <integer>1</integer>
  </array>

</dict>
</plist>

请注意,更改此值会破坏原始签名,因此您必须重新签名 IPA ( IPA 文件签名) 以将其安装在未禁用签名验证的设备上。

如果应用程序需要特定于现代 iPad 的功能,而您的 iPhone 或 iPod touch 稍微旧一些,则此绕过可能不起作用。

可以在 Apple 开发者文档中找到属性 UIDeviceFamily 的可能值。