LogoLogo
  • Welcome to Cyphor
  • .NET Code Obfuscation
    • Getting Started
    • How to Obfuscate
    • Basic Code Obfuscation
      • Symbol Renaming
      • Body Mutation
      • Control Flow
      • Constant Encryption
      • Call Hiding
      • Debug Protection
      • Integrity Checks
      • Self Healing
    • Advanced Obfuscation
      • Attribute-Based Obfuscation
      • Guide to obfuscation
      • Code Inlining
      • What is RASP?
      • Protections that protect each other
      • Program not working after obfuscation
      • Keeping performance with obfuscation
      • Virtualization
  • Dashboard
    • Files
    • Billing
      • Pay as you go
      • Examples
    • Projects
      • Code Guard Tasks
      • Permissions
        • Roles
      • Files
      • SAML and SSO
  • Code Guard
    • Introduction
    • Implement with your licensing system
      • Setting up a gateway
      • Setting up the SDK
    • Secured values
      • Dynamic values
      • Code Encryption
        • Page 1
    • Preventing analysis
    • Enhanced visibility
      • Disabling tracing on production
      • Logging external methods
      • Optimizing Memory Usage
    • Edge connectivity
    • Preventing modifications
      • Preventing assembly load
      • Allowing partial tampering
      • Enterprise EDRs and XDRs
      • Dynamic Hook protection
      • Thread hijacking
      • Guard Checksums
      • DLL Injection
      • Handling complex RE attacks
        • Custom payload detection
    • Granular Integrity Checks
    • Virtualized Environments
    • Troubleshooting
    • Threat database
    • Real time alerts
      • Alert Insights
  • CLI Tool
    • Introduction
    • Global options
    • Profiles
    • Projects
    • Obfuscator
      • Obfuscation Schemes
      • Task templates
      • Protecting files
        • Global obfuscation flags
        • Using templates to obfuscate files
        • Quick obfuscation
      • Monitoring obfuscation jobs
    • Securing local storage
Powered by GitBook
On this page
  • Performance: None Potency: High Resilience: High
  • Understanding the protection
  • Tuning the protection for best performance
  • Minify
  • Encrypted
  • Default

Was this helpful?

  1. .NET Code Obfuscation
  2. Basic Code Obfuscation

Symbol Renaming

PreviousBasic Code ObfuscationNextBody Mutation

Last updated 1 year ago

Was this helpful?

Performance: None Potency: High Resilience: High

Understanding the protection

Symbol renaming is a critical obfuscation technique, the names of classes, methods, properties, fields, method parameters, and locals are replaced with randomly generated names.

Before Obfuscation:

public static void MyMethod(string parameter)

After Obfuscation:

public static void _[[](___])(_(string __)())_)

Tuning the protection for best performance

There are three different modes for this protection, all of them serve the same purpose, erasing the original names of your application, however, depending on the aim that you want to achieve with the obfuscation, you should opt which one suits you better.

Minify

When choosing this option, the names of your application are removed to ensure that your application size is the smallest possible, when erasing the data is not possible, the obfuscator will use single characters as names for the member being renamed.

Before:

public static void MyMethod(string parameter)

After:

public static void (string )

Encrypted

When choosing this option, the names of your application are encrypted with a private key of your preference, this makes it possible for you to decode stacktraces provided by customers and easily debug your application after obfuscation.

Before:

public static void MyMethod(string parameter)

After:

public static void MTc4OTI0NTYxNw==(string MTc4OTI0NTYxNw==)

Default

When choosing this option, the names of your application become incredibly difficult to read both to humans and machines, leading to the crash of reverse engineering applications in some scenarios.

Before:

public static void MyMethod(string parameter)

After:

public static void _[[](___])(_(string __)())_)

This mode delivers the most confusing obfuscation output to human attackers, however, the names given by this method tend to be bigger than the original name, therefore the size of your application can become significantly bigger after using this method.

You should always safeguard the key used for obfuscation, exposing it to the public could compromise the encrypted names.

⏩
🔐
🧠
❗