mirror of
https://github.com/Lakr233/vphone-cli.git
synced 2026-09-02 02:34:29 +00:00
Create txm_return_mechanism.md
This commit is contained in:
@@ -0,0 +1,216 @@
|
||||
<div align="right"><strong><a href="./README_ko.md">🇰🇷한국어</a></strong> | <strong>🇯🇵日本語</strong> | <strong><a href="./README_zh.md">🇨🇳中文</a></strong> | <strong><a href="../README.md">🇬🇧English</a></strong></div>
|
||||
|
||||
# vphone-cli
|
||||
|
||||
Apple の Virtualization.framework と PCC の研究用 VM インフラを使用して、仮想 iPhone (iOS 26) を起動するためのツール
|
||||
|
||||

|
||||
|
||||
## 検証済み環境
|
||||
|
||||
| ホスト | iPhone | CloudOS |
|
||||
| ------------- | ------------------ | ------------- |
|
||||
| Mac16,12 26.3 | `17,3_26.1_23B85` | `26.1-23B85` |
|
||||
| Mac16,12 26.3 | `17,3_26.3_23D127` | `26.1-23B85` |
|
||||
| Mac16,12 26.3 | `17,3_26.3_23D127` | `26.3-23D128` |
|
||||
|
||||
## ファームウェアバリアント
|
||||
|
||||
セキュリティバイパスのレベルが異なる3つのパッチバリアントが利用可能です:
|
||||
|
||||
| バリアント | ブートチェーン | CFW | Make ターゲット |
|
||||
| -------------------- | :----------: | :-------: | ---------------------------------- |
|
||||
| **通常版** | 38 パッチ | 10 フェーズ | `fw_patch` + `cfw_install` |
|
||||
| **開発版** | 47 パッチ | 12 フェーズ | `fw_patch_dev` + `cfw_install_dev` |
|
||||
| **脱獄版(WIP)** | 84 パッチ | 14 フェーズ | `fw_patch_jb` + `cfw_install_jb` |
|
||||
|
||||
詳細なコンポーネントごとの内訳については [research/patch_comparison_all_variants.md](../research/patch_comparison_all_variants.md) を参照してください。
|
||||
|
||||
## 前提条件
|
||||
|
||||
**ホストOS:** PV=3 仮想化には macOS 15+(Sequoia)が必要です。
|
||||
|
||||
**SIPとAMFIを無効化** — プライベートな Virtualization.framework の entitlement を使うために必要です。
|
||||
|
||||
復旧モードで起動し(電源ボタンを長押し)、ターミナルを開いて以下を実行します:
|
||||
|
||||
```bash
|
||||
csrutil disable
|
||||
csrutil allow-research-guests enable
|
||||
```
|
||||
|
||||
通常の macOS に再起動した後:
|
||||
|
||||
```bash
|
||||
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
|
||||
```
|
||||
|
||||
実行したらもう一度再起動します。
|
||||
|
||||
**依存関係のインストール:**
|
||||
|
||||
```bash
|
||||
brew install ideviceinstaller wget gnu-tar openssl@3 ldid-procursus sshpass keystone autoconf automake pkg-config libtool
|
||||
```
|
||||
|
||||
**Submodules** — このリポジトリはリソースアーカイブに git submodule を使用しています。クローン時に以下を使用してください:
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
|
||||
```
|
||||
|
||||
## クイックスタート
|
||||
|
||||
```bash
|
||||
make setup_machine # 初回起動までを完全自動化(復元/ラムディスク/CFWを含む)
|
||||
```
|
||||
|
||||
## 手動セットアップ
|
||||
|
||||
```bash
|
||||
make setup_tools # brew の依存関係インストール、trustcache + libimobiledevice のビルド、Python venv の作成
|
||||
make build # vphone-cli のビルド + 署名
|
||||
make vm_new # vm/ ディレクトリの作成(ROM、ディスク、SEP ストレージ)
|
||||
make fw_prepare # IPSW のダウンロード、抽出、マージ、マニフェスト生成
|
||||
make fw_patch # ブートチェーンのパッチ当て(通常バリアント)
|
||||
# または: make fw_patch_dev # 開発バリアント(+ TXM entitlement/デバッグバイパス)
|
||||
# または: make fw_patch_jb # 脱獄バリアント(+ 完全セキュリティバイパス)(WIP)
|
||||
```
|
||||
|
||||
## 復元
|
||||
|
||||
復元プロセスには **2つのターミナル** が必要です。ターミナル 2 を使用している間、ターミナル 1 を実行し続けてください。
|
||||
|
||||
```bash
|
||||
# ターミナル 1
|
||||
make boot_dfu # DFUモードでVMを起動(実行したままにする)
|
||||
```
|
||||
|
||||
```bash
|
||||
# ターミナル 2
|
||||
make restore_get_shsh # SHSH blob の取得
|
||||
make restore # idevicerestore 経由でファームウェアを焼き込み
|
||||
```
|
||||
|
||||
## カスタムファームウェアのインストール
|
||||
|
||||
ターミナル 1 の DFU 起動を停止し(Ctrl+C)、Ramdisk 用に再び DFU で起動します:
|
||||
|
||||
```bash
|
||||
# ターミナル 1
|
||||
make boot_dfu # 実行したままにする
|
||||
```
|
||||
|
||||
```bash
|
||||
# ターミナル 2
|
||||
make ramdisk_build # 署名済みSSH Ramdisk のビルド
|
||||
make ramdisk_send # デバイスへ送信
|
||||
```
|
||||
|
||||
Ramdisk が起動したら(出力に `Running server` と表示されるはずです)、iproxy トンネル用 に **3つ目のターミナル** を開き、ターミナル 2 から CFW をインストールします:
|
||||
|
||||
```bash
|
||||
# ターミナル 3 — 実行したままにする
|
||||
iproxy 2222 22
|
||||
```
|
||||
|
||||
```bash
|
||||
# ターミナル 2
|
||||
make cfw_install
|
||||
```
|
||||
|
||||
## 初回起動
|
||||
|
||||
ターミナル 1 の DFU 起動を停止し(Ctrl+C)、以下を実行します:
|
||||
|
||||
```bash
|
||||
make boot
|
||||
```
|
||||
|
||||
これにより VM に **直接繋がるコンソール** が開きます。`bash-4.4#` と表示されたら、Enter を押し、シェル環境を初期化して SSH ホストキーを生成するために以下のコマンドを実行します:
|
||||
|
||||
```bash
|
||||
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/iosbinpack64/usr/local/sbin:/iosbinpack64/usr/local/bin:/iosbinpack64/usr/sbin:/iosbinpack64/usr/bin:/iosbinpack64/sbin:/iosbinpack64/bin'
|
||||
|
||||
mkdir -p /var/dropbear
|
||||
cp /iosbinpack64/etc/profile /var/profile
|
||||
cp /iosbinpack64/etc/motd /var/motd
|
||||
|
||||
# SSHホストキーの生成(SSHを機能させるために必要)
|
||||
dropbearkey -t rsa -f /var/dropbear/dropbear_rsa_host_key
|
||||
dropbearkey -t ecdsa -f /var/dropbear/dropbear_ecdsa_host_key
|
||||
|
||||
shutdown -h now
|
||||
```
|
||||
|
||||
> **注意:** ホストキー生成手順を行わないと、dropbear(SSH サーバー)は接続を受け付けますが、SSH ハンドシェイクを実行するためのキーがないためすぐに切断されます。
|
||||
|
||||
## 2回目以降の起動
|
||||
|
||||
```bash
|
||||
make boot
|
||||
```
|
||||
|
||||
別のターミナルで iproxy トンネルを開始します:
|
||||
|
||||
```bash
|
||||
iproxy 22222 22222 # SSH
|
||||
iproxy 5901 5901 # VNC
|
||||
iproxy 5910 5910 # RPC
|
||||
```
|
||||
|
||||
以下で接続します:
|
||||
|
||||
- **SSH:** `ssh -p 22222 [email protected]` (パスワード: `alpine`)
|
||||
- **VNC:** `vnc://127.0.0.1:5901`
|
||||
- [**RPC:**](http://github.com/doronz88/rpc-project) `rpcclient -p 5910 127.0.0.1`
|
||||
|
||||
## よくある質問 (FAQ)
|
||||
|
||||
> **何よりもまず — `git pull` を実行して最新バージョンであることを確認してください**
|
||||
|
||||
**Q: 実行しようとすると `zsh: killed ./vphone-cli` と表示されます**
|
||||
|
||||
AMFIが無効化されていません。boot-arg を設定して再起動してください:
|
||||
|
||||
```bash
|
||||
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
|
||||
```
|
||||
|
||||
**Q: システムアプリ(App Store、メッセージなど)がダウンロード・インストールできません**
|
||||
|
||||
iOS の初期設定時に、地域として**日本**または**欧州連合**を選択**しないでください**。これらの地域では追加の規制チェック(サイドローディングの開示、カメラのシャッター音など)が適用されますが、仮想マシンではこれらの要件を満たせないため、システムアプリのダウンロードおよびインストールができなくなります。この問題を回避するには、他の地域(例: 米国)を選択してください。
|
||||
|
||||
**Q: "Press home to continue" の画面から進めません**
|
||||
|
||||
VNC経由で接続し(`vnc://127.0.0.1:5901`)、画面の任意の場所を右クリック(Mac のトラックパッドでは 2 本指クリック)してください。これによりホームボタンの押下がシミュレートされます。
|
||||
|
||||
**Q: SSH を接続した後にすぐ切断されます(`Connection closed by 127.0.0.1`)**
|
||||
|
||||
初回起動時にDropbearホストキーが生成されていません。VNC または `make boot` コンソール経由で接続し、以下を実行してください:
|
||||
|
||||
```bash
|
||||
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/iosbinpack64/usr/local/sbin:/iosbinpack64/usr/local/bin:/iosbinpack64/usr/sbin:/iosbinpack64/usr/bin:/iosbinpack64/sbin:/iosbinpack64/bin'
|
||||
mkdir -p /var/dropbear
|
||||
dropbearkey -t rsa -f /var/dropbear/dropbear_rsa_host_key
|
||||
dropbearkey -t ecdsa -f /var/dropbear/dropbear_ecdsa_host_key
|
||||
killall dropbear
|
||||
dropbear -R -p 22222
|
||||
```
|
||||
|
||||
**Q: もっと新しいiOSバージョンにアップデートできますか?**
|
||||
|
||||
はい。`fw_prepare` に希望するバージョンの IPSW URL を指定することでできます:
|
||||
|
||||
```bash
|
||||
export IPHONE_SOURCE=/path/to/some_os.ipsw
|
||||
export CLOUDOS_SOURCE=/path/to/some_os.ipsw
|
||||
make fw_prepare
|
||||
make fw_patch
|
||||
```
|
||||
|
||||
私たちのパッチは静的なオフセットではなくバイナリ解析によって適用されるため、新しいバージョンでも動作するはずです。何か壊れた場合は AI に聞いてください。
|
||||
|
||||
## 謝辞
|
||||
|
||||
- [wh1te4ever/super-tart-vphone-writeup](https://github.com/wh1te4ever/super-tart-vphone-writeup)
|
||||
@@ -0,0 +1,216 @@
|
||||
<div align="right"><strong>🇰🇷한국어</strong> | <strong><a href="./README_ja.md">🇯🇵日本語</a></strong> | <strong><a href="./README_zh.md">🇨🇳中文</a></strong> | <strong><a href="../README.md">🇬🇧English</a></strong></div>
|
||||
|
||||
# vphone-cli
|
||||
|
||||
PCC 리서치 VM 인프라와 Apple의 Virtualization.framework를 사용하여 가상 iPhone(iOS 26)을 부팅합니다.
|
||||
|
||||

|
||||
|
||||
## 테스트된 환경
|
||||
|
||||
| Host | iPhone | CloudOS |
|
||||
| ------------- | ------------------ | ------------- |
|
||||
| Mac16,12 26.3 | `17,3_26.1_23B85` | `26.1-23B85` |
|
||||
| Mac16,12 26.3 | `17,3_26.3_23D127` | `26.1-23B85` |
|
||||
| Mac16,12 26.3 | `17,3_26.3_23D127` | `26.3-23D128` |
|
||||
|
||||
## 펌웨어 변형
|
||||
|
||||
보안 우회 수준이 다른 3가지 패치 변형을 사용할 수 있습니다:
|
||||
|
||||
| 변형 | 부트 체인 | CFW | Make 타겟 |
|
||||
| ----------------- | :--------: | :-------: | ---------------------------------- |
|
||||
| **일반** | 38 패치 | 10 페이즈 | `fw_patch` + `cfw_install` |
|
||||
| **개발** | 47 패치 | 12 페이즈 | `fw_patch_dev` + `cfw_install_dev` |
|
||||
| **탈옥 (WIP)** | 84 패치 | 14 페이즈 | `fw_patch_jb` + `cfw_install_jb` |
|
||||
|
||||
컴포넌트별 상세 분류는 [research/patch_comparison_all_variants.md](../research/patch_comparison_all_variants.md)를 참조하세요.
|
||||
|
||||
## 사전 요구 사항
|
||||
|
||||
**호스트 OS:** PV=3 가상화를 위해 macOS 15+(Sequoia)가 필요합니다.
|
||||
|
||||
**SIP 및 AMFI 비활성화** — Private Virtualization.framework 권한을 사용하기 위해 필요합니다.
|
||||
|
||||
복구 모드(전원 버튼 길게 누르기)로 부팅한 후 터미널을 엽니다:
|
||||
|
||||
```bash
|
||||
csrutil disable
|
||||
csrutil allow-research-guests enable
|
||||
```
|
||||
|
||||
macOS로 다시 시작한 후:
|
||||
|
||||
```bash
|
||||
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
|
||||
```
|
||||
|
||||
한 번 더 재시작합니다.
|
||||
|
||||
**의존성(Dependencies) 설치:**
|
||||
|
||||
```bash
|
||||
brew install ideviceinstaller wget gnu-tar openssl@3 ldid-procursus sshpass keystone autoconf automake pkg-config libtool
|
||||
```
|
||||
|
||||
**Submodules** — 이 저장소는 리소스 아카이브를 위해 git submodule을 사용합니다. 클론 시 다음 명령어를 사용하세요:
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
|
||||
```
|
||||
|
||||
## 빠른 시작
|
||||
|
||||
```bash
|
||||
make setup_machine # "First Boot"까지의 전체 과정 자동화 (복원/Ramdisk/커스텀 펌웨어 포함)
|
||||
```
|
||||
|
||||
## 수동 설정
|
||||
|
||||
```bash
|
||||
make setup_tools # brew 의존성 설치, trustcache + libimobiledevice 빌드, Python venv 생성
|
||||
make build # vphone-cli 빌드 및 서명
|
||||
make vm_new # vm/ 디렉토리 생성 (ROM, 디스크, SEP 저장소)
|
||||
make fw_prepare # IPSW 다운로드, 추출, 병합, manifest 생성
|
||||
make fw_patch # 부트 체인 패치 (일반 변형)
|
||||
# 또는: make fw_patch_dev # 개발 변형 (+ TXM 권한/디버그 우회)
|
||||
# 또는: make fw_patch_jb # 탈옥 변형 (+ 전체 보안 우회) (WIP)
|
||||
```
|
||||
|
||||
## 복원
|
||||
|
||||
복원 프로세스를 위해 **두 개의 터미널**이 필요합니다. 터미널 2를 사용하는 동안 터미널 1을 계속 실행 상태로 두세요.
|
||||
|
||||
```bash
|
||||
# 터미널 1
|
||||
make boot_dfu # VM을 DFU 모드로 부팅 (계속 실행 유지)
|
||||
```
|
||||
|
||||
```bash
|
||||
# 터미널 2
|
||||
make restore_get_shsh # SHSH blob 가져오기
|
||||
make restore # idevicerestore를 통해 펌웨어 플래싱
|
||||
```
|
||||
|
||||
## 커스텀 펌웨어 설치
|
||||
|
||||
터미널 1의 DFU 부팅을 중단(Ctrl+C)한 다음, 램디스크를 위해 다시 DFU로 부팅합니다:
|
||||
|
||||
```bash
|
||||
# 터미널 1
|
||||
make boot_dfu # 계속 실행 유지
|
||||
```
|
||||
|
||||
```bash
|
||||
# 터미널 2
|
||||
make ramdisk_build # 서명된 SSH 램디스크 빌드
|
||||
make ramdisk_send # 장치로 전송
|
||||
```
|
||||
|
||||
램디스크가 실행되면(출력에 `Running server`가 표시됨), **세 번째 터미널**을 열어 iproxy 터널을 시작한 후, 터미널 2에서 커스텀 펌웨어를 설치합니다:
|
||||
|
||||
```bash
|
||||
# 터미널 3 — 계속 실행 유지
|
||||
iproxy 2222 22
|
||||
```
|
||||
|
||||
```bash
|
||||
# 터미널 2
|
||||
make cfw_install
|
||||
```
|
||||
|
||||
## 첫 부팅
|
||||
|
||||
터미널 1의 DFU 부팅을 중단(Ctrl+C)한 후 다음을 실행합니다:
|
||||
|
||||
```bash
|
||||
make boot
|
||||
```
|
||||
|
||||
그러면 VM에서 **direct console**이 나타납니다. `bash-4.4#`이 보이면 엔터를 누르고 다음 명령어를 실행하여 쉘 환경을 초기화하고 SSH 호스트 키를 생성하세요:
|
||||
|
||||
```bash
|
||||
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/iosbinpack64/usr/local/sbin:/iosbinpack64/usr/local/bin:/iosbinpack64/usr/sbin:/iosbinpack64/usr/bin:/iosbinpack64/sbin:/iosbinpack64/bin'
|
||||
|
||||
mkdir -p /var/dropbear
|
||||
cp /iosbinpack64/etc/profile /var/profile
|
||||
cp /iosbinpack64/etc/motd /var/motd
|
||||
|
||||
# SSH 호스트 키 생성 (SSH 작동에 필수)
|
||||
dropbearkey -t rsa -f /var/dropbear/dropbear_rsa_host_key
|
||||
dropbearkey -t ecdsa -f /var/dropbear/dropbear_ecdsa_host_key
|
||||
|
||||
shutdown -h now
|
||||
```
|
||||
|
||||
> **참고:** 호스트 키 생성 단계를 거치지 않으면 dropbear(SSH 서버)가 연결을 수락하더라도 SSH 핸드셰이크를 수행할 키가 없어 즉시 연결을 종료합니다.
|
||||
|
||||
## 이후 부팅
|
||||
|
||||
```bash
|
||||
make boot
|
||||
```
|
||||
|
||||
별도의 터미널에서 iproxy 터널을 시작합니다:
|
||||
|
||||
```bash
|
||||
iproxy 22222 22222 # SSH
|
||||
iproxy 5901 5901 # VNC
|
||||
iproxy 5910 5910 # RPC
|
||||
```
|
||||
|
||||
다음을 통해 연결합니다:
|
||||
|
||||
- **SSH:** `ssh -p 22222 [email protected]` (password: `alpine`)
|
||||
- **VNC:** `vnc://127.0.0.1:5901`
|
||||
- [**RPC:**](http://github.com/doronz88/rpc-project) `rpcclient -p 5910 127.0.0.1`
|
||||
|
||||
## FAQ
|
||||
|
||||
> **무엇보다 먼저 — `git pull`을 실행하여 최신 버전인지 확인하세요.**
|
||||
|
||||
**Q: 실행하려고 하면 `zsh: killed ./vphone-cli` 오류가 발생합니다.**
|
||||
|
||||
AMFI가 비활성화되지 않았습니다. boot-arg를 설정하고 재시작하세요:
|
||||
|
||||
```bash
|
||||
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
|
||||
```
|
||||
|
||||
**Q: 시스템 앱(App Store, 메시지 등)을 다운로드하거나 설치할 수 없습니다.**
|
||||
|
||||
iOS 초기 설정 시 지역을 **일본** 또는 **유럽 연합**으로 선택하지 **마세요**. 이 지역에서는 추가적인 규제 검사(사이드로딩 공개, 카메라 셔터음 등)가 적용되는데, 가상 머신은 이러한 요건을 충족할 수 없어 시스템 앱의 다운로드 및 설치가 불가능합니다. 이 문제를 피하려면 다른 지역(예: 미국)을 선택하세요.
|
||||
|
||||
**Q: "Press home to continue" 화면에서 멈췄습니다.**
|
||||
|
||||
VNC(`vnc://127.0.0.1:5901`)로 접속하여 화면의 아무 곳이나 우클릭(Mac 트랙패드에서는 두 손가락 클릭)하세요. 이것이 홈 버튼 누르기를 시뮬레이션합니다.
|
||||
|
||||
**Q: SSH가 연결되자마자 종료됩니다 (`Connection closed by 127.0.0.1`).**
|
||||
|
||||
첫 부팅 시 Dropbear 호스트 키가 생성되지 않았습니다. VNC나 `make boot` 콘솔을 통해 연결하여 다음을 실행하세요:
|
||||
|
||||
```bash
|
||||
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/iosbinpack64/usr/local/sbin:/iosbinpack64/usr/local/bin:/iosbinpack64/usr/sbin:/iosbinpack64/usr/bin:/iosbinpack64/sbin:/iosbinpack64/bin'
|
||||
mkdir -p /var/dropbear
|
||||
dropbearkey -t rsa -f /var/dropbear/dropbear_rsa_host_key
|
||||
dropbearkey -t ecdsa -f /var/dropbear/dropbear_ecdsa_host_key
|
||||
killall dropbear
|
||||
dropbear -R -p 22222
|
||||
```
|
||||
|
||||
**Q: 최신 iOS 버전으로 업데이트할 수 있나요?**
|
||||
|
||||
네. `fw_prepare`를 원하는 버전의 IPSW URL로 덮어쓰세요:
|
||||
|
||||
```bash
|
||||
export IPHONE_SOURCE=/path/to/some_os.ipsw
|
||||
export CLOUDOS_SOURCE=/path/to/some_os.ipsw
|
||||
make fw_prepare
|
||||
make fw_patch
|
||||
```
|
||||
|
||||
저희의 패치는 정적 오프셋이 아닌 바이너리 분석을 통해 적용되므로, 최신 버전에서도 작동할 것입니다. 만약 문제가 발생하면 AI에게 도움을 요청하세요.
|
||||
|
||||
## 감사 인사
|
||||
|
||||
- [wh1te4ever/super-tart-vphone-writeup](https://github.com/wh1te4ever/super-tart-vphone-writeup)
|
||||
@@ -0,0 +1,216 @@
|
||||
<div align="right"><strong><a href="./README_ko.md">🇰🇷한국어</a></strong> | <strong><a href="./README_ja.md">🇯🇵日本語</a></strong> | <strong>🇨🇳中文</strong> | <strong><a href="../README.md">🇬🇧English</a></strong></div>
|
||||
|
||||
# vphone-cli
|
||||
|
||||
通过 Apple 的 Virtualization.framework 使用 PCC 研究虚拟机基础设施引导虚拟 iPhone(iOS 26)。
|
||||
|
||||

|
||||
|
||||
## 测试环境
|
||||
|
||||
| 主机 | iPhone 系统 | CloudOS |
|
||||
| ------------- | ------------------ | ------------- |
|
||||
| Mac16,12 26.3 | `17,3_26.1_23B85` | `26.1-23B85` |
|
||||
| Mac16,12 26.3 | `17,3_26.3_23D127` | `26.1-23B85` |
|
||||
| Mac16,12 26.3 | `17,3_26.3_23D127` | `26.3-23D128` |
|
||||
|
||||
## 固件变体
|
||||
|
||||
提供三种补丁变体,安全绕过级别逐步递增:
|
||||
|
||||
| 变体 | 启动链 | 自定义固件 | Make 目标 |
|
||||
| ----------------- | :--------: | :-------: | ---------------------------------- |
|
||||
| **常规版** | 38 个补丁 | 10 个阶段 | `fw_patch` + `cfw_install` |
|
||||
| **开发版** | 47 个补丁 | 12 个阶段 | `fw_patch_dev` + `cfw_install_dev` |
|
||||
| **越狱版(WIP)** | 84 个补丁 | 14 个阶段 | `fw_patch_jb` + `cfw_install_jb` |
|
||||
|
||||
详见 [research/patch_comparison_all_variants.md](../research/patch_comparison_all_variants.md) 了解各组件的详细分项对比。
|
||||
|
||||
## 先决条件
|
||||
|
||||
**主机系统:** PV=3 虚拟化要求 macOS 15+(Sequoia)。
|
||||
|
||||
**禁用 SIP 和 AMFI** —— 需要私有的 Virtualization.framework 权限。
|
||||
|
||||
重启到恢复模式(长按电源键),打开终端:
|
||||
|
||||
```bash
|
||||
csrutil disable
|
||||
csrutil allow-research-guests enable
|
||||
```
|
||||
|
||||
重新启动回 macOS 后:
|
||||
|
||||
```bash
|
||||
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
|
||||
```
|
||||
|
||||
再重启一次。
|
||||
|
||||
**安装依赖:**
|
||||
|
||||
```bash
|
||||
brew install ideviceinstaller wget gnu-tar openssl@3 ldid-procursus sshpass keystone autoconf automake pkg-config libtool
|
||||
```
|
||||
|
||||
**Submodules** —— 本仓库使用 git submodule 存储资源文件。克隆时请使用:
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
make setup_machine # 完全自动化完成"首次启动"流程(包含 restore/ramdisk/CFW)
|
||||
```
|
||||
|
||||
## 手动设置
|
||||
|
||||
```bash
|
||||
make setup_tools # 安装 brew 依赖、构建 trustcache + libimobiledevice、创建 Python 虚拟环境
|
||||
make build # 构建并签名 vphone-cli
|
||||
make vm_new # 创建 vm/ 目录(ROM、磁盘、SEP 存储)
|
||||
make fw_prepare # 下载 IPSWs,提取、合并、生成 manifest
|
||||
make fw_patch # 修补启动链(常规变体)
|
||||
# 或:make fw_patch_dev # 开发变体(+ TXM 权限/调试绕过)
|
||||
# 或:make fw_patch_jb # 越狱变体(+ 完整安全绕过)(WIP)
|
||||
```
|
||||
|
||||
## 恢复过程
|
||||
|
||||
该过程需要 **两个终端**。保持终端 1 运行,同时在终端 2 操作。
|
||||
|
||||
```bash
|
||||
# 终端 1
|
||||
make boot_dfu # 以 DFU 模式启动 VM(保持运行)
|
||||
```
|
||||
|
||||
```bash
|
||||
# 终端 2
|
||||
make restore_get_shsh # 获取 SHSH blob
|
||||
make restore # 通过 idevicerestore 刷写固件
|
||||
```
|
||||
|
||||
## 安装自定义固件
|
||||
|
||||
在终端 1 中停止 DFU 引导(Ctrl+C),然后再次进入 DFU,用于 ramdisk:
|
||||
|
||||
```bash
|
||||
# 终端 1
|
||||
make boot_dfu # 保持运行
|
||||
```
|
||||
|
||||
```bash
|
||||
# 终端 2
|
||||
make ramdisk_build # 构建签名的 SSH ramdisk
|
||||
make ramdisk_send # 发送到设备
|
||||
```
|
||||
|
||||
当 ramdisk 运行后(输出中应显示 `Running server`),打开**第三个终端**运行 iproxy 隧道,然后在终端 2 安装 CFW:
|
||||
|
||||
```bash
|
||||
# 终端 3 —— 保持运行
|
||||
iproxy 2222 22
|
||||
```
|
||||
|
||||
```bash
|
||||
# 终端 2
|
||||
make cfw_install
|
||||
```
|
||||
|
||||
## 首次启动
|
||||
|
||||
在终端 1 中停止 DFU 引导(Ctrl+C),然后:
|
||||
|
||||
```bash
|
||||
make boot
|
||||
```
|
||||
|
||||
这会为你提供 VM 的**直接控制台**。当看到 `bash-4.4#` 时,按回车并运行以下命令以初始化 shell 环境并生成 SSH 主机密钥:
|
||||
|
||||
```bash
|
||||
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/iosbinpack64/usr/local/sbin:/iosbinpack64/usr/local/bin:/iosbinpack64/usr/sbin:/iosbinpack64/usr/bin:/iosbinpack64/sbin:/iosbinpack64/bin'
|
||||
|
||||
mkdir -p /var/dropbear
|
||||
cp /iosbinpack64/etc/profile /var/profile
|
||||
cp /iosbinpack64/etc/motd /var/motd
|
||||
|
||||
# 生成 SSH 主机密钥(SSH 能正常工作所必需)
|
||||
dropbearkey -t rsa -f /var/dropbear/dropbear_rsa_host_key
|
||||
dropbearkey -t ecdsa -f /var/dropbear/dropbear_ecdsa_host_key
|
||||
|
||||
shutdown -h now
|
||||
```
|
||||
|
||||
> **注意:** 若不执行主机密钥生成步骤,dropbear(SSH 服务器)会接受连接但立刻关闭,因为它没有密钥进行握手。
|
||||
|
||||
## 后续启动
|
||||
|
||||
```bash
|
||||
make boot
|
||||
```
|
||||
|
||||
在另一个终端中启动 iproxy 隧道:
|
||||
|
||||
```bash
|
||||
iproxy 22222 22222 # SSH
|
||||
iproxy 5901 5901 # VNC
|
||||
iproxy 5910 5910 # RPC
|
||||
```
|
||||
|
||||
连接方式:
|
||||
|
||||
- **SSH:** `ssh -p 22222 [email protected]`(密码:`alpine`)
|
||||
- **VNC:** `vnc://127.0.0.1:5901`
|
||||
- [**RPC:**](http://github.com/doronz88/rpc-project) `rpcclient -p 5910 127.0.0.1`
|
||||
|
||||
## 常见问题(FAQ)
|
||||
|
||||
> **在做其他任何事情之前——先运行 `git pull` 确保你有最新版。**
|
||||
|
||||
**问:运行时出现 `zsh: killed ./vphone-cli`。**
|
||||
|
||||
AMFI 未禁用。设置 boot-arg 并重启:
|
||||
|
||||
```bash
|
||||
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
|
||||
```
|
||||
|
||||
**问:系统应用(App Store、信息等)无法下载或安装。**
|
||||
|
||||
在 iOS 初始设置过程中,请**不要**选择**日本**或**欧盟地区**作为你的国家/地区。这些地区要求额外的合规检查(如侧载披露、相机快门声等),虚拟机无法满足这些要求,因此系统应用无法正常下载安装。请选择其他地区(例如美国)以避免此问题。
|
||||
|
||||
**问:卡在"Press home to continue"屏幕。**
|
||||
|
||||
通过 VNC (`vnc://127.0.0.1:5901`) 连接,并在屏幕上右键单击任意位置(在 Mac 触控板上双指点击)。这会模拟 Home 按钮按下。
|
||||
|
||||
**问:SSH 连接后立即关闭(`Connection closed by 127.0.0.1`)。**
|
||||
|
||||
首次启动时未生成 dropbear 主机密钥。通过 VNC 或 `make boot` 控制台连接并运行:
|
||||
|
||||
```bash
|
||||
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/iosbinpack64/usr/local/sbin:/iosbinpack64/usr/local/bin:/iosbinpack64/usr/sbin:/iosbinpack64/usr/bin:/iosbinpack64/sbin:/iosbinpack64/bin'
|
||||
mkdir -p /var/dropbear
|
||||
dropbearkey -t rsa -f /var/dropbear/dropbear_rsa_host_key
|
||||
dropbearkey -t ecdsa -f /var/dropbear/dropbear_ecdsa_host_key
|
||||
killall dropbear
|
||||
dropbear -R -p 22222
|
||||
```
|
||||
|
||||
**问:可以升级到更新的 iOS 版本吗?**
|
||||
|
||||
可以。使用你想要的版本的 IPSW URL 覆盖 `fw_prepare`:
|
||||
|
||||
```bash
|
||||
export IPHONE_SOURCE=/path/to/some_os.ipsw
|
||||
export CLOUDOS_SOURCE=/path/to/some_os.ipsw
|
||||
make fw_prepare
|
||||
make fw_patch
|
||||
```
|
||||
|
||||
我们的补丁是通过二进制分析(binary analysis)而非静态偏移(static offsets)应用的,因此更新的版本应该也能正常工作。如果出现问题,可以寻求 AI 的帮助。
|
||||
|
||||
## 致谢
|
||||
|
||||
- [wh1te4ever/super-tart-vphone-writeup](https://github.com/wh1te4ever/super-tart-vphone-writeup)
|
||||
Reference in New Issue
Block a user