
これで、脱獄したiPhoneをUSB経由でミラーリングして操作できます。
ioscpy が実行中であることを示す通知 (予約済み、作者が完全に実装予定)ioscpy のワイヤレス化 (BLE、Wi-Fi) (予約済み、作者が完全に実装予定)脱獄済み iPhone を USB 経由でミラーリングおよび操作する macOS、Linux、Windows 用 CLI。
デバイスを 1 台接続するだけで十分です。自動的に接続されます。
2 つの側面があります。Mac アプリがミラーリングを実行し、iPhone パッケージが 電話を操作可能にします。両方をインストールしてください。
Mac では、Homebrew を使用して:
brew tap lautarovculic/ioscpy # the Mac app
brew trust lautarovculic/ioscpy
brew install ioscpy
ioscpy --version
脱獄済み iPhone では、Sileo または Zebra でこのリポジトリを追加し、そこから ioscpy をインストールして respring してください:
https://lautarovculic.github.io/ioscpy-repo/
リポジトリには rootless ビルドと rootful ビルドの両方が含まれており、パッケージ マネージャーが脱獄環境に一致するものを選択します。
ioscpy --device <UDID> # pick a device when several are attached
ioscpy --list # list attached devices
ioscpy --no-keyboard # hide the on-screen keyboard, type from the Mac
ioscpy --mjpeg # force MJPEG video instead of the default H.264
ioscpy --record out.mp4 # record the mirrored screen while mirroring (video only)
ioscpy --debug # full diagnostics
ioscpy --version
--record PATH は、セッションの実行中にミラーリングされた画面の内容を MP4 に
書き込みます。電話がすでに送信している H.264 ストリームはそのままファイルに
多重化されるため、再エンコードは発生せず、録画のコストはフレームごとのバッファ
書き込みのみです。ウィンドウの応答性は変わりません。ストリームには音声が含まれ
ないため、録画は無音です。再接続すると、切断されたセッションが書き込んだファイル
を上書きするのではなく、新しいファイル (out-2.mp4、out-3.mp4、…) が開始
されます。
トラックはセッション開始後の最初のキーフレームから始まり、ファイルはウィンドウが
閉じられたときにファイナライズされます。録画はストリーム自身の向きに従うため、
電話を横向きに保持してキャプチャしたセッションは回転した状態で保存されます。
QuickTime の回転、または ffmpeg -display_rotation 90 -i out.mp4 -c copy を
1 回実行することで、どちらも再エンコードせずに修正できます。
Linux 用のビルド済みバイナリはまだありません。ホストをソースからビルドして ください。デバイスパッケージは macOS と同じで、上記の Sileo/Zebra リポジトリ からインストールします。
このリポジトリをクローンし、インストーラーを実行します:
./install.sh
--yes は確認プロンプトをスキップします。--prefix DIR は /usr/local の
代わりに DIR にインストールし、ディレクトリが $HOME 配下にある場合は
sudo を省略します。--uninstall はインストールされたバイナリを削除します。
Debian/Ubuntu での前提条件:
sudo apt install build-essential pkg-config nasm \
libimobiledevice-utils usbmuxd \
libxkbcommon-dev libwayland-dev \
libxcb1-dev libxkbcommon-x11-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
デバイスが認識されるように usbmuxd が実行中であることを確認してください:
sudo systemctl enable --now usbmuxd
idevice_id -l # should print the UDID with the phone attached
ユーザーとしてホストをビルドし、インストールします:
make host-release
sudo make install-host # installs to /usr/local/bin/ioscpy
ioscpy --version
./install.sh は Arch Linux でも動作します。
sudo pacman -S --needed \
base-devel pkgconf nasm \
libimobiledevice usbmuxd \
libxkbcommon wayland libxcb libxkbcommon-x11 \
rustup curl git
rustup default stable
サービスを有効化
sudo systemctl enable --now usbmuxd.service
デバイスが接続されているか確認
idevice_id -l
その後バイナリを実行
cd host/target/release && chmod +x ioscpy
./ioscpy
ビルドステップはユーザーのまま実行されるため、rustup でインストールされた
cargo が見つかります。install-host はビルド済みバイナリをコピーするだけの
別のターゲットであるため、root の PATH に cargo がなくても sudo で問題なく
実行できます。ホームディレクトリに sudo なしでインストールするには、
make install-host PREFIX=$HOME/.local を使用し、$HOME/.local/bin が
PATH に含まれていることを確認してください。
H.264 デコードは Linux では openh264 ソフトウェアデコーダーを通じて動作
します。MJPEG パスを好む場合は --mjpeg を渡してください。
サーバーサイドデコレーションを拒否する Wayland コンポジター (GNOME/mutter)
では、ioscpy は自動的に X11/XWayland にフォールバックし、ウィンドウに通常の
タイトルバーが付きます。ネイティブ Wayland のままにするには --wayland を
渡してください。
Windows 用のビルド済みバイナリはまだありません。ホストをソースからビルドして ください。デバイスパッケージは macOS および Linux と同じで、Sileo/Zebra リポジトリからインストールします。
Windows 上の ioscpy は、iOS セットアップがすでに持っている USB ツールを再利用 し、ドライバーを 置き換えません。そのため、Frida、objection、grapefruit、 ideviceinfo、iTunes、その他すべての usbmux ツールは実行中も動作し続けます。
Apple Mobile Device Support: apple.com から iTunes とともにインストール します (Microsoft Store 版ではなく Apple ウェブサイト版を入手してください)、 またはスタンドアロンの AMDS パッケージ。これが USB ドライバーと usbmuxd を 提供します。iTunes が電話を認識する必要があります。
libimobiledevice-win32: iproxy.exe、idevice_id.exe、
ideviceinfo.exe を提供します。Scoop でインストール:
scoop install libimobiledevice
または MSYS2 で:
pacman -S mingw-w64-x86_64-libimobiledevice
3 つの .exe ファイルが PATH 上にあることを確認してください (または
ioscpy.exe の隣に配置してください)。idevice_id -l で確認すると、デバイス
の UDID が表示されるはずです。
openh264 デコーダーは
cc を通じて小さな C ライブラリをコンパイルします)。PATH 上に: openh264 のアセンブラー (scoop install nasm)。git clone https://github.com/lautarovculic/ioscpy
cd ioscpy
cargo build --release --manifest-path host/Cargo.toml
.\host\target\release\ioscpy.exe --list # confirms the device is seen
.\host\target\release\ioscpy.exe # opens the mirror window
H.264 よりも MJPEG パスを好む場合は --mjpeg を渡してください。openh264 の
ビルドに失敗する場合は、nasm が PATH 上にあることを確認してください。
respring 後または新規接続後、ホストから操作する前に、電話の画面を物理的に 1 回タップしてください。iOS は実際のデジタイザーから来たタッチイベントのみを 信頼するため、その最初の実際のタップが、注入されたタッチイベントを通過させる きっかけになります。一度行えば、その後はホストが引き継ぎます。
Linux および Windows では、これらのショートカットに Cmd の代わりに Ctrl を 使用してください (Ctrl+C、Ctrl+V など)。クリップボードは引き続き双方向に 同期します。
電話を回転させると、ミラーが回転およびリサイズされます。
ホスト:
デバイス:
| layout | device | iOS | injection |
|---|---|---|---|
| roothide | iPhone11,2 | 15.5 | ElleKit |
| roothide | iPhone10,4 | 16.7.12 | ElleKit |
| roothide | iPhone10,3 | 16.7.10 | ElleKit |
| roothide | iPhone14 | 16.3 | ------- |
| rootless | iPhone13 | 15.5 | ElleKit |
ioscpy は上記のデバイスで開発およびテストされています。rootful デバイスや すべての iOS バージョンを手元に持っているわけではないため、レイアウト別の カバレッジは不完全です:
| layout | status |
|---|---|
| rootless | builds; runs on the roothide unit via /var/jb |
| roothide | working (rootless .deb via /var/jb) |
| rootful | builds and layout validated; runtime not tested |
異なる iPhone、iOS バージョン、または脱獄環境で ioscpy を実行する場合は、 この情報の充実にご協力ください。特に rootful およびその他の iOS バージョンの テストが必要です。
ioscpy --debug の出力host/ Rust host CLI (macOS, Linux, and Windows)
device/ iOS package (Theos): daemon, ctl, tweak, jbcompat, packaging
protocol/ wire format docs, kept in lockstep with the code
scripts/ device deploy, respring, log, and diagnostics helpers
docs/ architecture, jailbreak compatibility, troubleshooting, release
make host-release # macOS host binary
make device-rootless # rootless .deb (Dopamine, palera1n-rootless, /var/jb)
make device-rootful # rootful .deb (palera1n-rootful, /)
make release # host plus both device variants
Rust、Theos ($THEOS)、libimobiledevice (idevice_id、iproxy)、ldid、
および dpkg-deb が必要です。