/

Protections Overview

Shield for iOS provides 17 protections organized into four categories. Each protection can be enabled independently and configured to match your security requirements.


Code Obfuscation

Code obfuscation protections transform the structure and instructions of your compiled binary to resist static analysis and reverse engineering.

ProtectionIDDescription
Symbol Renamingsymbol_renamingRenames classes, methods, and properties to meaningless identifiers
Control Flow Obfuscationcontrol_flowRestructures the logic flow of methods to confuse decompilers
Dead Code Injectiondead_code_injectionInserts unreachable code paths that appear legitimate
Instruction Substitutioninstruction_substitutionReplaces standard instructions with functionally equivalent alternatives
Opaque Predicatesopaque_predicatesAdds conditional branches whose outcome is predetermined but hard to analyze
Arithmetic Obfuscationarithmetic_obfuscationTransforms arithmetic operations into complex equivalent expressions
Register Shufflingregister_shufflingRandomizes register allocation to break pattern recognition
API Hidingapi_hidingHides references to system API calls from static analysis

Data Protection

Data protection secures sensitive information embedded in your application binary and its bundled resources.

ProtectionIDDescription
String Encryptionstring_encryptionEncrypts string literals so they cannot be extracted from the binary
Swift Metadata Strippingswift_strippingRemoves Swift type metadata and debug information
Class Encryptionclass_encryptionEncrypts Objective-C class metadata structures
Resource Encryptionresource_encryptionEncrypts bundled assets and resource files

Runtime Protections (RASP)

Runtime Application Self-Protection detects and responds to hostile environments while your application is running.

ProtectionIDDescription
Anti-Debuganti_debugDetects and blocks debugger attachment
Anti-Jailbreakanti_jailbreakDetects jailbroken devices
Hook Detectionhook_detectionDetects runtime hooking frameworks
Trace Detectiontrace_detectionDetects tracing and instrumentation tools
Tamper Detectiontamper_detectionDetects binary modification and repackaging

RASP protections can be enabled individually or together through the rasp configuration block.


Build Features

ProtectionIDDescription
Polymorphic BuildspolymorphicGenerates a unique binary on every build

Minimum protection for applications with basic security needs:

JSON
{
  "protections": {
    "symbol_renaming": true,
    "string_encryption": true,
    "anti_debug": true
  }
}

Standard protection for most production applications:

JSON
{
  "protections": {
    "symbol_renaming": true,
    "string_encryption": true,
    "swift_stripping": true,
    "control_flow": "medium",
    "anti_debug": true,
    "anti_jailbreak": true,
    "rasp": true
  }
}

Maximum protection for applications handling sensitive data or intellectual property:

JSON
{
  "protections": {
    "symbol_renaming": true,
    "string_encryption": true,
    "swift_stripping": true,
    "control_flow": "aggressive",
    "dead_code_injection": "heavy",
    "opaque_predicates": "complex",
    "arithmetic_obfuscation": "complex",
    "instruction_substitution": "complex",
    "register_shuffling": "complex",
    "api_hiding": "complex",
    "class_encryption": true,
    "resource_encryption": true,
    "anti_debug": true,
    "anti_jailbreak": true,
    "rasp": true,
    "polymorphic": true
  }
}

Previous
Exclusions