Evaluating iOS app behavior at runtime without access to source code
Do not use this skill on production devices without explicit authorization -- Objection modifies app runtime behavior and may trigger security monitoring.
Prerequisites
Python 3.10+ with pip
Objection installed: pip install objection
Frida installed: pip install frida-tools
Target iOS device (jailbroken with Frida server, or non-jailbroken with repackaged IPA)
For non-jailbroken: objection patchipa to inject Frida gadget into IPA
macOS recommended for iOS testing (Xcode, ideviceinstaller)
USB connection to target device or network Frida server
Workflow
Step 1: Prepare the Testing Environment
For jailbroken devices:
# Install Frida server on device via Cydia/Sileo
# SSH to device and start Frida server
ssh root@<device_ip> "/usr/sbin/frida-server -D"
# Verify Frida connectivity
frida-ps -U # List processes on USB-connected device
# Attach to running app by bundle ID
objection --gadget "com.target.app" explore
# Or spawn the app fresh
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
Once attached, Objection provides an interactive REPL for runtime exploration.
Step 3: Assess Data Storage Security (MASVS-STORAGE)
# Dump iOS Keychain items accessible to the app
ios keychain dump
# List files in app sandbox
ios plist cat Info.plist
env # Show app environment paths
# Inspect NSUserDefaults for sensitive data
ios nsuserdefaults get
# List SQLite databases
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# Check for sensitive data in pasteboard
ios pasteboard monitor
Step 4: Evaluate Network Security (MASVS-NETWORK)
# Disable SSL/TLS certificate pinning
ios sslpinning disable
# Verify pinning is bypassed by observing traffic in Burp Suite proxy
# Monitor network-related class method calls
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
Step 5: Inspect Authentication and Authorization (MASVS-AUTH)
# List all Objective-C classes
ios hooking list classes
# Search for authentication-related classes
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# Hook authentication methods to observe parameters
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# Monitor biometric authentication calls
ios hooking watch class LAContext
Frida-tools: CLI utilities for Frida including frida-ps, frida-trace, and frida-discover
ideviceinstaller: Cross-platform tool for installing/managing iOS apps via USB
Burp Suite: HTTP proxy for intercepting traffic after SSL pinning bypass
Common Pitfalls
App crashes on attach: Some apps implement Frida detection. Use --startup-command to hook anti-Frida checks early in the app lifecycle.
Keychain access scope: Objection can only dump keychain items within the app's access group. System keychain items require separate jailbreak-level tools.
Swift name mangling: Swift method names are mangled in the runtime. Use ios hooking list classes with grep to find demangled names.
Non-persistent changes: All Objection modifications are runtime-only and reset on app restart. Document findings immediately.