the Enigma Protector supports plugin modules that will be embedded into the protected file and executed when the protected file starts. Plugins for the Enigma Protector are stored in the Plugin subfolder of the installation folder. If you want to add your own plugin, copy it into (for example) c:\program files\the enigma protector\plugins\ folder and open (re-open) the Enigma Protector. Using the plugins system, you may improve the protection, build your own protection systems, enlarge the functionality. It gives you complete control over the protected file together with the Enigma Protector! To embed a plugin into the protected file, check the necessary plugin in the list. To view the plugin description, double-click the plugin in the list.
Plugin is simply a DLL (Dynamic Link Library) that exports some functions. The plugin can be compiled with any compiler (MS C++, Borland C++, MASM, Delphi, etc) that supports unmanaged code (meaning it does not support DLLs that were compiled using the .NET technology).
Functions that may export plugin DLLs:
Enigma_Plugin_About - returns a wide char (UNICODE) string that determines the plugin name and author (this info will be shown in the list of plugins, the About column)
Enigma_Plugin_OnFinal - a procedure will be called after the final initialization of the protected module in the memory, but before it is executed.
Enigma_Plugin_OnSaveKey - a function is called when the protected file tries to save registration information. It can be used to skip the standard saving routine, to allow more flexibility upon saving registration information. The function has 4 parameters, ARegName and ARegKey contain pointers to registration name and key buffers and ARegNameLen and ARegKeyLen contain the number of bytes of name and key buffers. Note that to handle Wide Strings and UNICODE registrtation scheme you should divide ARegNameLen and ARegKeyLen values into 2 to get actual length of the string. This function should return FALSE if it does not save registration information (or it does not need to save it) and TRUE if the function succeeds. Note that standard saving routine will not be called if this function returns TRUE.
Enigma_Plugin_OnLoadKey - a function is called when the protected file tries to load registration information. It can be used to skip the standard loading routine, to allow more flexibility upon loading registration information. The function has 4 output parameters. After the successful loading, ARegName and ARegKey should contain pointers to the buffers of the registration name and key, and ARegNameLen and ARegKeyLen should contain the number of bytes of name and key buffers. Note that you have to allocate buffers for ARegName and ARegKey manually (somewhere in the global space). To handle the Wide Strings and UNICODE registration scheme, you should multiply the lengths of the strings by 2. This function should return FALSE if it does not load registration information (or it does not need to load it) and TRUE if the function succeeds. Note that a standard loading routine will not be called if this function returns TRUE.