🔍 Search · Find · Protect

Find sensitive code.
Protect exactly that.

Effective obfuscation is targeted, not blanket. Opaquer's built-in keyword search lets you instantly locate the most sensitive parts of any .NET assembly, encryption routines, license keys, authentication logic, proprietary algorithms, and apply protection precisely where it matters, without manually browsing hundreds of members.
Opaquer, String Encryption Window
🔍 Secret
class LicenseSecrets MyApp.Licensing
field _secretKey MyApp.Licensing.LicenseSecrets
method GetSecretToken() MyApp.Auth.TokenService
string "api_secret_prod_key" MyApp.Services.ApiClient
field SharedSecretSalt MyApp.Crypto.HashHelper
string "SECRET_SIGNING_KEY" MyApp.Config.AppSettings
// Search in action

One keyword. Every match.
Instantly.

Each obfuscation window in Opaquer includes a dedicated Search field. Type any identifier, class name, method name, field name, or string value, and Opaquer filters the entire assembly tree to show only the matching members.

Opaquer, Search for "Secret" in assembly members Live Search
Opaquer .NET Obfuscator search interface,  keyword search for 'Secret' showing matching class LicenseKeySecrets and related members in the assembly tree
① Search Field

Enter any keyword

Type a class name, method name, property, field, or any identifier. Opaquer searches across types, members, and embedded string values simultaneously.

② Filtered Results

Matching members only

The assembly tree collapses to show only classes and members whose names contain your keyword, no manual browsing through unrelated namespaces.

③ Example: "Secret"

Finds LicenseKeySecrets

Searching for Secret immediately surfaces the LicenseKeySecrets class and all its fields, methods, and associated string values in a single view.

④ Select & Configure

Protect from the results

Click any match to select it. Configure the appropriate obfuscation, name mode, string encryption, control flow, directly from the filtered view without losing context.

// What to search for

Nine categories of code that deserve targeted protection

In most commercial .NET applications, the most sensitive intellectual property is concentrated in a small number of well-defined areas. Search for these, and you'll find the members that need the strongest protection.

🔒

Encryption & Cryptography

Core cryptographic algorithms, key derivation, and cipher implementations. Exposing these reveals your entire security model.

Encrypt Decrypt Cipher Hash Crypto
🗝️

License Validation

License checking, serial number validation, trial expiry logic, and activation routines. The most commonly targeted code by software crackers.

License Serial Activate Trial Expire
🤫

Keys & Secrets

Hardcoded API keys, signing keys, shared secrets, and configuration values. Often stored as string literals directly in the assembly.

Secret Key Token Password Salt
🪪

Authentication & Authorization

Login flows, session management, permission checking, and role-based access control, critical security boundary logic.

Auth Login Permission Role Session
🧠

Proprietary Business Logic

The algorithms and rules that differentiate your product, pricing engines, scoring models, risk calculations, recommendation logic.

Engine Algorithm Score Calculate Strategy
📦

Version & Product Info

Build numbers, product edition flags, feature availability checks, and version-gating logic used in edition management.

Version Product Edition Build Feature
🌐

External Service Communication

API client implementations, endpoint URLs, request signing, and service integration logic that reveals your external dependencies.

Api Endpoint Client Request Webhook
⚙️

Configuration & Connection

Database connection strings, server addresses, environment configuration, and internal infrastructure details embedded in code.

Config Connection Settings Server Database
🔐

Security Algorithms

Custom security protocols, anti-tamper checks, integrity verification routines, and obfuscation-aware self-protection logic.

Verify Integrity Tamper Checksum Protect
// The workflow

Find sensitive code first.
Then decide how to protect it.

Opaquer's search turns a potentially overwhelming assembly into a focused set of security-relevant members. The workflow is deliberate by design: you locate before you configure.

Identify the functionality you want to protect

Decide which area of your application holds the most sensitive intellectual property. Licensing logic? Cryptographic routines? Proprietary scoring algorithms? Be specific, the more targeted your intent, the more effective the protection.

Enter a relevant keyword in the Search field

Open the appropriate Opaquer obfuscation window and type your keyword into the Search field. Try terms like Encrypt, License, Secret, Key, Auth, or Version. Opaquer searches class names, method names, field names, property names, and embedded string values.

Encrypt License Secret Key Auth Version Decrypt Token

Review the matching types and members

Opaquer immediately filters the assembly tree to show only the members whose names contain your keyword. Review the results to confirm relevance, you may discover related members you hadn't considered.

Select the members that require protection

Click to select the specific classes, methods, fields, or string values from the filtered results. You can select individual members or entire classes. Unrelated members remain unselected, exactly as intended.

Configure the appropriate obfuscation options

