返回更新列表
新发布Sep 12, 2026

ipsw v3.1.716

iOS/macOS 研究瑞士军刀

分享

IPSW Logo

ipsw

iOS/macOS 研究瑞士军刀


ipsw 是一个用于 Apple 固件研究与逆向工程的命令行工具包。可下载并解包 IPSW 和 OTA,检查 Mach-O 二进制文件与 dyld 共享缓存,分析 kernelcache,并与连接的 iOS 设备进行交互。

Agent skill · 安装 · CLI 示例 · 文档

将 ipsw 与 AI agent 配合使用

如果你在 Claude Code、Codex、Gemini CLI 或其他支持 skills 的 agent 中工作,请从 ipsw-skill 开始。它为 agent 提供了用于固件提取、二进制分析和 Apple 平台研究的命令参考与工作流。

安装 ipsw CLI,然后添加该 skill:

npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw

之后你就可以用自然语言提出任务。例如:

下载 iPhone 15 Pro 的最新 IPSW 并提取其 kernelcache。

从这个 dyld 共享缓存中转储 SpringBoardServices 的 Objective-C 头文件。

比较这两个 kernelcache 中的 KEXT。

skill README 中包含了针对各个 agent 的设置说明,包括 Claude Code 插件和 Gemini CLI 扩展。

安装

macOS

维护者的 Homebrew tap 包含 extras 构建:

brew install blacktop/tap/ipsw

Homebrew 核心 formula 也可用:brew install ipsw。

Linux

sudo snap install ipsw

Windows

scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw

你也可以从 GitHub Releases 下载二进制文件。其他软件包和可选依赖请参阅安装指南。某些命令依赖于宿主操作系统或构建变体;例如 Frida 支持有单独的构建。

你可以做什么

领域工具
固件下载 IPSW、OTA、macOS 安装器、Xcode 和 KDK;提取组件并比较构建
Mach-O检查加载命令、符号、签名和 entitlements;反汇编 ARM64 代码
dyld 共享缓存查找符号和交叉引用,提取 dylib,转储 Objective-C 头文件,并检查 Swift 元数据
内核提取 KEXT,检查系统调用和符号,并比较 kernelcache
固件组件解析 IMG4,解密 AEA 归档,并检查 iBoot 和协处理器固件
设备列出设备和应用,使用 AFC 传输文件,捕获日志,并挂载开发者镜像
App Store Connect管理证书、bundle ID、设备和描述文件
研究符号化崩溃日志,通过 SSH 调试,使用 Frida 进行跟踪,并使用 LLM 反编译

CLI 示例

请将示例文件路径替换为你自己的路径。运行 ipsw --help,或在任何子命令后添加 --help 以查看其选项。

下载并提取固件

# Download the latest IPSW for iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest

# Inspect a local IPSW and extract its kernelcache
ipsw info /path/to/firmware.ipsw
ipsw extract --kernel /path/to/firmware.ipsw

# Compare two firmware builds
ipsw diff /path/to/old.ipsw /path/to/new.ipsw

探索 dyld 共享缓存

ipsw dyld info /path/to/dyld_shared_cache_arm64e

# Extract Foundation for use in other tools
ipsw dyld extract /path/to/dyld_shared_cache_arm64e Foundation

# Dump headers directly from the cache
ipsw class-dump /path/to/dyld_shared_cache_arm64e SpringBoardServices --headers -o headers

可直接使用缓存进行 Objective-C 分析:提取出的 dylib 仍可引用存储在缓存中其他位置的元数据。

检查二进制文件和 kernelcache

# Select an architecture explicitly for universal binaries
ipsw macho info /path/to/binary --arch arm64e
ipsw macho disass /path/to/binary --arch arm64e --symbol _main

# Search a directory of binaries for an imported symbol
ipsw macho search /path/to/binaries --import 'CCCrypt'

# List KEXTs, then extract one by its full bundle ID
ipsw kernel kexts /path/to/kernelcache
ipsw kernel extract /path/to/kernelcache com.apple.driver.ASIOKit -o kexts

与连接的设备交互

ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog

使用 LLM 反编译

macho disass 和 dyld disass 命令可以通过 --dec 将反汇编发送到已配置的 LLM 提供商。有关提供商设置、模型选择和示例,请参阅反编译器指南。

配置与自动化

CLI 从 ~/.config/ipsw/config.yaml 读取 YAML 配置;使用 --config 选择其他文件。有关设置和环境变量,请参阅 config.example.yml 和配置指南。

对于脚本,在打开通用二进制文件时使用 --arch 选择架构,并在短名称有歧义时使用完整的 dylib 路径。支持 --json 的命令会在其帮助中说明。

独立的 ipswd 守护进程公开了一个用于自动化的 REST API。请参阅 API 参考。

文档与社区

报告 bug 时,请包含 ipsw version、你运行的命令,以及相关的固件构建或文件类型。请从日志和崩溃报告中隐去个人信息。

构建与贡献

从源码构建需要 Go 1.26 或更高版本,以及用于 CGO 的 C 工具链:

git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build

开发和贡献指南请参阅 CONTRIBUTING.md。

致谢

感谢 Jonathan Levin 的工具和 iOS 内部机制文档、Apple 安全研究社区,以及所有贡献代码、bug 报告和研究的人。

许可证

MIT。

分类