docs: rework READMEs — fix patch counts, merge PR #148, sync translations

- Fix JB boot chain patch count: 66/78 → 112 (per research doc)
- Merge PR #148: remove cfw_install_jb_finalize, update SSH to openssh-server
- Keep dropbear instructions for Regular/Dev variants
- Add Option 2 (amfidont) to prerequisites and FAQ in all translations
- Add setup_machine options comment to all translations
- Add .tipa FAQ entry (from #142) to all translations
- Add openssh-server FAQ entries to all translations
- Run prettier on all docs
This commit is contained in:
Lakr
2026-03-08 13:23:34 +08:00
parent 6df6db9159
commit 3a644b7332
6 changed files with 250 additions and 80 deletions
+5 -5
View File
@@ -29,11 +29,11 @@ For any changes applying new patches, also update research/0_binary_patch_compar
## Firmware Variants
| Variant | Boot Chain | CFW | Make Targets |
| --------------- | :---------: | :-------: | ------------------------------------------------------------ |
| **Regular** | 51 patches | 10 phases | `fw_patch` + `cfw_install` |
| **Development** | 64 patches | 12 phases | `fw_patch_dev` + `cfw_install_dev` |
| **Jailbreak** | 126 patches | 14 phases | `fw_patch_jb` + `cfw_install_jb` |
| Variant | Boot Chain | CFW | Make Targets |
| --------------- | :---------: | :-------: | ---------------------------------- |
| **Regular** | 51 patches | 10 phases | `fw_patch` + `cfw_install` |
| **Development** | 64 patches | 12 phases | `fw_patch_dev` + `cfw_install_dev` |
| **Jailbreak** | 126 patches | 14 phases | `fw_patch_jb` + `cfw_install_jb` |
> JB finalization (symlinks, Sileo, apt, TrollStore) runs automatically on first boot via `/cores/vphone_jb_setup.sh` LaunchDaemon. Monitor progress: `/var/log/vphone_jb_setup.log`.
+30 -7
View File
@@ -18,11 +18,11 @@ Boot a virtual iPhone (iOS 26) via Apple's Virtualization.framework using PCC re
Three patch variants are available with increasing levels of security bypass:
| Variant | Boot Chain | CFW | Make Targets |
| --------------- | :-------------: | :-------: | ------------------------------------------------------------ |
| **Regular** | 41 patches | 10 phases | `fw_patch` + `cfw_install` |
| **Development** | 52 patches | 12 phases | `fw_patch_dev` + `cfw_install_dev` |
| **Jailbreak** | 66 / 78 patches | 14 phases | `fw_patch_jb` + `cfw_install_jb` |
| Variant | Boot Chain | CFW | Make Targets |
| --------------- | :---------: | :-------: | ---------------------------------- |
| **Regular** | 41 patches | 10 phases | `fw_patch` + `cfw_install` |
| **Development** | 52 patches | 12 phases | `fw_patch_dev` + `cfw_install_dev` |
| **Jailbreak** | 112 patches | 14 phases | `fw_patch_jb` + `cfw_install_jb` |
> JB finalization (symlinks, Sileo, apt, TrollStore) runs automatically on first boot via `/cores/vphone_jb_setup.sh` LaunchDaemon. Monitor progress: `/var/log/vphone_jb_setup.log`.
@@ -153,6 +153,24 @@ make boot
After `cfw_install_jb`, the jailbreak variant will have **Sileo** and **TrollStore** available on first boot. You can use Sileo to install `openssh-server` for SSH access.
For the regular/development variant, the VM gives you a **direct console**. When you see `bash-4.4#`, press Enter and run these commands to initialize the shell environment and generate SSH host keys:
```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
# generate SSH host keys (required for SSH to work)
dropbearkey -t rsa -f /var/dropbear/dropbear_rsa_host_key
dropbearkey -t ecdsa -f /var/dropbear/dropbear_ecdsa_host_key
shutdown -h now
```
> **Note:** Without the host key generation step, dropbear (SSH server) will accept connections but immediately close them because it has no keys to perform the SSH handshake.
## Subsequent Boots
```bash
@@ -162,14 +180,15 @@ make boot
In a separate terminal, start iproxy tunnels:
```bash
iproxy 2222 22 # SSH (requires openssh-server from Sileo)
iproxy 2222 22 # SSH (JB: requires openssh-server from Sileo; Regular/Dev: dropbear)
iproxy 5901 5901 # VNC
iproxy 5910 5910 # RPC
```
Connect via:
- **SSH:** `ssh -p 2222 mobile@127.0.0.1` (password: `alpine`)
- **SSH (JB):** `ssh -p 2222 mobile@127.0.0.1` (password: `alpine`)
- **SSH (Regular/Dev):** `ssh -p 2222 root@127.0.0.1` (password: `alpine`)
- **VNC:** `vnc://127.0.0.1:5901`
- [**RPC:**](http://github.com/doronz88/rpc-project) `rpcclient -p 5910 127.0.0.1`
@@ -206,6 +225,10 @@ Install `openssh-server` from Sileo (available on the jailbreak variant after fi
Reboot the VM. The SSH server will start automatically on the next boot.
**Q: Can I install `.tipa` files?**
Yes. The install menu supports both `.ipa` and `.tipa` packages. Drag and drop or use the file picker.
**Q: Can I update to a newer iOS version?**
Yes. Override `fw_prepare` with the IPSW URL for the version you want:
+72 -23
View File
@@ -18,11 +18,11 @@ Apple の Virtualization.framework と PCC の研究用 VM インフラを使用
セキュリティバイパスのレベルが異なる3つのパッチバリアントが利用可能です:
| バリアント | ブートチェーン | CFW | Make ターゲット |
| ---------- | :------------: | :---------: | ------------------------------------------------------------ |
| **通常版** | 41 パッチ | 10 フェーズ | `fw_patch` + `cfw_install` |
| **開発版** | 52 パッチ | 12 フェーズ | `fw_patch_dev` + `cfw_install_dev` |
| **脱獄版** | 66 / 78 パッチ | 14 フェーズ | `fw_patch_jb` + `cfw_install_jb` |
| バリアント | ブートチェーン | CFW | Make ターゲット |
| ---------- | :------------: | :---------: | ---------------------------------- |
| **通常版** | 41 パッチ | 10 フェーズ | `fw_patch` + `cfw_install` |
| **開発版** | 52 パッチ | 12 フェーズ | `fw_patch_dev` + `cfw_install_dev` |
| **脱獄版** | 112 パッチ | 14 フェーズ | `fw_patch_jb` + `cfw_install_jb` |
> JB最終設定(シンボリックリンク、Sileo、apt、TrollStore)は `/cores/vphone_jb_setup.sh` LaunchDaemon により初回起動時に自動実行されます。進捗確認:`/var/log/vphone_jb_setup.log`。
@@ -32,22 +32,42 @@ Apple の Virtualization.framework と PCC の研究用 VM インフラを使用
**ホストOS:** PV=3 仮想化には macOS 15+Sequoia)が必要です。
**SIPAMFIを無効化** — プライベートな Virtualization.framework の entitlement を使うために必要です。
**SIP/AMFIの設定** — プライベートな Virtualization.framework の entitlement と未署名バイナリのワークフローに必要です。
復旧モードで起動し(電源ボタンを長押し)、ターミナルを開いて以下を実行します:
復旧モードで起動し(電源ボタンを長押し)、ターミナルを開いて以下のいずれかの方法を選択します:
```bash
csrutil disable
csrutil allow-research-guests enable
```
- **方法 1SIP を完全に無効化 + AMFI boot-arg(最も制限が少ない)**
通常の macOS に再起動した後
復旧モードで
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
```bash
csrutil disable
csrutil allow-research-guests enable
```
実行したらもう一度再起動します。
通常の macOS に再起動した後:
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
もう一度再起動します。
- **方法 2:SIP はほぼ有効のまま、デバッグ制限のみ無効化、[`amfidont`](https://github.com/zqxwce/amfidont) を使用**
復旧モードで:
```bash
csrutil enable --without debug
csrutil allow-research-guests enable
```
通常の macOS に再起動した後:
```bash
xcrun python3 -m pip install amfidont
sudo amfidont --path [PATH_TO_VPHONE_DIR]
```
**依存関係のインストール:**
@@ -65,6 +85,7 @@ git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
```bash
make setup_machine # 初回起動までを完全自動化(復元/ラムディスク/CFWを含む)
# オプション:NONE_INTERACTIVE=1 SUDO_PASSWORD=...
```
## 手動セットアップ
@@ -109,7 +130,7 @@ sudo make ramdisk_build # 署名済みSSH Ramdisk のビルド
make ramdisk_send # デバイスへ送信
```
Ramdisk が起動したら(出力に `Running server` と表示されるはずです)、iproxy トンネル用 **3つ目のターミナル** を開き、ターミナル 2 から CFW をインストールします:
Ramdisk が起動したら(出力に `Running server` と表示されるはずです)、iproxy トンネル用に **3つ目のターミナル** を開き、ターミナル 2 から CFW をインストールします:
```bash
# ターミナル 3 — 実行したままにする
@@ -132,6 +153,24 @@ make boot
`cfw_install_jb` 実行後、脱獄バリアントでは初回起動時に **Sileo** と **TrollStore** が利用可能になります。Sileo から `openssh-server` をインストールして SSH アクセスを有効にできます。
通常版/開発版では、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
@@ -141,14 +180,15 @@ make boot
別のターミナルで iproxy トンネルを開始します:
```bash
iproxy 2222 22 # SSHSileo から openssh-server のインストールが必要)
iproxy 2222 22 # SSH脱獄版:Sileo から openssh-server が必要;通常版/開発版:dropbear)
iproxy 5901 5901 # VNC
iproxy 5910 5910 # RPC
```
以下で接続します:
- **SSH:** `ssh -p 2222 [email protected]` (パスワード: `alpine`)
- **SSH(脱獄版):** `ssh -p 2222 mobile@127.0.0.1` (パスワード: `alpine`)
- **SSH(通常版/開発版):** `ssh -p 2222 root@127.0.0.1` (パスワード: `alpine`)
- **VNC:** `vnc://127.0.0.1:5901`
- [**RPC:**](http://github.com/doronz88/rpc-project) `rpcclient -p 5910 127.0.0.1`
@@ -158,11 +198,16 @@ iproxy 5910 5910 # RPC
**Q: 実行しようとすると `zsh: killed ./vphone-cli` と表示されます**
AMFIが無効化されていません。boot-arg を設定して再起動してください:
AMFI/デバッグ制限が正しくバイパスされていません。以下のいずれかの方法を選択してください:
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
- **方法 1(AMFI を完全に無効化):**
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
- **方法 2(デバッグ制限のみ無効化):**
復旧モードで `csrutil enable --without debug`(完全な SIP 無効化は不要)を使用し、[`amfidont`](https://github.com/zqxwce/amfidont) をインストール/ロードして AMFI のその他の機能は有効のままにします。
**Q: システムアプリ(App Store、メッセージなど)がダウンロード・インストールできません**
@@ -180,6 +225,10 @@ Sileo から `openssh-server` をインストールしてください(脱獄
VM を再起動してください。次回起動時に SSH サーバーが自動的に開始されます。
**Q: `.tipa` ファイルをインストールできますか?**
はい。インストールメニューは `.ipa` と `.tipa` パッケージの両方に対応しています。ドラッグ&ドロップまたはファイルピッカーを使用してください。
**Q: もっと新しいiOSバージョンにアップデートできますか?**
はい。`fw_prepare` に希望するバージョンの IPSW URL を指定することでできます:
+71 -22
View File
@@ -18,11 +18,11 @@ PCC 리서치 VM 인프라와 Apple의 Virtualization.framework를 사용하여
보안 우회 수준이 다른 3가지 패치 변형을 사용할 수 있습니다:
| 변형 | 부트 체인 | CFW | Make 타겟 |
| -------- | :----------: | :-------: | ------------------------------------------------------------ |
| **일반** | 41 패치 | 10 페이즈 | `fw_patch` + `cfw_install` |
| **개발** | 52 패치 | 12 페이즈 | `fw_patch_dev` + `cfw_install_dev` |
| **탈옥** | 66 / 78 패치 | 14 페이즈 | `fw_patch_jb` + `cfw_install_jb` |
| 변형 | 부트 체인 | CFW | Make 타겟 |
| -------- | :-------: | :-------: | ---------------------------------- |
| **일반** | 41 패치 | 10 페이즈 | `fw_patch` + `cfw_install` |
| **개발** | 52 패치 | 12 페이즈 | `fw_patch_dev` + `cfw_install_dev` |
| **탈옥** | 112 패치 | 14 페이즈 | `fw_patch_jb` + `cfw_install_jb` |
> JB 최종 설정(심볼릭 링크, Sileo, apt, TrollStore)은 `/cores/vphone_jb_setup.sh` LaunchDaemon을 통해 첫 번째 부팅 시 자동으로 실행됩니다. 진행 상황 확인: `/var/log/vphone_jb_setup.log`.
@@ -32,22 +32,42 @@ PCC 리서치 VM 인프라와 Apple의 Virtualization.framework를 사용하여
**호스트 OS:** PV=3 가상화를 위해 macOS 15+(Sequoia)가 필요합니다.
**SIPAMFI 비활성화** — Private Virtualization.framework 권한을 사용하기 위해 필요합니다.
**SIP/AMFI 설정** — Private Virtualization.framework 권한과 서명되지 않은 바이너리 워크플로우에 필요합니다.
복구 모드(전원 버튼 길게 누르기)로 부팅한 후 터미널을 니다:
복구 모드(전원 버튼 길게 누르기)로 부팅한 후 터미널을 열고, 다음 중 하나를 선택합니다:
```bash
csrutil disable
csrutil allow-research-guests enable
```
- **방법 1: SIP 완전 비활성화 + AMFI boot-arg (가장 관대)**
macOS로 다시 시작한 후:
복구 모드에서:
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
```bash
csrutil disable
csrutil allow-research-guests enable
```
한 번 더 재시작합니다.
macOS로 다시 시작한 후:
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
한 번 더 재시작합니다.
- **방법 2: SIP은 대부분 활성 유지, 디버그 제한만 비활성화, [`amfidont`](https://github.com/zqxwce/amfidont) 사용**
복구 모드에서:
```bash
csrutil enable --without debug
csrutil allow-research-guests enable
```
macOS로 다시 시작한 후:
```bash
xcrun python3 -m pip install amfidont
sudo amfidont --path [PATH_TO_VPHONE_DIR]
```
**의존성(Dependencies) 설치:**
@@ -65,6 +85,7 @@ git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
```bash
make setup_machine # "First Boot"까지의 전체 과정 자동화 (복원/Ramdisk/커스텀 펌웨어 포함)
# 옵션: NONE_INTERACTIVE=1 SUDO_PASSWORD=...
```
## 수동 설정
@@ -132,6 +153,24 @@ make boot
`cfw_install_jb` 실행 후 탈옥 변형은 첫 번째 부팅 시 **Sileo**와 **TrollStore**를 사용할 수 있습니다. Sileo에서 `openssh-server`를 설치하여 SSH 접근을 활성화할 수 있습니다.
일반/개발 변형의 경우, 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
@@ -141,14 +180,15 @@ make boot
별도의 터미널에서 iproxy 터널을 시작합니다:
```bash
iproxy 2222 22 # SSH (Sileo에서 openssh-server 설치 필요)
iproxy 2222 22 # SSH (탈옥: Sileo에서 openssh-server 설치 필요; 일반/개발: dropbear)
iproxy 5901 5901 # VNC
iproxy 5910 5910 # RPC
```
다음을 통해 연결합니다:
- **SSH:** `ssh -p 2222 [email protected]` (password: `alpine`)
- **SSH (탈옥):** `ssh -p 2222 mobile@127.0.0.1` (password: `alpine`)
- **SSH (일반/개발):** `ssh -p 2222 root@127.0.0.1` (password: `alpine`)
- **VNC:** `vnc://127.0.0.1:5901`
- [**RPC:**](http://github.com/doronz88/rpc-project) `rpcclient -p 5910 127.0.0.1`
@@ -158,11 +198,16 @@ iproxy 5910 5910 # RPC
**Q: 실행하려고 하면 `zsh: killed ./vphone-cli` 오류가 발생합니다.**
AMFI가 비활성화되지 않았습니다. boot-arg를 설정하고 재시작하세요:
AMFI/디버그 제한이 올바르게 우회되지 않았습니다. 다음 중 하나를 선택하세요:
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
- **방법 1 (AMFI 완전 비활성화):**
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
- **방법 2 (디버그 제한만 비활성화):**
복구 모드에서 `csrutil enable --without debug`(완전한 SIP 비활성화 없음)를 사용한 다음, [`amfidont`](https://github.com/zqxwce/amfidont)를 설치/로드하여 AMFI의 나머지 기능은 활성 상태로 유지합니다.
**Q: 시스템 앱(App Store, 메시지 등)을 다운로드하거나 설치할 수 없습니다.**
@@ -180,6 +225,10 @@ Sileo에서 `openssh-server`를 설치하세요 (탈옥 변형 첫 부팅 후
VM을 재부팅하세요. 다음 부팅 시 SSH 서버가 자동으로 시작됩니다.
**Q: `.tipa` 파일을 설치할 수 있나요?**
네. 설치 메뉴는 `.ipa`와 `.tipa` 패키지를 모두 지원합니다. 드래그 앤 드롭 또는 파일 선택기를 사용하세요.
**Q: 최신 iOS 버전으로 업데이트할 수 있나요?**
네. `fw_prepare`를 원하는 버전의 IPSW URL로 덮어쓰세요:
+71 -22
View File
@@ -18,11 +18,11 @@
提供三种补丁变体,安全绕过级别逐步递增:
| 变体 | 启动链 | 自定义固件 | Make 目标 |
| ---------- | :------------: | :--------: | ------------------------------------------------------------ |
| **常规版** | 41 个补丁 | 10 个阶段 | `fw_patch` + `cfw_install` |
| **开发版** | 52 个补丁 | 12 个阶段 | `fw_patch_dev` + `cfw_install_dev` |
| **越狱版** | 66 / 78 个补丁 | 14 个阶段 | `fw_patch_jb` + `cfw_install_jb` |
| 变体 | 启动链 | 自定义固件 | Make 目标 |
| ---------- | :--------: | :--------: | ---------------------------------- |
| **常规版** | 41 个补丁 | 10 个阶段 | `fw_patch` + `cfw_install` |
| **开发版** | 52 个补丁 | 12 个阶段 | `fw_patch_dev` + `cfw_install_dev` |
| **越狱版** | 112 个补丁 | 14 个阶段 | `fw_patch_jb` + `cfw_install_jb` |
> 越狱最终配置(符号链接、Sileo、apt、TrollStore)通过 `/cores/vphone_jb_setup.sh` LaunchDaemon 在首次启动时自动运行。查看进度:`/var/log/vphone_jb_setup.log`。
@@ -32,22 +32,42 @@
**主机系统:** PV=3 虚拟化要求 macOS 15+Sequoia)。
**禁用 SIPAMFI** —— 需要私有的 Virtualization.framework 权限。
**配置 SIP/AMFI** —— 需要私有的 Virtualization.framework 权限和未签名二进制文件工作流
重启到恢复模式(长按电源键),打开终端:
重启到恢复模式(长按电源键),打开终端,选择以下任一设置方式
```bash
csrutil disable
csrutil allow-research-guests enable
```
- **方式 1:完全禁用 SIP + AMFI boot-arg(最宽松)**
重新启动回 macOS 后
在恢复模式中
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
```bash
csrutil disable
csrutil allow-research-guests enable
```
再重启一次。
重新启动回 macOS 后:
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
再重启一次。
- **方式 2:保持 SIP 大部分启用,仅禁用调试限制,使用 [`amfidont`](https://github.com/zqxwce/amfidont)**
在恢复模式中:
```bash
csrutil enable --without debug
csrutil allow-research-guests enable
```
重新启动回 macOS 后:
```bash
xcrun python3 -m pip install amfidont
sudo amfidont --path [PATH_TO_VPHONE_DIR]
```
**安装依赖:**
@@ -65,6 +85,7 @@ git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
```bash
make setup_machine # 完全自动化完成"首次启动"流程(包含 restore/ramdisk/CFW
# 选项:NONE_INTERACTIVE=1 SUDO_PASSWORD=...
```
## 手动设置
@@ -132,6 +153,24 @@ make boot
执行 `cfw_install_jb` 后,越狱变体在首次启动时将提供 **Sileo** 和 **TrollStore**。你可以使用 Sileo 安装 `openssh-server` 以获得 SSH 访问。
对于常规版/开发版,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
@@ -141,14 +180,15 @@ make boot
在另一个终端中启动 iproxy 隧道:
```bash
iproxy 2222 22 # SSH(需从 Sileo 安装 openssh-server
iproxy 2222 22 # SSH越狱版:需从 Sileo 安装 openssh-server;常规版/开发版:dropbear
iproxy 5901 5901 # VNC
iproxy 5910 5910 # RPC
```
连接方式:
- **SSH** `ssh -p 2222 [email protected]`(密码:`alpine`
- **SSH(越狱版)** `ssh -p 2222 mobile@127.0.0.1`(密码:`alpine`
- **SSH(常规版/开发版):** `ssh -p 2222 root@127.0.0.1`(密码:`alpine`
- **VNC** `vnc://127.0.0.1:5901`
- [**RPC**](http://github.com/doronz88/rpc-project) `rpcclient -p 5910 127.0.0.1`
@@ -158,11 +198,16 @@ iproxy 5910 5910 # RPC
**问:运行时出现 `zsh: killed ./vphone-cli`。**
AMFI 未禁用。设置 boot-arg 并重启
AMFI/调试限制未正确绕过。选择以下任一方式
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
- **方式 1(完全禁用 AMFI):**
```bash
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
```
- **方式 2(仅禁用调试限制):**
在恢复模式中使用 `csrutil enable --without debug`(不完全禁用 SIP),然后安装/加载 [`amfidont`](https://github.com/zqxwce/amfidont),保持 AMFI 其他功能不变。
**问:系统应用(App Store、信息等)无法下载或安装。**
@@ -180,6 +225,10 @@ sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
重启虚拟机。SSH 服务器将在下次启动时自动启动。
**问:可以安装 `.tipa` 文件吗?**
可以。安装菜单同时支持 `.ipa` 和 `.tipa` 包。拖放或使用文件选择器即可。
**问:可以升级到更新的 iOS 版本吗?**
可以。使用你想要的版本的 IPSW URL 覆盖 `fw_prepare`
@@ -5,7 +5,7 @@ enum VPhoneInstallPackage {
static let allowedContentTypes: [UTType] = [
UTType(filenameExtension: "ipa"),
UTType(filenameExtension: "tipa"),
].compactMap { $0 }
].compactMap(\.self)
static func isSupportedFile(_ url: URL) -> Bool {
switch url.pathExtension.lowercased() {