Table of contents
- Table of Contents
- What Is Eazfuscator.NET?
- Introduction
- Definition of Obfuscation
- Why .NET Applications Need Obfuscation
- In Theory
- In Practice
- When to Use Obfuscation
- Drawbacks of The Obfuscation
- Quick Start
- How Does Eazfuscator.NET Work?
- Obfuscation Techniques
- Symbol Renaming
- String Encryption
- Constant Literals Pruning
- Overload Induction
- Class Hierarchy Linerization
- XML Documentation Filter
- XAML Renaming
- Optimization Techniques
- Merging of String Literal Duplicates
- Sealing of Terminal Classes
- String Compression
- Code Optimizations
- Advanced Features
- About Advanced Features
- Declarative Obfuscation Using Custom Attributes
- System.Reflection.ObfuscateAssemblyAttribute
- System.Reflection.ObfuscationAttribute
- .NET Compact Framework, Silverlight, Windows Store and .NET Core Projects
- Indirect Declarative Obfuscation
- Obfuscation Attribute Priorities
- Introduction
- Priority Syntax
- Complete Example
- Conditional Obfuscation
- Type Members
- Options are Combinable
- Diagnostics
- Symbol Names Encryption
- Advanced Symbol Renaming Options
- Symbol Renaming with Printable Characters
- Type Renaming Patterns
- Advanced String Encryption Options
- Code Control Flow Obfuscation
- Assemblies Merging
- Introduction
- Instructions
- Tuning
- Internalization
- Custom Parameters for Merging
- Assemblies Embedding
- Introduction
- What's the point for embedding when we have merging (or vice versa)?
- Instructions
- Tuning
- Troubleshooting
- Possible Issue #1: Location Property of System.Reflection.Assembly Class
- Possible Issue #2: Custom Assembly Loading
- Resource Encryption
- Introduction
- Instructions
- Compression
- Selective Resource Encryption
- Options are Combinable
- Serialization Tuning
- Overview
- Binary Serialization and Obfuscation
- Self-Interoperability
- Non-stable Self-Interoperable Serialization
- Stable Self-Interoperable Serialization
- Debugging
- Introduction to Debugging After Obfuscation
- How It Works
- Possible Security Risks
- Tuning
- Secure Debugging
- Relative File Paths
- Debug Renaming
- PEVerify Integration
- Probing Paths
- About Probing Paths
- How to Define Probing Paths?
- Script Variables
- Sensei Features
- About Sensei Features
- Code Inlining
- Protected Private Visibility
- Custom Attributes Removal
- Design-Time Usage Protection
- Overview
- How It Works
- Component Designer Suppression
- Public API Surface Shrink
- Instructions
- Tuning
- Resource Sanitization
- Introduction
- Instructions
- Minification
- Selective Resource Sanitization
- Options are Combinable
- Virtualization
- Introduction
- How to Use Code Virtualization
- How to Use Data Virtualization
- Troubleshooting
- My application is not working properly after obfuscation. Why does it happen?
- Troubleshooting Features
- Stack Trace Decoding
- Stack Trace Decoding Zone
- Stack Trace Decoding Window
- Inspection-Friendly Obfuscation
- Preserving the Original Names
- Disabling ILDASM Suppression
- About InternalsVisibleToAttribute
- Solution #1. Do not use InternalsVisibleToAttribute at all
- Solution #2. Swap with EditorBrowsable attribute
- Solution #3. Hide the warning
- Solution #4. Ignore the attribute
- "Option Strict Off" Compatibility for VB.NET
- Introduction
- Compatibility Mode
- Instructions
- Nonintrusive Debugging
- Introduction
- Sample Scenario
- Warnings and Errors
- Disabling Warnings
- Treat Warnings as Errors
- Long-Term Compatibility
- Compatibility Version
- Demanding the Specific Version of Eazfuscator.NET
- Error Codes Knowledge Base
- EF-1099: Unable to load input assembly, reflection load failed
- EF-3035: Assembly or part of it is already obfuscated
- Best Practices
- Introduction
- General Best Practices
- Keeping the Balance
- Human Factors
- Keeping It Simple
- The Paralysis of Simplicity
- Deployment
- About Eazfuscator.NET Deployment
- Microsoft Installer (MSI)
- NuGet Package Manager
- Command Line Interface
- Glossary
- Bibliography