Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill when:
.claude/skills/analyzing-ios-app-security-with-objection/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-13 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
Use this skill when:
Do not use this skill on production devices without explicit authorization -- Objection modifies app runtime behavior and may trigger security monitoring.
pip install objectionpip install frida-toolsobjection patchipa to inject Frida gadget into IPAFor jailbroken devices:
bash# 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
For non-jailbroken devices (authorized testing):
bash# Patch IPA with Frida gadget objection patchipa --source target.ipa --codesign-signature "Apple Development: test@example.com" # Install patched IPA ideviceinstaller -i target-patched.ipa
bash# 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.
bash# 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
bash# 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
bash# 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
bash# Check jailbreak detection implementation ios jailbreak disable # Simulate jailbreak detection bypass ios jailbreak simulate # List loaded frameworks and libraries memory list modules # Search memory for sensitive strings memory search "password" --string memory search "api_key" --string memory search "Bearer" --string # Dump specific memory regions memory dump all dump_output/
bash# List URL schemes registered by the app ios info binary ios bundles list_frameworks # Hook URL scheme handlers ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args # Monitor clipboard access ios pasteboard monitor # Check for custom keyboard restrictions ios hooking search classes UITextField
| Term | Definition | |------|-----------| | Objection | Runtime mobile exploration toolkit built on Frida that provides pre-built scripts for common security testing tasks | | Frida Gadget | Shared library injected into app process to enable Frida instrumentation without jailbreak | | Keychain | iOS secure credential storage system; Objection can dump items accessible to the target app's keychain access group | | SSL Pinning Bypass | Runtime modification of certificate validation logic to allow proxy interception of HTTPS traffic | | Method Hooking | Intercepting Objective-C/Swift method calls at runtime to observe arguments, return values, and modify behavior |
--startup-command to hook anti-Frida checks early in the app lifecycle.ios hooking list classes with grep to find demangled names.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.