DEV Community

Zero Heartbeat profile picture

Zero Heartbeat

404 bio not found

Joined Joined on 
Obfuscating a SignalR app without breaking the hub method names clients call by string

Obfuscating a SignalR app without breaking the hub method names clients call by string

Comments
7 min read
Floating Seats with Keyright: Licensing by Simultaneous Use, Not by Machine

Floating Seats with Keyright: Licensing by Simultaneous Use, Not by Machine

Comments
9 min read
Decompiling [CallerArgumentExpression]: the source text the compiler bakes into your call sites, and how Glass restores the clean call

Decompiling [CallerArgumentExpression]: the source text the compiler bakes into your call sites, and how Glass restores the clean call

Comments
8 min read
Obfuscating a .NET global tool without breaking the command surface

Obfuscating a .NET global tool without breaking the command surface

Comments
7 min read
React to Licensing in Real Time: Outbound Event Webhooks from Keyright

React to Licensing in Real Time: Outbound Event Webhooks from Keyright

Comments
7 min read
Decompiling [Flags] enums: how Glass.NET turns ldc.i4.3 back into Read | Write

Decompiling [Flags] enums: how Glass.NET turns ldc.i4.3 back into Read | Write

Comments
7 min read
Obfuscating an Azure Functions Isolated-Worker App Without Breaking Function Discovery

Obfuscating an Azure Functions Isolated-Worker App Without Breaking Function Discovery

Comments
9 min read
Retry-Safe License Operations: Idempotency Keys for Activation, Metering and Issuance

Retry-Safe License Operations: Idempotency Keys for Activation, Metering and Issuance

Comments
8 min read
Decompiling module initializers: the <Module> static constructor and ModuleInitializerAttribute

Decompiling module initializers: the <Module> static constructor and ModuleInitializerAttribute

Comments
7 min read
Obfuscating a localized .NET app: keeping IStringLocalizer, .resx and satellite assemblies working under renaming

Obfuscating a localized .NET app: keeping IStringLocalizer, .resx and satellite assemblies working under renaming

Comments
7 min read
Many meters, one license: metering per-feature usage with multiple credit pools

Many meters, one license: metering per-feature usage with multiple credit pools

Comments
9 min read
Decompiling boxing, unboxing and the constrained. prefix in C#

Decompiling boxing, unboxing and the constrained. prefix in C#

Comments
7 min read
Obfuscating a WinUI 3 app: what {x:Bind} already made rename-safe, and the three strings that still break it

Obfuscating a WinUI 3 app: what {x:Bind} already made rename-safe, and the three strings that still break it

Comments
9 min read
Perpetual-fallback licensing: run the versions you paid for, forever

Perpetual-fallback licensing: run the versions you paid for, forever

Comments
8 min read
Reading top-level statements in decompiled C#: the synthesized Program class and the Main entry point

Reading top-level statements in decompiled C#: the synthesized Program class and the Main entry point

Comments
6 min read
Verifying your obfuscation in CI — the protection report and `nebula verify`

Verifying your obfuscation in CI — the protection report and `nebula verify`

Comments
6 min read
Licensing AI features and autonomous agents with signed, offline entitlements

Licensing AI features and autonomous agents with signed, offline entitlements

Comments
7 min read
Decompile and inspect .NET assemblies from the command line — and from an AI assistant

Decompile and inspect .NET assemblies from the command line — and from an AI assistant

Comments
7 min read
Anti-Dump for .NET: Stopping Attackers From Lifting Your Assembly Out of Memory

Anti-Dump for .NET: Stopping Attackers From Lifting Your Assembly Out of Memory

Comments
4 min read
Licensing Software That Runs on Ephemeral CI and Cloud Build Agents Without Burning Seats

Licensing Software That Runs on Ephemeral CI and Cloud Build Agents Without Burning Seats

Comments
4 min read
Decompiling P/Invoke and DllImport: Reading a .NET Assembly''s Native Interop

Decompiling P/Invoke and DllImport: Reading a .NET Assembly''s Native Interop

Comments
4 min read
OEM, White-Label, and Reseller Licensing: Letting Partners Provision Keys Without Your Admin Token

OEM, White-Label, and Reseller Licensing: Letting Partners Provision Keys Without Your Admin Token

Comments
4 min read
Obfuscating a ClickOnce-Deployed App: Why Order of Operations Decides Whether It Even Launches

Obfuscating a ClickOnce-Deployed App: Why Order of Operations Decides Whether It Even Launches

Comments
4 min read
Decompiling a Blazor WebAssembly App: Reading the .NET DLLs the Browser Downloaded

Decompiling a Blazor WebAssembly App: Reading the .NET DLLs the Browser Downloaded

Comments
4 min read
Obfuscating Code That Generates Code: Reflection.Emit, DynamicMethod, and Expression Trees

Obfuscating Code That Generates Code: Reflection.Emit, DynamicMethod, and Expression Trees

Comments
4 min read
Keeping License Activation Across Desktop Auto-Updates: Velopack, Squirrel, MSIX, and ClickOnce

Keeping License Activation Across Desktop Auto-Updates: Velopack, Squirrel, MSIX, and ClickOnce

Comments
4 min read
Decompiling ReadyToRun (R2R) Assemblies: Why Precompiled Native Code Still Decompiles Cleanly

Decompiling ReadyToRun (R2R) Assemblies: Why Precompiled Native Code Still Decompiles Cleanly

