Skip to main content

Interposer 1.0.1 Release Notes

Downloads

Loading release downloads…

What's Changed

Plugin Support

The interposer now loads .dll and .asi files from .interposer\Plugins\ on startup. Plugins are loaded after all built-in hooks are active, so they can safely install their own hooks. Place any compatible plugin alongside your config directory and it will be picked up automatically. Successful loads are recorded in the session log as [PLUGIN LOAD]; failures include the Win32 error code.

A plugin API is exposed via GetProcAddress — no link-time dependency on the interposer is required. The following exports are available:

ExportDescription
InterposerLogWrite a line to the session log from a plugin
InterposerGetConfigStringRead a scalar value from Config.yml by dot-separated path
InterposerGetUsernameGet the effective player username
InterposerSetRegistryValueInject a REG_SZ value into the virtual registry by full key path
InterposerSetRegistryValueBySuffixInject a REG_SZ value into all virtual keys matching a path suffix

Log verbs are now normalized automatically: any [/] brackets and padding are stripped, the content is truncated to 16 characters, and the verb is re-wrapped as [verb] right-padded to 18 characters. This applies to all built-in hooks and to any plugin using InterposerLog — no manual formatting required.

A CD Key plugin (LANCommander.Interposer.Plugin.CDKey.dll) is included. It generates a deterministic CD key from the player username using a configurable mask and injects it into a virtual registry value, giving each player on a LAN a unique but consistent key without manual entry.

Registry Emulation: WOW64 VirtualStore Handling

Fixed an edge case where registry operations on paths in the virtual store could bypass emulation on non-elevated processes. Windows UAC registry virtualization silently redirects writes to HKLM\SOFTWARE\... from non-elevated processes to HKCU\Software\Classes\VirtualStore\MACHINE\.... If a handle to the VirtualStore path reached the hooks — for example, a handle opened before injection or resolved via NtQueryKeyInVirtualSpace would return false and the operation would fall through to the real registry. Both the HKEY_CURRENT_USER\...\VirtualStore\MACHINE\ and HKEY_USERS\<SID>\...\VirtualStore\MACHINE\ path forms are now normalized to their canonical HKEY_LOCAL_MACHINE\ equivalents before any virtual space checks.