/

Symbol Renaming

Protection ID: symbol_renaming

Symbol Renaming replaces meaningful class, method, and property names in your compiled binary with short, meaningless identifiers. This removes the most accessible source of information available to anyone analyzing your application.


Configuration

JSON
{
  "protections": {
    "symbol_renaming": true
  }
}

For fine-grained control:

JSON
{
  "protections": {
    "symbol_renaming": {
      "enabled": true,
      "prefix": "a",
      "rename_classes": true,
      "rename_methods": true,
      "rename_properties": true,
      "rename_protocols": false,
      "exclude": ["AppDelegate", "SceneDelegate", "*Delegate"]
    }
  }
}

How It Works

When you decompile an unprotected iOS application, class and method names reveal the application's architecture, business logic, and sensitive components. Names like PaymentProcessor, authenticateUser, or decryptLicenseKey give attackers a roadmap of where to focus their analysis.

Symbol Renaming replaces these names with short, meaningless identifiers throughout the Mach-O binary. After protection, decompilers show names like a, b, c instead of the original identifiers, forcing analysts to understand the code purely from its behavior rather than its naming.

Shield generates a mapping file that records the relationship between original and obfuscated names. This mapping is automatically uploaded to the Cloud Panel for stack trace deobfuscation.


What Gets Renamed

Symbol TypeRenamedNotes
ClassesYesObjective-C and Swift classes
MethodsYesInstance and class methods
PropertiesYesDeclared properties
ProtocolsOptionalDisabled by default to preserve runtime protocol conformance

Exclusions

Some symbols must retain their original names. Common cases include Interface Builder references (view controllers and outlets connected in Storyboards), Codable types (properties used for JSON serialization), Objective-C bridging (symbols referenced from Objective-C by name), and third-party SDK entry points.

Configure exclusions with wildcard patterns:

JSON
{
  "symbol_renaming": {
    "enabled": true,
    "exclude": ["AppDelegate", "SceneDelegate", "*ViewController", "*Model"]
  }
}

See Exclusions for detailed patterns and common configurations.


When to Use

Symbol renaming is recommended for all production applications. It is the most fundamental obfuscation protection and provides the highest return for the lowest impact. It is especially important for applications containing proprietary algorithms, financial or authentication logic, license validation code, and any business logic you want to protect.


Previous
Overview