Comments
4 min read
Per-Core Licensing for .NET Server Software: Counting Cores Correctly and Binding the Entitlement

Per-Core Licensing for .NET Server Software: Counting Cores Correctly and Binding the Entitlement

Comments
5 min read
Obfuscating Unity Game Assemblies: Mono, IL2CPP, and the Keep-Rules Serialization Demands

Obfuscating Unity Game Assemblies: Mono, IL2CPP, and the Keep-Rules Serialization Demands

Comments
6 min read
Decompiling F#-Compiled Assemblies in a C# Decompiler: Reading Unions, Records, and Modules

Decompiling F#-Compiled Assemblies in a C# Decompiler: Reading Unions, Records, and Modules

Comments
5 min read
Upgrade a self-hosted Keyright instance safely: migrations, zero downtime, rollback

Upgrade a self-hosted Keyright instance safely: migrations, zero downtime, rollback

Comments
7 min read
Decompile a single-file or self-contained .NET app with Glass.NET

Decompile a single-file or self-contained .NET app with Glass.NET

Comments
6 min read
Diagnosing a protected .NET build in production: logs, PDBs and stack traces

Diagnosing a protected .NET build in production: logs, PDBs and stack traces

Comments
7 min read
Obfuscating a multi-project .NET solution: one consistent protection strategy

Obfuscating a multi-project .NET solution: one consistent protection strategy

Comments
9 min read
Protecting your Keyright activation endpoint from abuse and key-sharing

Protecting your Keyright activation endpoint from abuse and key-sharing

Comments
7 min read
Extract and read embedded resources from a .NET assembly with Glass.NET

Extract and read embedded resources from a .NET assembly with Glass.NET

Comments
7 min read
Obfuscating a .NET app that uses AutoMapper, MediatR and FluentValidation

Obfuscating a .NET app that uses AutoMapper, MediatR and FluentValidation

Comments
8 min read
Building a Nebula keep-list: what to exclude from renaming (and why)

Building a Nebula keep-list: what to exclude from renaming (and why)

Comments
8 min read
Back up and recover a self-hosted Keyright instance

Back up and recover a self-hosted Keyright instance

Comments
6 min read
Run self-hosted Keyright fully air-gapped, with no outbound internet

Run self-hosted Keyright fully air-gapped, with no outbound internet

Comments
6 min read
Understand unfamiliar third-party .NET code with Glass.NET

Understand unfamiliar third-party .NET code with Glass.NET

Comments
6 min read
See what a .NET assembly depends on and calls with Glass.NET

See what a .NET assembly depends on and calls with Glass.NET

Comments
6 min read
Obfuscating a .NET Worker Service: protecting a headless background worker

Obfuscating a .NET Worker Service: protecting a headless background worker

Comments
10 min read
Running Self-Hosted Keyright Across Multiple Nodes for High Availability

Running Self-Hosted Keyright Across Multiple Nodes for High Availability

Comments
7 min read
Diff two versions of a .NET assembly with Glass.NET

Diff two versions of a .NET assembly with Glass.NET

Comments
6 min read
Did your obfuscation actually work? Check it in Glass.NET

Did your obfuscation actually work? Check it in Glass.NET

Comments
5 min read
A SmartAssembly alternative in 2026

A SmartAssembly alternative in 2026

Comments
4 min read
Migrating from Homegrown License Keys to Keyright Without Breaking Customers

Migrating from Homegrown License Keys to Keyright Without Breaking Customers

Comments
7 min read
Fail-closed licensing in .NET: what your app does when it cannot check

Fail-closed licensing in .NET: what your app does when it cannot check

Comments
6 min read
Anti-tamper in .NET: making a patched assembly fail on its own terms

Anti-tamper in .NET: making a patched assembly fail on its own terms

Comments
6 min read
Decompiling yield return: rebuilding iterator blocks from IL

Decompiling yield return: rebuilding iterator blocks from IL

Comments
6 min read
Rotating a licensing signing key without breaking the field

Rotating a licensing signing key without breaking the field

Comments
5 min read
String encryption in .NET: where the key hides and why it matters

String encryption in .NET: where the key hides and why it matters

Comments
6 min read
Decompiling async/await: rebuilding the state machine .NET hid from you

Decompiling async/await: rebuilding the state machine .NET hid from you

Comments
6 min read
Offline and air-gapped licensing in .NET: validating without a network

Offline and air-gapped licensing in .NET: validating without a network

Comments
6 min read
Control-flow flattening in .NET: turning methods into a dispatcher

Control-flow flattening in .NET: turning methods into a dispatcher

Comments
5 min read
Decompiling C# expression trees: the lambda that became a tree of factory calls

Decompiling C# expression trees: the lambda that became a tree of factory calls

Comments
12 min read
Obfuscating a type you serialize with Newtonsoft.Json: [JsonProperty] is the contract, and TypeNameHandling''s $type is a landmine

Obfuscating a type you serialize with Newtonsoft.Json: [JsonProperty] is the contract, and TypeNameHandling''s $type is a landmine

Comments
9 min read
Decompiling C# string interpolation and interpolated string handlers

Decompiling C# string interpolation and interpolated string handlers

Comments
9 min read
Obfuscating code that uses dynamic: the runtime binder looks members up by name, so a renamed property is a RuntimeBinderException

Obfuscating code that uses dynamic: the runtime binder looks members up by name, so a renamed property is a RuntimeBinderException

Comments
9 min read
loading...