Choose the protection settings that fit the selected members: name obfuscation mode (Non-Displayable for maximum hardening), string encryption, control flow intensity. Apply stronger settings to the most sensitive code without affecting the rest of the assembly.

Run the obfuscation process

Execute the obfuscation. Opaquer applies the configured protection to the selected members, outputs the hardened assembly, and generates an XML rename map for debugging stack traces. Repeat for additional keyword searches as needed.

// Obfuscation strategy

Targeted protection beats
blanket protection

Applying every available protection setting to every member might seem safer. In practice, it creates compatibility problems, and wastes protection budget on code that doesn't need it.

❌ Blanket obfuscation (without search)
  • Renames public API members, breaks external callers
  • Renames serialized properties, breaks deserialization
  • Renames WPF binding targets, breaks data bindings
  • Renames reflection-resolved types, causes runtime errors
  • Applies strong control flow to UI rendering code, adds overhead
  • Time spent debugging compatibility issues after obfuscation
  • Maintenance burden grows with every assembly change
✔ Targeted obfuscation (with search)
  • Strong protection on licensing, crypto, auth logic
  • Public APIs and serialized types remain compatible
  • WPF bindings continue to work unchanged
  • Reflection-resolved types excluded from renaming
  • Performance-sensitive code left at normal control flow
  • No compatibility regressions, tests pass first time
  • Faster to configure, easier to maintain over time
💡
The principle:

Effective obfuscation is not about applying every available protection to every member. It's about identifying the code that genuinely needs protection and concentrating your effort there. Search turns a potentially overwhelming assembly into a focused set of security-relevant areas, helping you spend your obfuscation effort where it matters most.

// FAQ

Search & protection questions

Common questions about using Opaquer's search to find and protect sensitive .NET code.

How does the search functionality in Opaquer work?
Every obfuscation configuration window in Opaquer includes a dedicated Search field. Type a keyword, a class name, method name, property name, field name, or any relevant identifier, and Opaquer immediately filters the assembly member tree to show only matching types, methods, fields, and string values. For example, searching for Secret locates any member whose name contains that term, including classes like LicenseKeySecrets, fields like _secretKey, and string literals like "api_secret_prod_key". You can then select and configure protection for those specific members.
Does Opaquer search cover string values as well as member names?
Yes. Opaquer's search is not limited to class names, method names, and field names. It also searches string literals embedded in the assembly, hardcoded API endpoints, configuration keys, internal identifiers, and other sensitive string constants. This makes it possible to locate values that you may want to protect with string encryption, even when their containing type has a non-descriptive name.
What keywords should I search for to find license-related code?
For licensing code, try: License, LicenseKey, Serial, Activate, Activation, Validate, Trial, Expire, Secret, SecretKey, and Product. These terms commonly appear in class names, method names, field names, and string literals associated with licensing logic. Searching for Secret alone often surfaces the most sensitive classes, such as a LicenseKeySecrets type containing licensing parameters and credential values.
Can I apply different obfuscation settings to different parts of my assembly?
Yes, this is exactly what Opaquer is designed for. After using search to locate a sensitive class or method, you select that member in the interface and configure its protection independently of the rest of the assembly. You can apply stronger protection, Non-Displayable naming, high-intensity control flow, string encryption, to the most sensitive portions of your code, while keeping public APIs, serialized types, and reflection-resolved members excluded from renaming. This selective approach avoids the compatibility problems that come with blanket obfuscation.
Is it better to obfuscate everything or use search to target specific members?
Targeted obfuscation using search produces better practical results for most commercial .NET applications. Applying strong protection to every member risks breaking reflection-based frameworks, serialization libraries, dependency injection containers, and WPF data bindings. Using Opaquer's search to identify and protect only the sensitive members gives you strong protection exactly where it matters while maintaining compatibility everywhere else. For smaller assemblies where every member is security-sensitive, blanket protection remains a valid approach, Opaquer supports both.
How does search help with large .NET assemblies?
For a small assembly, manually navigating namespaces and member lists may be manageable. For a large commercial application with hundreds of classes and thousands of methods, locating a specific type or method by browsing becomes time-consuming and error-prone. Keyword search provides an instant alternative: type the name of the functionality you want to protect and Opaquer shows you exactly where it lives, including related members you might have missed. This makes the obfuscation of large projects significantly faster and more thorough.
Is the search feature available in the free Basic edition?
Yes. Keyword search is available in all Opaquer editions, including the free Basic edition. There is no time limit on the free Basic edition and it can be used on commercial .NET projects. Download Opaquer Basic free →
// Get started

Find what matters.
Protect exactly that.

Download Opaquer free, open your assembly, type Secret in the Search field, and see what comes up. Then protect it.

⬇ Download Free Basic Read Documentation Compare Plans Why Opaquer →