Demeanor for .NET Documentation
A standalone .NET obfuscator with a built-in audit that tells you what obfuscates cleanly, what is problematic, and what changes would fix it. Install, audit, obfuscate.
Getting Started
Already use an MCP-capable AI assistant? You can optionally drive the same audit conversationally — see the CatalogService walkthrough for what that looks like, or the conversational workflow page for setup. Completely optional; the standalone CLI above is the primary path.
How Demeanor responds to risky patterns
When the audit finds a construct that wouldn’t survive renaming, Demeanor takes one of two actions:
1. Auto-suppression (no action required)
For patterns where the exact names that must be preserved can be determined from the assembly itself, Demeanor automatically excludes those symbols from renaming. You don’t need to do anything.
- Reflection detection — string-based type, method, and member lookups whose target can be resolved at analysis time
- Property usage detection — DTOs and bound types used by the common serialization, data-binding, component, and interop frameworks
- Structural exclusions — entry points, runtime-critical members, serializable fields, public/protected library symbols
These show up in the audit report as auto-detected. The recommendation says “No action needed.”
2. Advisory — Demeanor recommends a source change
For patterns where Demeanor can observe the risk but not safely decide which symbols to freeze, it emits an advisory and does not change rename output. You decide: add an annotation, add an exclusion, or rewrite the construct.
- Minimal API scanning — handler return types whose properties aren’t protected by a detectable contract. Recommendation: mark the DTO with a source-generated serialization contract.
- AOT JSON analysis — reflection-based JSON calls that won’t survive trimming. Recommendation: migrate to a source-generated serializer context.
- Audit heuristics — framework-specific types where the framework binds by name at runtime (route handlers, realtime hubs, ORM contexts, configuration POCOs, plugin contracts, service contracts, XAML bindings). Recommendation: add
[Obfuscation(Exclude = true, ApplyToMembers = true)]in source (permanent fix), or use--exclude/--xron the CLI.
Each finding carries a Classification:
auto-detected— handled automatically. No action.needs-exclusion— add[Obfuscation]in source (preferred) or--exclude/--xron the CLI.needs-code-change— modify source (e.g. adopt source-generated serialization).advisory— informational; may not need action.
Licensing Overview
Per-company licensing. No seat counting, no machine locking, no activation server. License keys are self-validating — they work completely offline.
- Community — No-cost. Symbol renaming, alpha naming, single assembly.
- Enterprise — All encryption options, control-flow obfuscation, call hiding, multi-assembly, incremental, reports. Opt-in MCP server for conversational workflows included. See pricing →
No license key is needed for Community tier. See full licensing details.
Reference
- CatalogService Walkthrough — End-to-end conversation over a real sample assembly (optional conversational workflow)
- Conversational Workflow — Driving Demeanor from an MCP-capable AI assistant (optional)
- Options Reference — Detailed docs for every option with before/after code examples
- CLI Reference — All obfuscate, inspector, audit, and license command options
- MSBuild Properties — Configure obfuscation in your .csproj
- Exclusions Guide — Protect types and members from renaming
- [ObfuscationAttribute] Features — Per-feature control: skip string encryption, control-flow obfuscation, call hiding, or anti-debug on individual methods
- CI/CD Integration — GitHub Actions, Azure Pipelines, and more
- Licensing — Tiers, expiry, and verification
- Reports & Incremental — Obfuscation reports, exclusion diagnostics, incremental builds
- Metadata Inspector — Standalone CLI tool to query the metadata tables of any assembly (optional MCP surface for AI-driven queries)
- Troubleshooting — Common issues and solutions (see FAQ)
- Supported Platforms — .NET versions and OS support