Command-Line Interface

The Demeanor CLI is a self-contained native binary — no .NET runtime required.

demeanor [options] <assembly>
demeanor <command> [options]
CommandDescription
(default)Obfuscate an assembly
inspectSeparate tool — see Metadata Inspector
licenseDecode and display license key information

Obfuscate Command

Input / Output

OptionDescriptionDefault
<assembly>Path to the .NET assembly to obfuscate(required)
--out <dir>Output directory./Demeanor/

Scope

OptionDescriptionDefaultTier
--include-publicsAlso obfuscate public/protected symbols. Use for executables not referenced by other assemblies.offEnterprise
--include-depsAlso obfuscate co-located private dependency assemblies.offEnterprise

Naming

OptionDescriptionDefaultTier
--names <mode>Alpha (a, b, c) or UnicodeAlphaUnicode: Enterprise
--prefix <ns>Namespace prefix for obfuscated type names(none)Community
--no-aggressiveDisable aggressive mode. When enabled: all renamed members share the same name, property/event metadata is stripped, readonly and [CompilerGenerated] hints are removed, parameters are named a, default parameter values are stripped.(enabled)Enterprise
--no-virtual-renameDisable MethodImpl-based virtual override renaming. When enabled, overrides of ToString, Equals, GetHashCode, and interface implementations are renamed and wired via MethodImpl records. The decompiled output cannot be recompiled.(enabled)Enterprise
--no-enum-deletionDisable deletion of enum member fields. When enabled, all static literal fields on renamed enums are deleted — decompilers see empty enums with no symbolic names or values. Enum.ToString() returns the raw integer.(enabled)Enterprise

Protection Features

All protection features are enabled by default at Enterprise tier. At Community tier, only renaming is active.

OptionDescriptionDefault
--no-stringsDisable string encryption(enabled)
--no-constantsDisable integer constant encryption(enabled)
--no-resourcesDisable encryption of embedded resources(enabled)
--no-call-hidingDisable call hiding (delegate-backed relay methods that hide call targets from static analysis)(enabled)
--proxy-threshold <N>Minimum IL body size for proxying16
--cfg <level>Reorder, Predicates, or FlattenFlatten
--no-cfgDisable control flow obfuscation(enabled)
--no-hinder-reflectionDisable reflection hindrance. When enabled (default): injects metadata constructs that hinder reflection-based tools and prevents ILDASM disassembly.(enabled)
--no-anti-tamperDisable anti-tamper integrity verification. When enabled, a module initializer verifies the assembly has not been modified post-build. NativeAOT-compatible.(enabled)
--no-anti-debugDisable anti-debug detection. When enabled, debugger detection checks are scattered across method entry points. NativeAOT-compatible.(enabled)

Exclusions

OptionDescription
--exclude <name>Exclude a type or member by fully-qualified name. Repeatable.
--xr <pattern>Exclude by regex pattern. Repeatable.
--xa <assembly>Exclude an assembly (with --include-deps). Repeatable.
--add-assembly <name>Include a dynamically referenced assembly. Repeatable.

Category Exclusions

OptionDescription
--no-typesDisable type renaming
--no-methodsDisable method renaming
--no-fieldsDisable field renaming
--no-propertiesDisable property renaming
--no-eventsDisable event renaming
--no-parametersDisable parameter renaming
--no-enumerationsDisable enumeration renaming
--no-resource-namesDisable resource name renaming
--no-serializableExclude serializable types and their fields

Reporting & Incremental (Enterprise)

OptionDescription
--reportGenerate JSON report mapping original to obfuscated names
--report-file <path>Path for the report file
--prior-report <path>Prior report for incremental obfuscation
--satellite-assembliesUpdate resource names in satellite assemblies
--sa-cultures <culture>Restrict satellite processing to specific cultures

Strong Name Re-signing

OptionDescription
--keyfile <path>Strong name key file (.snk)
--keycontainer <name>Strong name key container

Output Control

OptionDescriptionDefault
--license <key>License key (also reads DEMEANOR_LICENSE env var)
--verboseVerbose obfuscation statisticsoff
--quietSuppress all non-error outputoff
--debugPreserve debug data (PDB)off
--no-logoSuppress the startup banneroff

Metadata Inspector

The metadata inspector is a standalone tool included with Demeanor Enterprise. See the full Inspector documentation and AI-Assisted Inspection.

inspect <assembly> [options]

license Command

Decode and display license key information.

demeanor license YOUR_LICENSE_KEY

Also reads from the DEMEANOR_LICENSE environment variable if no argument is provided.