
Теперь вы можете зеркалировать экран и управлять своим взломанным iPhone через USB
ioscpy запущен (Зарезервировано, автор реализует это полностью)ioscpy беспроводным (BLE, Wi-Fi) (Зарезервировано, автор реализует это полностью)CLI для macOS, Linux и Windows, который зеркалирует и управляет джейлбрейкнутым iPhone по USB.
При подключении одного устройства больше ничего не нужно. Он подключается сам.
Есть две стороны. Приложение для Mac запускает зеркалирование, а пакет для iPhone позволяет управлять телефоном. Установите оба.
На Mac с помощью Homebrew:
brew tap lautarovculic/ioscpy # приложение для Mac
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> # выбрать устройство, когда подключено несколько
ioscpy --list # список подключённых устройств
ioscpy --no-keyboard # скрыть экранную клавиатуру, печатать с Mac
ioscpy --mjpeg # принудительно использовать MJPEG вместо H.264 по умолчанию
ioscpy --record out.mp4 # записывать зеркалируемый экран во время зеркалирования (только видео)
ioscpy --debug # полная диагностика
ioscpy --version
--record PATH записывает то, что отображается на зеркалируемом экране, в MP4, пока идёт сеанс. Поток H.264, который телефон и так отправляет, мультиплексируется прямо в файл, поэтому ничего не перекодируется, а запись стоит одной буферизованной записи на кадр; окно остаётся таким же отзывчивым, как и было. Поток не содержит аудио, поэтому записи беззвучны. Переподключение начинает новый файл (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 устанавливает в DIR вместо /usr/local и опускает sudo, когда каталог находится внутри $HOME. --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 # должен вывести UDID при подключённом телефоне
Соберите хост от имени вашего пользователя, затем установите:
make host-release
sudo make install-host # устанавливает в /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
Этап сборки выполняется от имени вашего пользователя, чтобы был найден cargo, установленный через rustup. install-host — это отдельная цель, которая просто копирует собранный бинарный файл, поэтому она нормально работает под sudo без необходимости иметь cargo в PATH у root. Для установки без 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.
ioscpy на Windows использует инструменты USB, которые уже есть в настройке iOS, и не заменяет никакие драйверы, поэтому Frida, objection, grapefruit, ideviceinfo, iTunes и любой другой инструмент usbmux продолжают работать, пока он запущен.
Apple Mobile Device Support: устанавливается вместе с iTunes с apple.com (берите сборку с сайта 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 компилирует небольшую библиотеку C через cc).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 # подтверждает, что устройство видно
.\host\target\release\ioscpy.exe # открывает окно зеркалирования
Передайте --mjpeg, если предпочитаете путь MJPEG вместо H.264. Если openh264 не собирается, убедитесь, что nasm находится в PATH.
После respring или нового подключения дайте телефону одно физическое касание по его экрану, прежде чем управлять им с хоста. iOS доверяет только событиям касания, которые исходят от настоящего дигитайзера, поэтому именно это первое реальное касание позволяет проходить внедрённым. Вы делаете это один раз, затем хост берёт управление на себя.