Using the Loader
- Download the Loader and open it.
- Start Gorilla Tag. Select your menu in the Loader's library.
- Enter your licence key if required, then click Add to launch.
- Click Continue, check your selection, then Launch selected menu.
Leave BepInEx emulation on unless the required libraries are already loaded. Restart the game before loading again or changing menus.
Keep your key private. Contact the menu's seller for key, expiry or device-reset issues.
Publishing your menu
Request a channel, then open your channel panel with its name and owner secret key. Keep that secret private.
- Build and test your menu against the current game. Add the entry point below.
- In Publishing, choose a protection mode. Lite needs only your menu DLL. Full also needs your reference DLLs.
- Upload your menu DLL. For Full, the Updater Troubleshooter can prepare the
menuandreferencesfolders from your DLL and current game installation. - Choose your settings, click Publish and wait for confirmation. Restart the game and test through the Loader.
Required entry point
namespace Loading
{
public static class Loader
{
public static void Load()
{
// Start your menu here.
}
}
}
Keep these names and the public static void signature. LoadWithKey(string key) is also supported when Load() is absent.
For Full, references must include your dependencies and unchanged DLLs from the current game. Do not use old or pre-obfuscated game copies. Lite includes its balanced protection automatically and does not require reference uploads or a PIN.
Other publishing settings
- Rename symbols: renames eligible code automatically. Use renaming exclusions for names your code or external tools need to keep.
- Include custom libraries loaded by name: available in Full for extra DLLs loaded through reflection. Ordinary dependencies are included automatically.
- Old: the previous protection mode, not recommended. It takes only your menu DLL and requires a PIN from support.
A failed publish keeps your existing menu available. Manage customer keys in the same channel panel.
Rename symbols
Enable Rename symbols in Publishing's optional settings. It works with Full, Lite and Old, independently of extra obfuscation. Known callbacks, data contracts and public APIs keep the names they need. Lite does not need reference uploads.
Eligible namespaces are renamed automatically. A type that needs its full name keeps its namespace too. When only Type.Name is required, that name can stay while its namespace changes. A class renaming exclusion preserves its full name; other eligible types in the same namespace can still move.
Private implementation names may change. For names used by external plugins, configuration files or reflection outside your DLL, add System.Reflection.ObfuscationAttribute to the specific code that must keep its name. No extra package is required.
using System.Reflection;
public class MenuActions
{
[Obfuscation(Feature = "renaming", Exclude = true)]
private void CalledByName() { }
}
This keeps the method name. Its body remains eligible for protection. The same attribute works on fields, properties, events and parameters.
Keep a class name or an entire class
// Keep this type name; its members can still be renamed.
[Obfuscation(Feature = "renaming", Exclude = true, ApplyToMembers = false)]
public class NamedType { }
// Keep this type, its members and nested types.
[Obfuscation(Feature = "renaming", Exclude = true, ApplyToMembers = true)]
public class ExternalContract { }
ApplyToMembers defaults to true. Property and event rules also apply to their accessors when enabled. A rule on a more specific member takes precedence over an enclosing rule; Exclude = false restores normal eligibility and never overrides compatibility checks.
Assembly exclusions and attribute cleanup
using System.Reflection;
// Place assembly attributes before type declarations.
[assembly: Obfuscation(Feature = "renaming", Exclude = true)]
Use this to preserve your code's names during general renaming. Prefer narrower exclusions when only a few names are required. Turning off Rename symbols in the panel also disables general renaming. Wyvern-managed startup code and generated helpers may still use generated names.
Exclude defaults to true. Feature = "all", including an omitted Feature, also excludes renaming, but affects other obfuscation features too; use "renaming" to preserve only names.
Consumed renaming attributes are removed by default. StripAfterObfuscation = false retains them in Full and Old. Lite removes publishing-only obfuscation attributes after processing, including retained directives.
Runtime-generated names and external assets cannot always be identified automatically. If another library inspects private names through an assembly or callback, exclude those names explicitly. Keep exclusions for those contracts and test the published menu in the game.
Obfuscation
Enable Obfuscation under Publishing's optional settings to add another layer of protection to your menu DLL. It works with Full, Lite and Old. Lite's built-in protection is included even when this option is off.
- All eligible: no attributes needed. Choose VM (default), Mutation, or Ultra (VM + Mutation).
- Selective: add attributes to classes or methods, then rebuild your DLL.
VM
using System.Reflection;
[Obfuscation(Feature = "WyvernVM", Exclude = false)]
public class SampleClass
{
public static int Calculate(int value) => value * 7 + 3;
}
Mutation
Use WyvernMutation instead, or put both attributes on the same class or method.
[Obfuscation(Feature = "WyvernMutation", Exclude = false)]
public static int Calculate(int value) => value * 7 + 3;
Exclusions and other attribute options
A class attribute applies to its members and nested types. To skip a method, add:
[Obfuscation(Feature = "WyvernVM", Exclude = true)]
public static void SkipThisMethod() { }
Exclude each feature you want to skip. Exclusions also work in All eligible.
ApplyToMembers = falsestops a class attribute from applying to its members.StripAfterObfuscation = falsekeeps the attribute in Full and Old output. Lite removes publishing-only obfuscation attributes after processing.- Assemblies, structs, properties and events also support attributes. The closest rule for each feature wins.
The panel reports what was applied. Unselected or unsupported methods keep standard Wyvern protection.
Common fixes
- Game not found
- Start Gorilla Tag and wait until it opens, then try again.
- Menu not up to date
- The author must republish using current game references. Restart the game after the update.
- Could not start / L1048 / L1053
- Restart the game and try one menu with BepInEx emulation on. If it repeats, send the error code to support.
- P1005: references
- Run the Troubleshooter again with the current game and matching dependencies.
- P1006: preparation
- Check the entry point above and test your original DLL. Retry; contact support if it repeats.
- P1018: attributes
- Check feature spelling and conflicting attributes, then rebuild.
- P1007 / P1011: timeout or unavailable
- Retry later. If it keeps failing, contact support with the code.
Still stuck? Send the menu name, exact error and steps to reproduce it. Never include licence keys or owner secrets.