
이제 USB를 통해 탈옥된 아이폰을 미러링하고 제어할 수 있습니다.
ioscpy is running (Reserved, Author will implement this fully)ioscpy wireless (BLE, Wi-Fi) (Reserved, Author will implement this fully)macOS, Linux, Windows용 CLI로, USB로 연결된 탈옥된 iPhone을 미러링하고 제어합니다.
기기가 하나 연결되어 있으면 그걸로 충분합니다. 스스로 연결됩니다.
두 가지 측면이 있습니다. 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 스트림이 파일에 그대로 mux되므로, 아무것도
재인코딩되지 않고 녹화 비용은 프레임당 버퍼링된 쓰기뿐입니다. 창은
이전과 같은 반응성을 유지합니다. 스트림에는 오디오가 없으므로 녹화물은
무음입니다. 재연결 시 끊긴 세션이 기록한 파일을 덮어쓰는 대신 새 파일
(out-2.mp4, out-3.mp4, …)을 시작합니다.
트랙은 세션이 시작된 후 첫 키프레임에서 시작하며, 창이 닫힐 때 파일이
마무리됩니다. 녹화는 스트림 자체의 방향을 따르므로, 폰을 가로로 들고
캡처한 세션은 회전된 상태로 저장됩니다. QuickTime의 회전, 또는
ffmpeg -display_rotation 90 -i out.mp4 -c copy 한 번으로 재인코딩 없이
이를 바로잡을 수 있습니다.
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와 함께 설치하거나(Apple 웹사이트 빌드를 받으세요, Microsoft Store 버전이 아님), 독립 실행형 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
세 개의 .exe 파일이 PATH에 있는지 확인하세요(또는 ioscpy.exe 옆에 두세요). idevice_id -l로 확인하면 기기 UDID가 출력되어야 합니다.
openh264 디코더가
cc를 통해 작은 C 라이브러리를 컴파일합니다).PATH에 nasm: 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 또는 새 연결 후에는 호스트에서 조작하기 전에 폰 화면을 한 번 물리적으로 탭하세요. 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가 필요합니다.
ioscpy는 자신의 탈옥된 iPhone을 Mac 및 Linux(Debian, Ubuntu, Arch Linux) 기기에서 USB 케이블로, 같은 책상 위에서 제어하기 위한 것입니다.