libimobiledevice/libimobiledevice

GitHub: libimobiledevice/libimobiledevice

一个跨平台的开源协议库,无需越狱即可通过原生协议与 iOS 设备通信,提供文件访问、备份恢复、应用管理、调试代理等全面的设备交互能力。

Stars: 7810 | Forks: 1489

# libimobiledevice *一个使用原生协议与 iOS 设备上的服务进行通信的库。* ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0bcfc33db6092708.svg) ## 特性 libimobiledevice 是一个跨平台的软件库,实现了用于与 iOS 设备进行交互的协议。 与其他项目不同,它不依赖于任何现有的专有库,也不需要越狱。 一些主要特性包括: - **接口**:为设备服务实现了许多高级接口 - **实现**:面向对象的架构和服务抽象层 - **跨平台:** 在 Linux、macOS、Windows 和 Android 平台上经过测试 - **实用工具**:为设备服务提供了各种命令行实用工具 - **SSL**:允许在 OpenSSL、GnuTLS 或 MbedTLS 之间进行选择以处理 SSL 通信 - **网络**:支持与启用了“WiFi 同步”的设备进行网络连接 - **Python:** 提供基于 Cython 的 Python 绑定 许多设备服务协议的已实现接口允许应用程序: * 访问设备的文件系统 * 访问文件共享应用的文档 * 获取有关设备的信息并修改各种设置 * 以与 iTunes 兼容的原生方式备份和恢复设备 * 管理设备上的应用图标排列 * 安装、移除、列出以及基本管理应用 * 使用官方服务器激活设备 * 管理联系人、日历、备忘录和书签 * 获取和移除崩溃报告 * 获取各种诊断信息 * 建立用于应用调试的调试连接 * 挂载文件系统映像 * 转发设备通知 * 管理设备描述文件 * 对设备屏幕进行截屏(需要挂载开发者映像) * 模拟设备地理位置的更改(需要挂载开发者映像) * 中继设备的 syslog * 暴露一个用于 WebKit 远程调试的连接 ……以及更多功能。 该库自 2007 年 8 月以来一直在开发中,旨在为 Linux 桌面带来对这些设备的支持。 ## 安装 / 快速入门 ### Debian / Ubuntu Linux 首先安装所有必需的依赖项和构建工具: ``` sudo apt-get install \ build-essential \ pkg-config \ checkinstall \ git \ autoconf \ automake \ libtool-bin \ libplist-dev \ libusbmuxd-dev \ libimobiledevice-glue-dev \ libtatsu-dev \ libssl-dev \ usbmuxd ``` 注意:[libtatsu](https://github.com/libimobiledevice/libtatsu)(以及因此需要的 `libtatsu-dev`) 是一个刚发布不久的新库,你必须 [从源代码构建它](https://github.com/libimobiledevice/libtatsu?tab=readme-ov-file#building)。 如果你有选择性地想要构建文档或 Python 绑定,请使用: ``` sudo apt-get install \ doxygen \ cython ``` 然后克隆实际的项目仓库: ``` git clone https://github.com/libimobiledevice/libimobiledevice.git cd libimobiledevice ``` 现在你可以构建并安装它: ``` ./autogen.sh make sudo make install ``` 如果你需要自定义前缀或将其他选项传递给 `./configure`, 你可以像这样直接将它们传递给 `./autogen.sh`: ``` ./autogen.sh --prefix=/opt/local --enable-debug make sudo make install ``` 默认情况下,OpenSSL 将被用作 TLS/SSL 库。如果你倾向于使用 GnuTLS, 请像这样使用 `--with-gnutls` 进行配置: ``` ./autogen.sh --with-gnutls ``` 同时也支持 MbedTLS,可以通过向 configure 传递 `--with-mbedtls` 来启用。 如果 mbedTLS 没有安装在默认位置,你需要将环境变量 `mbedtls_INCLUDES` 设置为包含 MbedTLS 头文件的路径,并设置 `mbedtls_LIBDIR` 来指定库路径。可选地, `mbedtls_LIBS` 可用于直接设置库名称。示例: ``` ./autogen.sh --with-mbedtls mbedtls_INCLUDES=/opt/local/include mbedtls_LIBDIR=/opt/local/lib ``` ## 用法 目前尚无关于在应用程序中使用该库的文档。 目前的“极客方法”是查看所包含实用工具的实现。 ### 实用工具 该库在 tools 目录中捆绑了以下命令行实用工具: | 实用工具 | 描述 | | -------------------------- | ------------------------------------------------------------------ | | `idevice_id` | 列出已连接的设备或打印给定设备的设备名称 | | `idevicebackup` | 为设备创建或恢复备份(旧版) | | `idevicebackup2` | 为运行 iOS 4 或更高版本的设备创建或恢复备份 | | `idevicebtlogger` | 从设备捕获 Bluetooth HCI 流量(需要日志配置文件) | | `idevicecrashreport` | 从设备获取崩溃报告 | | `idevicedate` | 显示当前日期或在设备上设置日期 | | `idevicedebug` | 与设备的 debugserver 服务进行交互 | | `idevicedebugserverproxy` | 代理来自设备的 debugserver 连接以进行远程调试 | | `idevicediagnostics` | 与设备的诊断接口进行交互 | | `ideviceenterrecovery` | 使设备进入恢复模式 | | `ideviceimagemounter` | 在设备上挂载磁盘映像 | | `ideviceinfo` | 显示有关已连接设备的信息 | | `idevicename` | 显示或设置设备名称 | | `idevicenotificationproxy` | 在设备上发送或观察通知 | | `idevicepair` | 管理主机与设备及 usbmuxd 的配对 | | `ideviceprovision` | 管理设备上的描述文件 | | `idevicescreenshot` | 从已连接的设备获取屏幕截图 | | `idevicesetlocation` | 在设备上模拟位置 | | `idevicesyslog` | 中继已连接设备的 syslog | | `afcclient` | 通过 AFC/HouseArrest 与设备文件系统进行交互 | 请查阅每个实用工具的使用信息或手册页,以获取有关可用命令行选项和使用示例的文档,如下所示: ``` ideviceinfo --help man ideviceinfo ``` ## 链接 * 主页:https://libimobiledevice.org/ * 仓库:https://github.com/libimobiledevice/libimobiledevice.git * 仓库(镜像):https://git.libimobiledevice.org/libimobiledevice.git * 问题追踪器:https://github.com/libimobiledevice/libimobiledevice/issues * 邮件列表:https://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel * Twitter:https://twitter.com/libimobiledev ## 许可证 该库和实用工具根据 [GNU Lesser General Public License v2.1](https://www.gnu.org/licenses/lgpl-2.1.en.html) 获得许可, 同样包含在仓库的 `COPYING` 文件中。 ## 致谢 Apple、iPhone、iPad、iPod、iPod Touch、Apple TV、Apple Watch、Mac、iOS、 iPadOS、tvOS、watchOS 和 macOS 是 Apple Inc. 的商标。 本项目是一个独立的软件,并未被 Apple Inc. 授权、赞助或以其他方式批准。 README 更新于:2024-10-22
标签:Android, C/C++, Cython, DSL, GnuTLS, iOS取证, iOS设备通信, iTunes备份与恢复, libimobiledevice, MbedTLS, MDM, OpenSSL, Python绑定, SSL/TLS, WebKit调试, WiFi同步, 事务性I/O, 云资产清单, 原生协议, 威胁情报, 安全决策支持, 安全测试工具, 安装与卸载应用, 定位修改, 客户端加密, 崩溃报告, 应用管理, 开发者工具, 开源协议库, 截屏, 文件系统访问, 无越狱, 目录枚举, 移动安全, 移动设备管理, 系统日志, 网络连接, 设备信息获取, 设备激活, 设备调试, 诊断信息, 调试连接, 跨平台库, 远程调试, 逆向工具, 逆向工程, 配置文件管理