
ipsw v3.1.716
iOS/macOS 연구용 스위스 아미 나이프
ipsw
iOS/macOS 연구용 스위스 아미 나이프
ipsw는 Apple 펌웨어 연구 및 리버스 엔지니어링을 위한 명령줄 툴킷입니다. IPSW와 OTA를 다운로드하고 압축을 해제하며, Mach-O 바이너리와 dyld shared cache를 검사하고, kernelcache를 분석하며, 연결된 iOS 기기와 함께 작업할 수 있습니다.
Agent skill · 설치 · CLI 예제 · 문서
AI 에이전트와 함께 ipsw 사용하기
Claude Code, Codex, Gemini CLI 또는 스킬을 지원하는 다른 에이전트에서 작업 중이라면 **ipsw-skill**로 시작하세요. 펌웨어 추출, 바이너리 분석, Apple 플랫폼 연구를 위한 명령 참조와 워크플로를 에이전트에 제공합니다.
ipsw CLI를 설치한 다음 스킬을 추가하세요:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
그런 다음 자연어로 작업을 요청할 수 있습니다. 예를 들어:
iPhone 15 Pro용 최신 IPSW를 다운로드하고 kernelcache를 추출해줘.
이 dyld shared cache에서 SpringBoardServices의 Objective-C 헤더를 덤프해줘.
이 두 kernelcache의 KEXT를 비교해줘.
스킬 README에는 Claude Code 플러그인과 Gemini CLI 확장을 포함한 개별 에이전트용 설정 지침이 있습니다.
설치
macOS
메인테이너의 Homebrew tap에는 extras 빌드가 포함되어 있습니다:
brew install blacktop/tap/ipsw
Homebrew core 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에서 바이너리를 다운로드할 수도 있습니다. 다른 패키지와 선택적 종속성에 대해서는 설치 가이드를 참조하세요. 일부 명령은 호스트 OS나 빌드 변형에 따라 달라집니다. 예를 들어 Frida 지원은 별도의 빌드가 있습니다.
할 수 있는 일
| 영역 | 도구 |
|---|---|
| 펌웨어 | IPSW, OTA, macOS 설치 프로그램, Xcode, KDK 다운로드; 구성 요소 추출 및 빌드 비교 |
| Mach-O | 로드 명령, 심볼, 서명, 엔타이틀먼트 검사; ARM64 코드 디스어셈블 |
| dyld shared cache | 심볼 및 상호 참조 찾기, dylib 추출, Objective-C 헤더 덤프, Swift 메타데이터 검사 |
| 커널 | KEXT 추출, 시스템 콜 및 심볼 검사, kernelcache 비교 |
| 펌웨어 구성 요소 | IMG4 파싱, AEA 아카이브 복호화, iBoot 및 코프로세서 펌웨어 검사 |
| 기기 | 기기 및 앱 목록, AFC로 파일 전송, 로그 캡처, 개발자 이미지 마운트 |
| App Store Connect | 인증서, 번들 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 shared cache 탐색
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과 구성 가이드를 참조하세요.
스크립트의 경우 universal 바이너리를 열 때 --arch로 아키텍처를 선택하고, 짧은 이름이 모호할 때는 전체 dylib 경로를 사용하세요. --json을 지원하는 명령은 해당 도움말에 문서화되어 있습니다.
별도의 ipswd 데몬은 자동화를 위한 REST API를 제공합니다. API 참조를 참조하세요.
문서 및 커뮤니티
- Agent skill 및 설정
- 가이드 및 명령 참조
- 미리 계산된 펌웨어 diff
- GitHub Discussions
- 이슈 트래커
- DeepWiki, 코드베이스에 대한 AI 생성 가이드
버그를 보고할 때는 ipsw version, 실행한 명령, 관련 펌웨어 빌드 또는 파일 형식을 포함하세요. 로그와 크래시 보고서에서 개인 정보를 삭제하세요.
빌드 및 기여
소스에서 빌드하려면 Go 1.26 이상과 CGO용 C 툴체인이 필요합니다:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
개발 및 기여 지침은 CONTRIBUTING.md를 참조하세요.
크레딧
도구와 iOS 내부 문서를 제공한 Jonathan Levin, Apple 보안 연구 커뮤니티, 그리고 코드, 버그 보고, 연구로 기여해 주신 모든 분들께 감사드립니다.
라이선스
MIT.