Building a Jailbroken iOS 26 VM for Penetration Testing on Apple Silicon

Penetration testing iOS apps has always been a challenge for security engineers, jail-breaking physical devices and then patching the apps to support a very old version. It’s been a mess until vphone-cli came out!

vphone-cli is an open source tool that lets you run a virtual iPhone on Apple Silicon Macs using Apple’s own virtualization stack. It supports a full jailbreak variant with Sileo and TrollStore out of the box making it a powerful environment for iOS security research and penetration testing. This guide covers the complete setup process from disabling SIP to SSHing into your virtual device.

Prerequisites

Before getting started, make sure you have the following:

Hardware Requirements:

  • Apple Silicon Mac (M1, M2, M3, or M4) — Intel Macs are not supported
  • Minimum 128GB of free disk space during setup

Software Requirements:

  • macOS 15 Sequoia or later , check via Apple Menu → About This Mac
  • Homebrew installed if not, install from brew.sh
  • Xcode Command Line Tools , install via xcode-select --install

Security Settings (covered in the guide):

  • SIP (System Integrity Protection) must be disabled
  • AMFI (Apple Mobile File Integrity) must be bypassed via boot-args
  • Secure Boot must be set to Reduced Security

 

 


 

 

To start the process, first clone the repository using this command.

The repo uses git submodules for resources, vendored Swift deps, and toolchain sources under scripts/repos/. Clone with:

git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git

 

 


 

 

Setting up the system

Before we can run the virtual iPhone, we need to disable two of macOS’s core security features. Don’t worry I will explain exactly why each one is needed.

Disable SIP:

To disable SIP completely get into recovery mode by shutting down your mac, restart it by pressing and hold the power button until you see “Loading startup options”.

Click Options → Continue to enter Recovery Mode

Go to Utilities → Terminal in the menu bar

type these commands in the recovery terminal.

csrutil disable
csrutil allow-research-guests enable

restart your system and confirm that SIP is disabled using this command:

csrutil status

Disable AMFI boot-args: after disabling SIP it is important to disable the AMFI boot-args. open the terminal and type this command.

sudo nvram boot-args="amfi_get_out_of_my_way=1"

restart the system and confirm this by this command:

nvram boot-args

Significance of these steps

  • SIP to be disabled is important because of some features like secure boot. if it enabled it will not let us install the iOS in vphone. so it is needed to be disabled.
  • boot-args runs before everything, even before the kernel. so it is just like a command to tell nvram to do this thing every time the system boots. the value “amfi_get_out_…..” will the disable amfi boot-args. if it is enabled it will not let us boot the iOS that is installed in the vphone.

Install Dependencies

install all the dependencies using this command:

brew install aria2 ideviceinstaller wget gnu-tar openssl@3 ldid-procursus sshpass keystone autoconf automake pkg-config libtool cmake

Setting up your device

to get started manually, follow the steps below.

Step 1 (terminal 1): open up your terminal, move into your vphone-cli directory and type this command. this will download all the dependencies and install all the build requirements.

make setup_tools

when its done, you should see “All tools installed”.

Step 2 (terminal 1): compile and sign the main vphone-cli app from the source code using this command.

make build

when it is done, you should see “signed OK”.

Step 3 (terminal 1): next step is to create a VM in which your phone lives. use this command.

make vm_new

when its done, you should see “VM create at VM/” in the middle of your command’s output like this:

Step 4 (terminal 1): Downloads real iOS firmware from Apple’s servers, extracts and prepares it for patching.

Note: it is almost 10GB in size so it will take time

make fw_prepare

your output will be something like this:

Step 5 (terminal 1): patch the downloaded firmware by bypassing its security and jailbreaking it using this command.

make fw_patch_jb

Step 6 (terminal 1): next step is boot into the DFU mode.

make boot_dfu

wait for it until you see ‘VM started in DFU mode’ like this.

Press enter or click to view image in full size

don’t close this terminal leave it running.

Step 7 (terminal 2): open another terminal. next step is to get the shsh blob of the firmware. shsh blob is a unique digital signature generated by apple for iOS device to verify firmware during updates or restore.

make restore_get_shsh

after that flash your firmware using this command in the terminal 2.

make restore

wait for it until you see ‘DONE’ at the end.

now it is time to prepare virtual ram for you VM.

Step 8 (terminal 1): move back into terminal 1 and stop the running process using ctrl+c and boot into dfu mode again.

make boot_dfu

keep it running, open up your terminal 2 and make a virtual ramdisk using this command.

make ramdisk_build

when its done send the ramdisk to your VM using this command.

make ramdisk_send

the output of your terminal 2 will be like this:

Press enter or click to view image in full size

after that make sure that your terminal 1 is showing something like this with ‘running service’ at the end of the output.

Step 9 (terminal 3): open up another terminal and start a tunnel for ssh using this command.

iproxy 2222 22

keep it running…

Step 10 (terminal 2): next step is to Install the custom firmware with full jailbreak environment, Sileo and TrollStore:

make cfs_install_jb

wait for it until your output will be like this:


Step 11 (terminal 1): boot into your device using this command in the terminal 1.

make boot

wait for it until your device comes up….

Setting up SSH server

The setup is complete but before we dive into pentesting, establishing SSH access to the device is essential.

for that setup your device completely and wait for it until you see the home screen. you will see application called ‘sileo’ their, open it up go to search option and search for ‘sshserver’ and install it.

after installing it restart your virtual phone. make sure you have that ssh tunnel running on your computer. if not then start it again.

Connecting using SSH

after restarting your virtual phone, open a terminal and use this command to communicate through ssh.

ssh -p 2222 mobile@127.0.0.1

mobile:alpine

Confirm root

after getting into ssh try the ‘su’ command to confirm that you are root.

With a fully jailbroken iOS 26 virtual iPhone running on your Mac, you now have a powerful and cost-effective environment for iOS security research no physical device required.

 

Building a Jailbroken iOS 26 VM for Penetration Testing on Apple Silicon