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
{
"protections": {
"symbol_renaming": true
}
}{
"protections": {
"symbol_renaming": true
}
}For fine-grained control:
{
"protections": {
"symbol_renaming": {
"enabled": true,
"prefix": "a",
"rename_classes": true,
"rename_methods": true,
"rename_properties": true,
"rename_protocols": false,
"exclude": ["AppDelegate", "SceneDelegate", "*Delegate"]
}
}
}{
"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 Type | Renamed | Notes |
|---|---|---|
| Classes | Yes | Objective-C and Swift classes |
| Methods | Yes | Instance and class methods |
| Properties | Yes | Declared properties |
| Protocols | Optional | Disabled 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:
{
"symbol_renaming": {
"enabled": true,
"exclude": ["AppDelegate", "SceneDelegate", "*ViewController", "*Model"]
}
}{
"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.
Related
- Exclusions - Configure exclusion patterns
- Deobfuscate Stack Traces - Decode obfuscated crash reports
- Protections Overview - All available protections