vphone-cli
May 24, 2026 ยท View on GitHub
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 |
| Mac16,12 26.3 | 17,3_26.3.1_23D8133 | 26.3-23D128 |
| Mac16,11 26.2 | 17,3_26.4_23E246 | 26.4-23E5207q |
| Mac16,11 26.2 | 17,3_26.5_23F77 | 26.4-23E5207q |
ํ์จ์ด ๋ณํ
๋ณด์ ์ฐํ ์์ค์ด ๋ค๋ฅธ 5๊ฐ์ง ํจ์น ๋ณํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
| ๋ณํ | ๋ถํธ ์ฒด์ธ | CFW | Make ํ๊ฒ |
|---|---|---|---|
| Patchless | 4 ํจ์น | 2 ํ์ด์ฆ | fw_patch_less + boot_less |
| ์ผ๋ฐ | 42 ํจ์น | 10 ํ์ด์ฆ | fw_patch + cfw_install |
| ๊ฐ๋ฐ | 53 ํจ์น | 12 ํ์ด์ฆ | fw_patch_dev + cfw_install_dev |
| ํ์ฅ | 113 ํจ์น | 14 ํ์ด์ฆ | fw_patch_jb + cfw_install_jb |
| ์คํ | ํ์ฅ + EXP ์ ์ฉ | ํ์ฅ + EXP | fw_patch_exp + cfw_install_exp |
JB ์ต์ข ์ค์ (์ฌ๋ณผ๋ฆญ ๋งํฌ, Sileo, apt, TrollStore)์
/cores/vphone_jb_setup.shLaunchDaemon์ ํตํด ์ฒซ ๋ฒ์งธ ๋ถํ ์ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค. ์งํ ์ํฉ ํ์ธ:/var/log/vphone_jb_setup.log.
์คํ(EXP) ๋ณํ์ ํ์ฅ ๋ณํ์ ์์ ์งํฉ์ผ๋ก, ์ฐ๊ตฌ ๋ธ๋์น์ ์คํ์ ํจ์น๋ฅผ ์ถ๊ฐ๋ก ์คํํฉ๋๋ค: ์ปค๋
hv_vmm_presentsysctl ์ด๋ฆ ๋ณ๊ฒฝ + ์ปค๋ ๋ด๋ถ ํธ์ถ์ ๋ณ์กฐ(KernelEXPPatcher), ๋ก๊ทธ์ธ ๋ธ๋๋ฆฌ์คํธ๊ฐ ์๋ DSC ๋ฐ์ดํธ 5 ๋ณ์กฐ + ์ฌ๋กฏ ์ฌ์ธ์ฆ, watchdogd ์ ๋ฐ 2๊ฐ ๋ช ๋ น์ด ํจ์น(EXP-JB-3.5), ํ์จ์ด ํจ์น ๋จ๊ณ์ DeviceTree ์๋ณ ์์ฑ 8๊ฐ, ๋ณต์ ํ DT ์๋ณ ์ฌ์์ฑ(EXP-JB-6), ๊ทธ๋ฆฌ๊ณSPOOF_BUILD=<id>๋ฅผ ํตํ ์ตํธ์ธSystemVersion.plistProductBuildVersion์ฌ์์ฑ(EXP-JB-7). ๋ค๋ฅธ ๋ณํ์ ์๋์ ์ผ๋ก ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ปดํฌ๋ํธ๋ณ ์์ธ ๋ถ๋ฅ๋ research/0_binary_patch_comparison.md๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ ์๊ตฌ ์ฌํญ
ํธ์คํธ OS: PV=3 ๊ฐ์ํ๋ฅผ ์ํด macOS 15+(Sequoia)๊ฐ ํ์ํฉ๋๋ค.
SIP/AMFI ์ค์ โ Private Virtualization.framework ๊ถํ๊ณผ ์๋ช ๋์ง ์์ ๋ฐ์ด๋๋ฆฌ ์ํฌํ๋ก์ฐ์ ํ์ํฉ๋๋ค.
๋ณต๊ตฌ ๋ชจ๋(์ ์ ๋ฒํผ ๊ธธ๊ฒ ๋๋ฅด๊ธฐ)๋ก ๋ถํ ํ ํ ํฐ๋ฏธ๋์ ์ด๊ณ , ๋ค์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค:
-
๋ฐฉ๋ฒ 1: SIP ์์ ๋นํ์ฑํ + AMFI boot-arg (๊ฐ์ฅ ๊ด๋)
๋ณต๊ตฌ ๋ชจ๋์์:
csrutil disable csrutil allow-research-guests enablemacOS๋ก ๋ค์ ์์ํ ํ:
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"ํ ๋ฒ ๋ ์ฌ์์ํฉ๋๋ค.
-
๋ฐฉ๋ฒ 2: SIP์ ๋๋ถ๋ถ ํ์ฑ ์ ์ง, ๋๋ฒ๊ทธ ์ ํ๋ง ๋นํ์ฑํ,
amfidont๋๋amfree์ฌ์ฉ๋ณต๊ตฌ ๋ชจ๋์์:
csrutil enable --without debug csrutil allow-research-guests enablemacOS๋ก ๋ค์ ์์ํ ํ:
# amfidont ์ฌ์ฉ: xcrun python3 -m pip install amfidont sudo amfidont --path [PATH_TO_VPHONE_DIR] # ๋๋ amfree ์ฌ์ฉ: brew install retX0/tap/amfree sudo amfree --path [PATH_TO_VPHONE_DIR]์ด ์ ์ฅ์์์๋
make amfidont_allow_vphone์ผ๋กamfidont์ ํ์ํ ์ธ์ฝ๋ฉ ๊ฒฝ๋ก์ CDHash ํ์ฉ ์ค์ ์ ํ ๋ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค.
Patchless ๋ณํ์ ๋ฐฉ๋ฒ 1 ๋๋
-Sํ๋๊ทธ๋ฅผ ํฌํจํ amfidont(sudo amfidont -S --path [PATH_TO_VPHONE_DIR])๊ฐ ํ์ํฉ๋๋ค.
์์กด์ฑ(Dependencies) ์ค์น:
brew install aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone libusb ipsw zstd
scripts/fw_prepare.sh ๋ ๋ ๋น ๋ฅธ ๋ค์ค ์ฐ๊ฒฐ ๋ค์ด๋ก๋๋ฅผ ์ํด aria2c ๋ฅผ ์ฐ์ ์ฌ์ฉํ๊ณ , ํ์ํ๋ฉด curl ๋๋ wget ์ผ๋ก ํด๋ฐฑํฉ๋๋ค.
Submodules โ ์ด ์ ์ฅ์๋ ๋ฆฌ์์ค, Swift ์์กด์ฑ, scripts/repos/ ์๋ ํด์ฒด์ธ ์์ค๋ฅผ git submodule๋ก ๊ด๋ฆฌํฉ๋๋ค. ํด๋ก ์ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ธ์:
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
๋น ๋ฅธ ์์
make setup_machine # "First Boot"๊น์ง์ ์ ์ฒด ๊ณผ์ ์๋ํ (๋ณต์/Ramdisk/์ปค์คํ
ํ์จ์ด ํฌํจ)
# ์ต์
: NONE_INTERACTIVE=1 SUDO_PASSWORD=...
# LESS=1 Patchless ๋ณํ (- AMFI, SSV, Img4, TXM ์ฐํ)
# DEV=1 ๊ฐ๋ฐ ๋ณํ (+ TXM ๊ถํ/๋๋ฒ๊ทธ ์ฐํ)
# JB=1 ํ์ฅ ๋ณํ (dev + ์ ์ฒด ๋ณด์ ์ฐํ)
# EXP=1 ์คํ ๋ณํ (ํ์ฅ + ์ฐ๊ตฌ ํจ์น: hv_vmm ์ด๋ฆ ๋ณ๊ฒฝ, DT ์๋ณ, ๋ณต์ ํ ์ฌ์์ฑ)
# SPOOF_BUILD=<id> (EXP ์ ์ฉ) SystemVersion.plist์ ProductBuildVersion์ <id>๋ก ์ฌ์์ฑ, ์: 23F77
์๋ ์ค์
make setup_tools # brew ์์กด์ฑ ์ค์น, trustcache + insert_dylib ๋น๋, Python venv ์์ฑ(pymobiledevice3/aria2c ํฌํจ)
make build # vphone-cli ๋น๋ ๋ฐ ์๋ช
make vm_new # VM ๋๋ ํ ๋ฆฌ ๋ฐ ๋งค๋ํ์คํธ(config.plist) ์์ฑ
# ์ต์
: CPU=8 MEMORY=8192 DISK_SIZE=64
make fw_prepare # IPSW ๋ค์ด๋ก๋, ์ถ์ถ, ๋ณํฉ, manifest ์์ฑ
make fw_patch # ๋ถํธ ์ฒด์ธ ํจ์น (์ผ๋ฐ ๋ณํ)
# ๋๋: sudo make fw_patch_less # Patchless ๋ณํ (- AMFI, SSV, Img4, TXM ์ฐํ)
# ๋๋: make fw_patch_dev # ๊ฐ๋ฐ ๋ณํ (+ TXM ๊ถํ/๋๋ฒ๊ทธ ์ฐํ)
# ๋๋: make fw_patch_jb # ํ์ฅ ๋ณํ (dev + ์ ์ฒด ๋ณด์ ์ฐํ)
# ๋๋: make fw_patch_exp # ์คํ ๋ณํ (ํ์ฅ + ์ฐ๊ตฌ ํจ์น ์คํ)
์ ๋ฆฌ
make clean # ๋น๋/๋๊ตฌ ์ฐ์ถ๋ฌผ๋ง ์ญ์
make clean CLEAN_VM=1 # ํ์ธ ํ vm/ ๋ ์ญ์
make clean CLEAN_IPSW=1 # ํ์ธ ํ ipsws/ ๋ ์ญ์
๊ธฐ๋ณธ clean์ vm/ ๋๋ ipsws/ ๋ฅผ ์ญ์ ํ์ง ์์ต๋๋ค.
VM ์ค์
v1.0๋ถํฐ VM ์ค์ ์ vm/config.plist์ ์ ์ฅ๋ฉ๋๋ค. VM ์์ฑ ์ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ํฌ๊ธฐ๋ฅผ ์ค์ ํ์ธ์:
# ์ฌ์ฉ์ ์ ์ ์ค์ ์ผ๋ก VM ์์ฑ
make vm_new CPU=16 MEMORY=16384 DISK_SIZE=128
# ๋ถํ
์ config.plist์์ ์ค์ ์๋ ๋ก๋
make boot
๋งค๋ํ์คํธ ํ์ผ์ ๋ชจ๋ VM ์ค์ (CPU, ๋ฉ๋ชจ๋ฆฌ, ํ๋ฉด, ROM, ์ ์ฅ์)์ ์ ์ฅํ๋ฉฐ security-pcc์ VMBundle.Config ํ์๊ณผ ํธํ๋ฉ๋๋ค.
๋ณต์
๋ณต์ ํ๋ก์ธ์ค๋ฅผ ์ํด ๋ ๊ฐ์ ํฐ๋ฏธ๋์ด ํ์ํฉ๋๋ค. ํฐ๋ฏธ๋ 2๋ฅผ ์ฌ์ฉํ๋ ๋์ ํฐ๋ฏธ๋ 1์ ๊ณ์ ์คํ ์ํ๋ก ๋์ธ์.
# ํฐ๋ฏธ๋ 1
make boot_dfu # VM์ DFU ๋ชจ๋๋ก ๋ถํ
(๊ณ์ ์คํ ์ ์ง)
# ํฐ๋ฏธ๋ 2
make restore_get_shsh # SHSH blob ๊ฐ์ ธ์ค๊ธฐ
make restore # pymobiledevice3 restore ๋ฐฑ์๋๋ก ํ์จ์ด ํ๋์ฑ
# ๋๋: make restore_offline # ์คํ๋ผ์ธ ๋ณต์ (AEA ์ด๋ฏธ์ง๋ฅผ ์ ์๋ฆฌ์์ ๋ณตํธํํ๊ณ ์บ์๋ .shsh blob ์ฌ์ฉ)
# ์ต์ด 1ํ๋ AEA ๋ณตํธํ๋ฅผ ์ํด ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ํ์ํฉ๋๋ค
์ปค์คํ ํ์จ์ด ์ค์น
ํฐ๋ฏธ๋ 1์ DFU ๋ถํ ์ ์ค๋จ(Ctrl+C)ํ ๋ค์, ๋จ๋์คํฌ๋ฅผ ์ํด ๋ค์ DFU๋ก ๋ถํ ํฉ๋๋ค:
# ํฐ๋ฏธ๋ 1
make boot_dfu # ๊ณ์ ์คํ ์ ์ง
# ํฐ๋ฏธ๋ 2
sudo make ramdisk_build # ์๋ช
๋ SSH ๋จ๋์คํฌ ๋น๋
make ramdisk_send # ์ฅ์น๋ก ์ ์ก
๋จ๋์คํฌ๊ฐ ์คํ๋๋ฉด(์ถ๋ ฅ์ Running server๊ฐ ํ์๋จ), ์ธ ๋ฒ์งธ ํฐ๋ฏธ๋์ ์ด์ด usbmux ํฐ๋์ ์์ํ ํ, ํฐ๋ฏธ๋ 2์์ ์ปค์คํ
ํ์จ์ด๋ฅผ ์ค์นํฉ๋๋ค:
# ํฐ๋ฏธ๋ 3 โ ๊ณ์ ์คํ ์ ์ง
python3 -m pymobiledevice3 usbmux forward 2222 22
# ํฐ๋ฏธ๋ 2
make cfw_install
# ๋๋: make cfw_install_jb # ํ์ฅ ๋ณํ
# ๋๋: make cfw_install_exp # ์คํ ๋ณํ (ํ์ฅ + ์ฐ๊ตฌ ํจ์น ์คํ)
# ๋๋: SPOOF_BUILD=23F77 make cfw_install_exp # ์ถ๊ฐ๋ก ProductBuildVersion ์ฌ์์ฑ
์ฒซ ๋ถํ
ํฐ๋ฏธ๋ 1์ DFU ๋ถํ ์ ์ค๋จ(Ctrl+C)ํ ํ ๋ค์์ ์คํํฉ๋๋ค:
make boot
cfw_install_jb ์คํ ํ ํ์ฅ ๋ณํ์ ์ฒซ ๋ฒ์งธ ๋ถํ
์ Sileo์ TrollStore๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Sileo์์ openssh-server๋ฅผ ์ค์นํ์ฌ SSH ์ ๊ทผ์ ํ์ฑํํ ์ ์์ต๋๋ค.
์ผ๋ฐ/๊ฐ๋ฐ ๋ณํ์ ๊ฒฝ์ฐ, VM์์ direct console์ด ๋ํ๋ฉ๋๋ค. bash-4.4#์ด ๋ณด์ด๋ฉด ์ํฐ๋ฅผ ๋๋ฅด๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์ ํ๊ฒฝ์ ์ด๊ธฐํํ๊ณ SSH ํธ์คํธ ํค๋ฅผ ์์ฑํ์ธ์:
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 ํธ๋์ ฐ์ดํฌ๋ฅผ ์ํํ ํค๊ฐ ์์ด ์ฆ์ ์ฐ๊ฒฐ์ ์ข ๋ฃํฉ๋๋ค.
์ดํ ๋ถํ
make boot
๋ณ๋์ ํฐ๋ฏธ๋์์ usbmux ํฌ์๋ฉ ํฐ๋์ ์์ํฉ๋๋ค:
python3 -m pymobiledevice3 usbmux forward 2222 22222 # SSH (dropbear)
python3 -m pymobiledevice3 usbmux forward 2222 22 # SSH (ํ์ฅ: Sileo์์ openssh-server๋ฅผ ์ค์นํ ๊ฒฝ์ฐ)
python3 -m pymobiledevice3 usbmux forward 5901 5901 # VNC
python3 -m pymobiledevice3 usbmux forward 5910 5910 # RPC
๋ค์์ ํตํด ์ฐ๊ฒฐํฉ๋๋ค:
- 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:
rpcclient -p 5910 127.0.0.1
VM ๋ฐฑ์ ๋ฐ ์ ํ
์ฌ๋ฌ VM ํ๊ฒฝ(์: ๋ค๋ฅธ iOS ๋น๋ ๋๋ ํ์จ์ด ๋ณํ)์ ์ ์ฅํ๊ณ ์ ํํ ์ ์์ต๋๋ค. ๋ฐฑ์
์ vm.backups/์ ์ ์ฅ๋๋ฉฐ rsync --sparse๋ฅผ ์ฌ์ฉํ์ฌ ํฌ์ ๋์คํฌ ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
make vm_backup NAME=26.1-clean # ํ์ฌ VM ์ ์ฅ
rm -rf vm && make vm_new # ์๋ก์ด ๋น๋๋ฅผ ์ํด ์ด๊ธฐํ
# ... fw_prepare, fw_patch, restore, cfw_install, boot
make vm_backup NAME=26.3-jb # ์ VM๋ ์ ์ฅ
make vm_list # ๋ชจ๋ ๋ฐฑ์
๋ชฉ๋ก ๋ณด๊ธฐ
make vm_switch NAME=26.1-clean # ๋ฐฑ์
๊ฐ ์ ํ
์ฐธ๊ณ : ๋ฐฑ์ /์ ํ/๋ณต์ ์ ์ ๋ฐ๋์ VM์ ์ค์งํ์ธ์.
FAQ
๋ฌด์๋ณด๋ค ๋จผ์ โ
git pull์ ์คํํ์ฌ ์ต์ ๋ฒ์ ์ธ์ง ํ์ธํ์ธ์.
Q: ์คํํ๋ ค๊ณ ํ๋ฉด zsh: killed ./vphone-cli ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
AMFI/๋๋ฒ๊ทธ ์ ํ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฐํ๋์ง ์์์ต๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ ํํ์ธ์:
-
๋ฐฉ๋ฒ 1 (AMFI ์์ ๋นํ์ฑํ):
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v" -
๋ฐฉ๋ฒ 2 (๋๋ฒ๊ทธ ์ ํ๋ง ๋นํ์ฑํ): ๋ณต๊ตฌ ๋ชจ๋์์
csrutil enable --without debug(์์ ํ SIP ๋นํ์ฑํ ์์)๋ฅผ ์ฌ์ฉํ ๋ค์,amfidont๋๋amfree๋ฅผ ์ค์น/๋ก๋ํ์ฌ AMFI์ ๋๋จธ์ง ๊ธฐ๋ฅ์ ํ์ฑ ์ํ๋ก ์ ์งํฉ๋๋ค. ์ด ์ ์ฅ์์์๋make amfidont_allow_vphone์ผ๋กamfidont์ ํ์ํ ์ธ์ฝ๋ฉ ๊ฒฝ๋ก์ CDHash ํ์ฉ ์ค์ ์ ์๋ ์ ์ฉํ ์ ์์ต๋๋ค.
Q: make boot / make boot_dfu ์คํ ์ VZErrorDomain Code=2 "Virtualization is not available on this hardware."๋ก ์คํจํฉ๋๋ค.
ํธ์คํธ ์์ฒด๊ฐ Apple ๊ฐ์ ๋จธ์ ์์ ์คํ ์ค์ด๊ธฐ ๋๋ฌธ์, ์ค์ฒฉ๋ Virtualization.framework ๊ฒ์คํธ ๋ถํ
์ ์ง์๋์ง ์์ต๋๋ค. ์ค์ฒฉ์ด ์๋ macOS 15+ ํธ์คํธ์์ ์คํํ์ธ์. make boot_host_preflight์์ Model Name: Apple Virtual Machine 1 ๋ฐ kern.hv_vmm_present=1๋ก ์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ํ์ฌ๋ ์ด๋ฐ ํธ์คํธ์์ boot_binary_check๊ฐ VM ์์ ์ ์ ๋น ๋ฅด๊ฒ ์คํจ ์ฒ๋ฆฌํฉ๋๋ค.
Q: ์์คํ ์ฑ(App Store, ๋ฉ์์ง ๋ฑ)์ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ์ค์นํ ์ ์์ต๋๋ค.
iOS ์ด๊ธฐ ์ค์ ์ ์ง์ญ์ ์ผ๋ณธ ๋๋ ์ ๋ฝ ์ฐํฉ์ผ๋ก ์ ํํ์ง ๋ง์ธ์. ์ด ์ง์ญ์์๋ ์ถ๊ฐ์ ์ธ ๊ท์ ๊ฒ์ฌ(์ฌ์ด๋๋ก๋ฉ ๊ณต๊ฐ, ์นด๋ฉ๋ผ ์ ํฐ์ ๋ฑ)๊ฐ ์ ์ฉ๋๋๋ฐ, ๊ฐ์ ๋จธ์ ์ ์ด๋ฌํ ์๊ฑด์ ์ถฉ์กฑํ ์ ์์ด ์์คํ ์ฑ์ ๋ค์ด๋ก๋ ๋ฐ ์ค์น๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํผํ๋ ค๋ฉด ๋ค๋ฅธ ์ง์ญ(์: ๋ฏธ๊ตญ)์ ์ ํํ์ธ์.
Q: "Press home to continue" ํ๋ฉด์์ ๋ฉ์ท์ต๋๋ค.
VNC(vnc://127.0.0.1:5901)๋ก ์ ์ํ์ฌ ํ๋ฉด์ ์๋ฌด ๊ณณ์ด๋ ์ฐํด๋ฆญ(Mac ํธ๋ํจ๋์์๋ ๋ ์๊ฐ๋ฝ ํด๋ฆญ)ํ์ธ์. ์ด๊ฒ์ด ํ ๋ฒํผ ๋๋ฅด๊ธฐ๋ฅผ ์๋ฎฌ๋ ์ด์
ํฉ๋๋ค.
Q: SSH ์ ๊ทผ์ ํ์ฑํํ๋ ค๋ฉด?
Sileo์์ openssh-server๋ฅผ ์ค์นํ์ธ์ (ํ์ฅ ๋ณํ ์ฒซ ๋ถํ
ํ ์ฌ์ฉ ๊ฐ๋ฅ).
Q: openssh-server๋ฅผ ์ค์นํ๋๋ฐ SSH๊ฐ ์๋ํ์ง ์์ต๋๋ค.
VM์ ์ฌ๋ถํ ํ์ธ์. ๋ค์ ๋ถํ ์ SSH ์๋ฒ๊ฐ ์๋์ผ๋ก ์์๋ฉ๋๋ค.
Q: .tipa ํ์ผ์ ์ค์นํ ์ ์๋์?
๋ค. ์ค์น ๋ฉ๋ด๋ .ipa์ .tipa ํจํค์ง๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค. ๋๋๊ทธ ์ค ๋๋กญ ๋๋ ํ์ผ ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ธ์.
Q: ์ต์ iOS ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๋์?
๋ค. fw_prepare๋ฅผ ์ํ๋ ๋ฒ์ ์ IPSW URL๋ก ๋ฎ์ด์ฐ์ธ์:
export IPHONE_SOURCE=/path/to/some_os.ipsw
export CLOUDOS_SOURCE=/path/to/some_os.ipsw
make fw_prepare
make fw_patch
์ ํฌ์ ํจ์น๋ ์ ์ ์คํ์ ์ด ์๋ ๋ฐ์ด๋๋ฆฌ ๋ถ์์ ํตํด ์ ์ฉ๋๋ฏ๋ก, ์ต์ ๋ฒ์ ์์๋ ์๋ํ ๊ฒ์ ๋๋ค. ๋ง์ฝ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด AI์๊ฒ ๋์์ ์์ฒญํ์ธ์.
Q: restore_offline๋ฅผ ์ฌ์ฉํ๋๋ ์ค์ ํ๋ฉด์์ ์งํ์ด ๋ฉ์ท์ต๋๋ค
์ค์ ๊ณผ์ ์์ Apple ์๋ฒ์ ์ฐ๊ฒฐ์ ์๋ํ๋๋ฐ, restore_offline๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋์ด ์์ง ์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
๊ธฐ๊ธฐ๋ฅผ supervised ์ํ๋ก ๋ง๋ค๋ฉด ์ค์ ํ๋ฉด์ ๋๋ถ๋ถ์ ์ฐํํ ์ ์์ต๋๋ค:
python3 -m pymobiledevice3 profile supervise vphone