πŸ€–How to use Frida on iOS 17 without Jailbreak

Identifying the problem

Basically, starting with iOS 17 or above, I can’t use ios-deploy because this tool depends on DeveloperDiskImage (DDI), which is used for debugging the app and other tasks.

You can view the image below:

Error
No DDI available for iOS 17

How to solve it

To use Frida on iOS 17 without jailbreak, you need:

  • A decrypted .ipa file

  • Xcode installed

  • Code signing and provisioning profile (Xcode will handle this for you; you only need to log in with your Apple ID and create a new project)

In this example, I will use SecureStorev2. You can find the .ipa download for this app in the β€˜Setup Lab’ section.

First, you need to obtain your signing ID. For this, you can use:

The code signature looks like this:

Code Signature

Next, we’ll insert the dylib. To install insert_dylib, use the following commands

After installing insert_dylib, we need to install objection:

We use this command to sign the app with the Frida Gadget dylib:

Objection patchipa

Reminder: The code signing signature can be obtained using the commands mentioned above, but first, you need to have Xcode installed and create a project in Xcode.

You can also find the provisioning profile in the project I created called β€˜Hacking.’ Additionally, you can see the patched .ipa file named β€˜SecureStorev2-frida-codesigned.ipa.’

Now we need to install the .app contained inside the .ipa. To do this, extract the .ipa using the following command:

Unzip .ipa

Now we’ll install the .app:

  1. Install the Xcode CLI tools using the following command:

  1. Connect your device to your computer and list the devices to get the device ID

List Devices

In my case, my device ID starts with 0008030.

  1. Install the .app:

Install .app
  1. Start the process:

Start Process
  1. Now the process is stuck on the screen:

Proccess Stuck
  1. Open Xcode, then go to Debug > Attach to Process and select the SecureStore process:

Initiate a debug
  1. At the bottom of the screen, you can find the Frida server port:

Frida listening
  1. Now we need to forward this port using pymobiledevice3arrow-up-right:

  1. Now start objection:

  1. Finish

Finish

Credits: https://github.com/frida/frida/issues/2663#issuecomment-1956330432arrow-up-right

Last updated