≈ the.bay.news

Obfuscating a plugin host without breaking the plugin contract

DEV Community
Obfuscating a plugin host without breaking the plugin contract
A plugin host has a split personality that obfuscation has to respect exactly. The contract assembly — the interfaces, abstract bases and attributes that third-party plugins compile against — is a published ABI: rename a member of it and every plugin already shipped against the old names fails to bind, the same way renaming a public API breaks its callers. But the host that loads those plugins is your most valuable code and the thing you most want renamed. The two live in one solution and an ordinary obfuscation pass cannot tell them apart. This post reads the exact binding points — the interface type and method names an AssemblyLoadContext resolves at load time, the [Export]/[Import] contract names MEF matches on, and the attribute type names a host scans for — shows why each one is on the ABI and must survive, and how Nebula pins the contract surface by its shape while flattening the host behind it.

0 comments

Sign in to join the discussion — your thebay.events account works here.

No comments yet.