libimobiledevice/libimobiledevice
GitHub: libimobiledevice/libimobiledevice
一个跨平台的开源协议库,无需越狱即可通过原生协议与 iOS 设备通信,提供文件访问、备份恢复、应用管理、调试代理等全面的设备交互能力。
Stars: 7810 | Forks: 1489
# libimobiledevice
*一个使用原生协议与 iOS 设备上的服务进行通信的库。*

## 特性
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, 云资产清单, 原生协议, 威胁情报, 安全决策支持, 安全测试工具, 安装与卸载应用, 定位修改, 客户端加密, 崩溃报告, 应用管理, 开发者工具, 开源协议库, 截屏, 文件系统访问, 无越狱, 目录枚举, 移动安全, 移动设备管理, 系统日志, 网络连接, 设备信息获取, 设备激活, 设备调试, 诊断信息, 调试连接, 跨平台库, 远程调试, 逆向工具, 逆向工程, 配置文件管理