
최신 Frida 17.5.2 API를 지원하는 업데이트된 Frida iOS 덤프 도구
**Frida 17.5.2+**용으로 제작된 최신 iOS 애플리케이션 메모리 복호화 도구로, iOS 14-16 및 여러 탈옥(jailbreak)을 완전히 지원합니다.
상태: ✅ 작동 및 테스트 완료 - Frida 17.5.2를 사용하여 iOS 앱을 성공적으로 덤프하고 복호화한 환경:
/cores/binpack/ 탈옥 경로 처리원본 frida-ios-dump(2020년 마지막 업데이트)는 Frida 17.5.2와 호환되지 않는 더 이상 사용되지 않는(deprecated) Frida API를 사용합니다. 이 도구는 최신 Frida API를 사용하여 처음부터 새로 구축되었으며, Taurine 호환 Frida 패치로 특별히 테스트되었습니다.
paramiko (Python SSH 라이브러리 - 자동 설치됨)iproxy (libimobiledevice를 통한 USB 연결용)will add my patch repo에서 Frida 패치 참조)cd /Users/username/git/frida-ios-dump-modern
# Create virtual environment with uv:
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install -r requirements.txt
# Make script executable
chmod +x dump.py
# Install libimobiledevice if needed
brew install libimobiledevice
# Start USB tunnel (in a separate terminal)
iproxy 2222 22
python dump.py -l
중요: Taurine 탈옥 제한으로 인해 덤프 전에 앱이 실행 중이어야 합니다.
# 1. Launch the app on your device manually
# 2. Run the dumper:
python dump.py com.example.app
# With custom SSH password:
python dump.py com.example.app -P your_password
# With custom output directory:
python dump.py com.example.app -o /path/to/output
# 1. Open Ventusky on your iOS device
# 2. Run:
python dump.py com.in-meteo.ventusky -P mypassword
/tmp에 씁니다iOS 16에서 작동하는 이유:
이 도구는 다음을 생성합니다:
출력 구조 예시:
/tmp/Ventusky_decrypted/
├── Payload/
│ └── Ventusky.app/
│ ├── Ventusky (decrypted main binary)
│ ├── Frameworks/
│ │ └── *.framework (decrypted frameworks)
│ └── ... (other app resources)
└── Ventusky_decrypted.ipa
이 도구는 다음을 포함하는 Taurine 패치 Frida 서버와 함께 작동하도록 설계되었습니다:
# Check frida-server is running on device:
ssh -p 2222 root@localhost "ps aux | grep frida-server"
# Restart frida-server if needed:
ssh -p 2222 root@localhost "killall frida-server; frida-server &"
# List apps to find correct bundle ID:
python dump.py -l
# Launch the app manually on your device first
# This is required due to Taurine jailbreak restrictions
# Test SSH connection:
ssh -p 2222 root@localhost
# If password prompt works, use -P flag:
python dump.py com.example.app -P your_password
패치 후 iOS 16에서 메타데이터 오류가 발생하는 경우:
문제 진단:
# Run diagnostic on dumped binary
./diagnose_ios16.sh /tmp/AppName_decrypted/Payload/AppName.app/AppName
# Compare with working iOS 14 binary
./diagnose_ios16.sh /path/to/working/ios14/binary
확인해야 할 핵심 사항:
이 도구는 이제 런타임에 확장된 메모리 영역을 덤프하지 않도록 디스크에서 원본 파일 크기를 읽습니다.
좋은 소식: 이 도구는 이제 덤프 중에 자동으로 cryptid=0을 설정하므로 수동 패치가 더 이상 필요하지 않습니다!
iOS 16 호환성: 이 도구는 하이브리드 접근 방식을 사용합니다:
이렇게 하면 iOS 16에서 "Is this a file manually extracted from the DYLD shared cache?" 및 "Objective-C Metadata looks mangled" 오류가 방지됩니다.
덤프 검증:
# Check that cryptid is 0 (should be automatic now)
otool -l Payload/App.app/App | grep cryptid
# Should show: cryptid 0
# Check file has all segments
otool -l Payload/App.app/App | grep "segname __"
# Should show: __TEXT, __DATA_CONST, __DATA, __LINKEDIT
# Open in Hopper - should work without warnings!
수동 패치(레거시 - 더 이상 필요 없음):
어떤 이유로 자동 cryptid 패치가 작동하지 않은 경우:
# Check if patching needed
otool -l Payload/App.app/App | grep cryptid
# If shows cryptid 1, run:
python patch_cryptid.py Payload/App.app/App
mv Payload/App.app/App.patched Payload/App.app/App
예상 결과:
기술 세부 사항 - iOS 16 체인형 수정(Chained Fixups):
이 도구는 최신 Frida 17.5.2 API를 사용합니다:
이 도구가 유용하다고 생각되거나 추가 업데이트가 필요하다면 Boba needs 프로젝트 지원을 고려해 주세요:
MIT 라이선스 - 보안 연구 및 교육 목적으로 자유롭게 사용할 수 있습니다.
이 도구는 다음 용도로 사용됩니다:
| 이전 API (Deprecated) | 새 API (Modern) | 설명 |
|---|
Module.ensureInitialized() | Not needed | ObjC 자동 초기화 |
Module.findExportByName(null, 'name') | Module.findGlobalExportByName('name') | 전역 내보내기 |
Process.getModuleByName() | Process.findModuleByName() | 찾을 수 없으면 null 반환 |
| Manual POSIX file I/O | new File(path, 'wb') | 내장 File API |
Memory.writeByteArray() | file.write(arrayBuffer) | 직접 바이너리 쓰기 |