OWASP Mobile Application Security
Waiting for the debugger
Initializing search
OWASP/owasp-mastg
Home
MASTG
MASVS
MAS Checklist
MAS Crackmes
🗞 News
🎙 Talks
⭐ Contribute
💙 Donate
💬 Connect with Us
OWASP Mobile Application Security
OWASP/owasp-mastg
Home
MASTG
MASTG
Intro
Intro
Foreword
Frontispiece
OWASP MASVS and MASTG Adoption
Acknowledgments
Introduction to the OWASP Mobile Application Security Project
Suggested Reading
Theory
Theory
General Concepts
General Concepts
Mobile Application Taxonomy
Mobile Application Security Testing
Mobile App Tampering and Reverse Engineering
Mobile App Authentication Architectures
Mobile App Network Communication
Mobile App Cryptography
Mobile App Code Quality
Mobile App User Privacy Protection
Android Security Testing
Android Security Testing
Android Platform Overview
Android Security Testing
Android Data Storage
Android Cryptographic APIs
Android Local Authentication
Android Network Communication
Android Platform APIs
Android Code Quality and Build Settings
Android Anti-Reversing Defenses
iOS Security Testing
iOS Security Testing
iOS Platform Overview
iOS Security Testing
iOS Data Storage
iOS Cryptographic APIs
iOS Local Authentication
iOS Network Communication
iOS Platform APIs
iOS Code Quality and Build Settings
iOS Anti-Reversing Defenses
Tests
Tests
Android
Android
MASVS-STORAGE
MASVS-STORAGE
Testing Local Storage for Sensitive Data
Testing Logs for Sensitive Data
Determining Whether Sensitive Data Is Shared with Third Parties via Embedded Services
Determining Whether Sensitive Data Is Shared with Third Parties via Notifications
Determining Whether the Keyboard Cache Is Disabled for Text Input Fields
Testing Backups for Sensitive Data
Testing Memory for Sensitive Data
Testing the Device-Access-Security Policy
MASVS-CRYPTO
MASVS-CRYPTO
Testing Symmetric Cryptography
Testing the Configuration of Cryptographic Standard Algorithms
Testing the Purposes of Keys
Testing Random Number Generation
MASVS-AUTH
MASVS-AUTH
Testing Confirm Credentials
Testing Biometric Authentication
MASVS-NETWORK
MASVS-NETWORK
Testing Data Encryption on the Network
Testing the TLS Settings
Testing Endpoint Identify Verification
Testing Custom Certificate Stores and Certificate Pinning
Testing the Security Provider
MASVS-PLATFORM
MASVS-PLATFORM
Determining Whether Sensitive Stored Data Has Been Exposed via IPC Mechanisms
Checking for Sensitive Data Disclosure Through the User Interface
Finding Sensitive Information in Auto-Generated Screenshots
Testing for App Permissions
Testing Deep Links
Testing for Sensitive Functionality Exposure Through IPC
Testing for Vulnerable Implementation of PendingIntent
Testing JavaScript Execution in WebViews
Testing WebView Protocol Handlers
Testing for Java Objects Exposed Through WebViews
Testing for Overlay Attacks
Testing WebViews Cleanup
MASVS-CODE
MASVS-CODE
Testing Local Storage for Input Validation
Testing for Injection Flaws
Testing Implicit Intents
Testing for URL Loading in WebViews
Testing Object Persistence
Testing Enforced Updating
Checking for Weaknesses in Third Party Libraries
Memory Corruption Bugs
Make Sure That Free Security Features Are Activated
MASVS-RESILIENCE
MASVS-RESILIENCE
Making Sure that the App is Properly Signed
Testing whether the App is Debuggable
Testing for Debugging Symbols
Testing for Debugging Code and Verbose Error Logging
Testing Root Detection
Testing Anti-Debugging Detection
Testing File Integrity Checks
Testing Reverse Engineering Tools Detection
Testing Emulator Detection
Testing Runtime Integrity Checks
Testing Obfuscation
iOS
iOS
MASVS-STORAGE
MASVS-STORAGE
Testing Local Data Storage
Checking Logs for Sensitive Data
Determining Whether Sensitive Data Is Shared with Third Parties
Finding Sensitive Data in the Keyboard Cache
Testing Backups for Sensitive Data
Testing Memory for Sensitive Data
MASVS-CRYPTO
MASVS-CRYPTO
Verifying the Configuration of Cryptographic Standard Algorithms
Testing Key Management
Testing Random Number Generation
MASVS-AUTH
MASVS-AUTH
Testing Local Authentication
MASVS-NETWORK
MASVS-NETWORK
Testing Data Encryption on the Network
Testing the TLS Settings
Testing Endpoint Identity Verification
Testing Custom Certificate Stores and Certificate Pinning
MASVS-PLATFORM
MASVS-PLATFORM
Determining Whether Sensitive Data Is Exposed via IPC Mechanisms
Checking for Sensitive Data Disclosed Through the User Interface
Testing Auto-Generated Screenshots for Sensitive Information
Testing App Permissions
Testing Universal Links
Testing UIActivity Sharing
Testing App Extensions
Testing UIPasteboard
Testing for Sensitive Functionality Exposure Through IPC
Testing Custom URL Schemes
Testing iOS WebViews
Testing WebView Protocol Handlers
Determining Whether Native Methods Are Exposed Through WebViews
MASVS-CODE
MASVS-CODE
Testing Object Persistence
Testing Enforced Updating
Checking for Weaknesses in Third Party Libraries
Memory Corruption Bugs
Make Sure That Free Security Features Are Activated
MASVS-RESILIENCE
MASVS-RESILIENCE
Making Sure that the App Is Properly Signed
Testing whether the App is Debuggable
Testing for Debugging Symbols
Testing for Debugging Code and Verbose Error Logging
Testing Jailbreak Detection
Testing Anti-Debugging Detection
Testing File Integrity Checks
Testing Reverse Engineering Tools Detection
Testing Emulator Detection
Testing Obfuscation
Techniques
Techniques
Generic
Generic
Reverse Engineering
Static Analysis
Dynamic Analysis
Binary Analysis
Tampering and Runtime Instrumentation
Android
Android
Accessing the Device Shell
Host-Device Data Transfer
Obtaining and Extracting Apps
Repackaging Apps
Installing Apps
Listing Installed Apps
Exploring the App Package
Accessing App Data Directories
Monitoring System Logs
Basic Network Monitoring/Sniffing
Setting Up an Interception Proxy
Bypassing Certificate Pinning
Reverse Engineering Android Apps
Static Analysis on Android
Dynamic Analysis on Android
Disassembling Code to Smali
Decompiling Java Code
Disassembling Native Code
Retrieving Strings
Retrieving Cross References
Information Gathering - API Usage
Information Gathering - Network Communication
Reviewing Decompiled Java Code
Reviewing Disassembled Native Code
Automated Static Analysis
Dynamic Analysis on Non-Rooted Devices
Get Open Files
Get Open Connections
Get Loaded Native Libraries
Sandbox Inspection
Debugging
Execution Tracing
Method Tracing
Native Code Tracing
JNI Tracing
Emulation-based Analysis
Symbolic Execution
Patching
Repackaging & Re-Signing
Waiting for the Debugger
Library Injection
Getting Loaded Classes and Methods Dynamically
Method Hooking
Process Exploration
Runtime Reverse Engineering
Taint Analysis
iOS
iOS
Accessing the Device Shell
Host-Device Data Transfer
Obtaining and Extracting Apps
Repackaging Apps
Installing Apps
Listing Installed Apps
Exploring the App Package
Accessing App Data Directories
Monitoring System Logs
Dumping KeyChain Data
Basic Network Monitoring/Sniffing
Setting up an Interception Proxy
Bypassing Certificate Pinning
Reverse Engineering iOS Apps
Static Analysis on iOS
Dynamic Analysis on iOS
Disassembling Native Code
Decompiling Native Code
Extracting Information from the Application Binary
Retrieving Strings
Retrieving Cross References
Information Gathering - API Usage
Information Gathering - Network Communication
Reviewing Decompiled Objective-C and Swift Code
Reviewing Disassembled Objective-C and Swift Code
Reviewing Disassembled Native Code
Automated Static Analysis
Dynamic Analysis on Non-Jailbroken Devices
Get Open Files
Get Open Connections
Get Loaded Native Libraries
Sandbox Inspection
Debugging
Execution Tracing
Method Tracing
Native Code Tracing
Emulation-based Analysis
Symbolic Execution
Patching
Library Injection
Repackaging and Re-Signing
Waiting for the debugger
Getting Loaded Classes and Methods dynamically
Method Hooking
Process Exploration
Runtime Reverse Engineering
Patching React Native Apps
Tools
Tools
Generic
Generic
Frida
Frida CodeShare
Ghidra
LIEF
MobSF
r2frida
RMS Runtime Mobile Security
objection
iaito
Android
Android
Frida for Android
MobSF for Android
nm - Android
adb
Android NDK
Android SDK
Android Studio
Android-SSL-TrustKiller
APKiD
APKLab
Apktool
apkx
Busybox
Bytecode Viewer
Drozer
gplaycli
House
jadx
jdb
JustTrustMe
Magisk
Proguard
RootCloak Plus
Scrcpy
SSLUnpinning
Termux
Xposed
radare2 for Android
objection for Android
Angr
FlowDroid
iOS
iOS
Frida for iOS
MobSF for iOS
nm - iOS
BinaryCookieReader
class-dump
class-dump-z
class-dump-dyld
Cycript
Cydia
dsdump
Frida-cycript
Frida-ios-dump
gdb
iOSbackup
ios-deploy
iProxy
Keychain-Dumper
lldb
MachoOView
optool
otool
Grapefruit
Plutil
security
Sileo
simctl
SSL Kill Switch 2
swift-demangle
SwiftShield
Usbmuxd
Xcode
Xcode Command Line Tools
xcrun
radare2 for iOS
objection for iOS
Apps
Apps
Android
Android
AndroGoat
Android License Validator
Android UnCrackable L1
Android UnCrackable L2
Android UnCrackable L3
Digitalbank
DIVA Android
DodoVulnerableBank
DVHMA
InsecureBankv2
MASTG Hacking Playground (Java)
MASTG Hacking Playground (Kotlin)
OVAA
InsecureShop
Android UnCrackable L4
iOS
iOS
DVIA
DVIA-v2
MASVS
MASVS
Intro
Intro
Foreword
About the Standard
The Mobile Application Security Verification Standard
Assessment and Certification
MASVS-STORAGE
MASVS-STORAGE-1
MASVS-STORAGE-2
MASVS-CRYPTO
MASVS-CRYPTO-1
MASVS-CRYPTO-2
MASVS-AUTH
MASVS-AUTH-1
MASVS-AUTH-2
MASVS-AUTH-3
MASVS-NETWORK
MASVS-NETWORK-1
MASVS-NETWORK-2
MASVS-PLATFORM
MASVS-PLATFORM-1
MASVS-PLATFORM-2
MASVS-PLATFORM-3
MASVS-CODE
MASVS-CODE-1
MASVS-CODE-2
MASVS-CODE-3
MASVS-CODE-4
MASVS-RESILIENCE
MASVS-RESILIENCE-1
MASVS-RESILIENCE-2
MASVS-RESILIENCE-3
MASVS-RESILIENCE-4
MAS Checklist
MAS Checklist
MASVS-STORAGE
MASVS-CRYPTO
MASVS-AUTH
MASVS-NETWORK
MASVS-PLATFORM
MASVS-CODE
MASVS-RESILIENCE
MAS Crackmes
MAS Crackmes
Android Crackmes
iOS Crackmes
🗞 News
🎙 Talks
⭐ Contribute
⭐ Contribute
Contributing to the MAS Project
How Can You Contribute?
Getting Started
Pull Requests & Reviews
Add a New Language
Style Guide
Add a Crackme
💙 Donate
💙 Donate
Donations
How to Donate
Donation Packages
💬 Connect with Us
Platform
ios
Last updated: November 22, 2023
Waiting for the debugger
Back to top