Mobile Application Security

Mobile Application Security

Mobile application penetration testing for Android and iOS, covering static and dynamic analysis, runtime instrumentation with Frida and Objection, and bypassing common protections like SSL pinning and root detection.

Apr 15, 2026
Updated Apr 8, 2026
2 min read

Overview

Mobile pentesting sits at an awkward intersection of reverse engineering, web testing, and platform-specific quirks. The same OWASP-style bugs you find in web apps show up in mobile apps too, but the attack surface includes the binary itself, the local storage, the inter-process communication, and the platform protections that the developers (sometimes) bolted on.

This section covers the workflows I actually use on Android and iOS engagements, the runtime tooling that makes everything tractable, and the specific techniques for getting past protections like SSL pinning and root detection.

Platforms

Runtime Instrumentation

  • Frida, the dynamic instrumentation toolkit I rely on for almost everything
  • Objection, a runtime exploration toolkit built on Frida that handles common tasks out of the box

Bypassing Protections

  • SSL Pinning Bypass, techniques for getting your proxy in the middle of pinned connections on both platforms

Methodology

Phase 1: Reconnaissance and Setup

  • Pull the APK or IPA from the device or store
  • Identify the application framework (native, Flutter, React Native, Xamarin, etc.)
  • Set up the test device, emulator or jailbroken physical
  • Configure proxy and certificates
  • Decompile and review the manifest, entitlements, and exported components

Phase 2: Static Analysis

  • Hardcoded secrets, API keys, and endpoints
  • Insecure cryptographic primitives
  • Custom obfuscation, anti-debugging, and root checks
  • Exported activities, services, content providers, and broadcast receivers
  • Deep link handlers and URL scheme abuse

Phase 3: Dynamic Analysis

  • Intercept and tamper with API traffic
  • Inspect local storage, shared preferences, keychain, and SQLite databases
  • Hook sensitive functions with Frida or Objection
  • Test authentication and session handling
  • Probe for IPC vulnerabilities and insecure exported components

Phase 4: Bypass and Escalate

  • Defeat SSL pinning to inspect TLS traffic
  • Bypass root or jailbreak detection
  • Patch local checks if needed (Smali edits, Frida hooks, or static patching)
  • Test for client-side authorization bypasses

Common Findings

FindingWhere it usually lives
Hardcoded API keysStrings in the binary, BuildConfig, plist files
Insecure data storageShared preferences, NSUserDefaults, unencrypted SQLite
Weak SSL pinningOkHttp pinners, NSURLSession delegates
Exported component abuseAndroidManifest.xml exported activities and providers
Auth tokens in logsLogcat, Console.app, crash reports
Insecure deep linksCustom URL schemes without validation

Toolkit

ToolUse
FridaDynamic instrumentation, hooking, function tracing
ObjectionFrida wrapper for common runtime tasks
apktoolAPK decompilation and rebuilding
jadxJava decompilation for Android
MobSFAutomated static and dynamic analysis
Burp SuiteHTTP/S interception
Hopper / GhidraiOS binary disassembly
MagiskAndroid root with hide capability
CorelliumVirtual iOS devices for research

Last updated on