
Objection has become a standard tool in iOS application security testing because it wraps Frida's dynamic instrumentation capabilities into an accessible, interactive runtime exploration shell, removing much of the friction that used to require custom scripting for common tasks. From bypassing SSL pinning to dumping keychain contents and exploring an app's internal data structures at runtime, Objection covers a large share of what an iOS assessment needs without requiring a jailbroken device in every scenario. This guide walks through practical, hands-on use of Objection for authorized iOS security testing. Mobile application assessments run by Sagefox Cybersecurity rely on this same Objection-driven workflow as a core part of iOS testing methodology.
Objection can operate against both jailbroken devices and, with some limitations, non-jailbroken devices through repackaging the target IPA with the Frida gadget embedded directly. A jailbroken device provides more complete access and is generally preferred for thorough assessments, while the repackaging approach is useful when testing needs to occur on a device that cannot or should not be jailbroken.
pip install objection frida-tools
Confirm the installation and check compatibility with the current Frida server version running on the target device.
objection version
frida --version
[cta]
On a jailbroken device, Frida server typically installs through Cydia or Sileo by adding the appropriate repository, or manually by pushing the binary directly via SSH.
scp frida-server-16.1.4-ios-arm64 root@<device_ip>:/usr/sbin/frida-server
ssh root@<device_ip> "chmod +x /usr/sbin/frida-server && /usr/sbin/frida-server &"
For testing on non-jailbroken devices, Objection can automate the process of extracting an IPA, injecting the Frida gadget, and resigning the package for installation.
objection patchipa --source target_app.ipa --codesign-signature "Apple Development: Your Name (TEAMID)"
This produces a modified IPA that loads the Frida gadget automatically on launch, allowing dynamic instrumentation without requiring the device itself to be jailbroken.
[cta]
Once patched and signed, the modified IPA can be installed onto the test device using a sideloading tool.
ideviceinstaller -i target_app_patched.ipa
With Frida server running on the device and the target application launched, Objection connects directly to the running process.
objection -g com.target.app explore
This opens an interactive shell within the context of the running application, providing access to the full range of Objection's exploration commands.
[cat]
[cta]
Once connected, a few basic commands confirm the environment and application details before proceeding with deeper testing.
ios info binary
ios bundles list_bundles
[cta]
Certificate pinning prevents traffic interception through a standard proxy like Burp Suite, which blocks nearly every other useful testing activity until it is addressed. Bypassing pinning is typically the first action taken in any iOS assessment involving network traffic analysis.
ios sslpinning disable
This command attempts to hook and neutralize common SSL pinning implementations automatically. For applications using custom or less common pinning libraries, this automatic bypass may require supplementing with a manual Frida script targeting the specific pinning implementation identified through static analysis.
After disabling pinning, configuring the device to route traffic through a proxy like Burp Suite and confirming that HTTPS traffic is now visible in plaintext within the proxy's interface confirms the bypass worked.
[cta]
iOS applications frequently store sensitive data such as authentication tokens, session identifiers, and sometimes credentials directly in the device keychain, which is intended to be a secure storage mechanism but is not immune to review during an authorized assessment.
ios keychain dump
This exports all keychain entries accessible to the current application into a readable format, revealing exactly what sensitive data the app has chosen to persist and how.
ios keychain dump --json keychain_dump.json
cat keychain_dump.json | jq '.[] | select(.Data | test("token|password|secret"; "i"))'
Filtering the dumped keychain data for likely sensitive field patterns quickly surfaces entries worth investigating further, particularly any authentication token stored without the appropriate accessibility restriction limiting it to when the device is unlocked.
[cta]
Objection provides direct access to the application's sandboxed file system, useful for identifying insecurely stored data outside the keychain.
ios file ls /var/mobile/Containers/Data/Application/<app-guid>/Documents
ios file download /var/mobile/Containers/Data/Application/<app-guid>/Documents/user_data.db ./local_copy.db
Pulling application-generated files for offline analysis allows deeper inspection with tools like a SQLite browser, revealing whether locally stored databases contain unencrypted sensitive data.
[cta]
ios file ls / --recursive | grep -i "cache\|tmp\|log"
Cache, temporary, and log directories frequently retain sensitive data longer than developers intend, making them worth specifically targeted review beyond the application's primary data directory.
Understanding an application's internal structure at runtime helps identify interesting methods worth hooking for deeper analysis.
ios hooking list classes
ios hooking search classes Auth
Filtering the potentially long list of loaded classes down to ones matching a relevant keyword, such as authentication-related class names, speeds up identifying the most promising targets for further hooking.
[cta]
ios hooking watch method "-[AuthManager validateToken:]" --dump-args --dump-return
This watches every call to the specified method, logging the arguments passed in and the value returned, which is particularly useful for understanding how an application validates authentication tokens or processes sensitive input without needing to write a custom script for every individual method of interest.
Many applications implement jailbreak detection specifically to prevent security testing on jailbroken devices, checking for the presence of common jailbreak artifacts like Cydia or altered system file permissions.
ios jailbreak disable
This attempts to bypass common jailbreak detection techniques automatically, though applications using more sophisticated or custom detection logic may require identifying the specific check through static analysis and hooking it directly with a custom Frida script.
[cta]
Applications relying on Face ID or Touch ID for sensitive actions sometimes implement the check in a way that can be bypassed if the underlying authorization logic does not properly validate the biometric result server-side or through a secure enclave-backed mechanism.
ios ui biometrics_bypass
This attempts to force a successful biometric authentication result without the device's actual biometric sensor being used, revealing whether the application's sensitive functionality properly depends on a secure authentication chain or can be bypassed through client-side manipulation alone.
As with any dynamic analysis tool, the value of Objection's output comes from what it demonstrates, not the raw commands run. A keychain dump revealing an unprotected authentication token, or a successful SSL pinning bypass that exposes previously hidden API structure, should be documented with clear before-and-after evidence showing exactly what was recovered and how.
Framing findings around realistic scenarios, such as a lost or stolen device with an attacker able to extract keychain contents without needing a passcode bypass, helps development teams understand the practical risk rather than treating a technical finding as abstract. This is the kind of scenario-driven reporting that assessments through Sagefox Cybersecurity are built around, ensuring iOS findings translate into fixes the development team can prioritize appropriately.
Objection's automatic SSL pinning and jailbreak detection bypass commands cover common implementations well but do not guarantee success against custom or heavily obfuscated logic. When an automatic bypass fails, falling back to manual static analysis and a custom Frida script remains necessary rather than concluding the app has no vulnerability in that area.
Application behavior, particularly around biometric authentication and keychain accessibility settings, can vary meaningfully across iOS versions. Testing exclusively on one OS version may miss behavior differences relevant to the broader user base running older or newer versions.
Focusing exclusively on keychain analysis while overlooking application file system storage, including cache and temporary directories, misses a meaningful category of sensitive data exposure that many applications are equally guilty of mishandling.
Objection consolidates a wide range of iOS dynamic analysis capabilities into an accessible interactive shell, covering SSL pinning bypass, keychain and file system exploration, runtime method hooking, and jailbreak or biometric bypass testing without requiring extensive custom scripting for common tasks. The tool accelerates testing significantly, but the real value still comes from a tester's judgment in interpreting what gets found, verifying it demonstrates genuine impact, and mapping it back to a realistic attack scenario a development team can act on.
If your organization needs a thorough iOS application security assessment covering runtime behavior beyond what static analysis alone can reveal, the team at Sagefox Cybersecurity can help identify what your app actually exposes at runtime and how to fix it.