Debugging with enigma_ide.dll
If you are developing the application that uses Enigma API funtions, such application will require the file enigma_ide.dll (for 32 bit application) or enigma_ide64.dll (for 64 bit application) to run. Note, these files are required to run application until it is not protected! After protection these files are not required anymore and should not be distributed with your application to end customers.
However, it is often required to debug the application while development. In this case, enigma_ide.dll/enigma_ide64.dll should be kept in the same folder with the compiled application. By default, any Enigma API function called inside unprotected application will fail (return empt results), because they are being called from enigma_ide.dll that exports Enigma API functions but returns no real results. Enigma API functions start to work and return real information only after protection.
If developer needs to emulate the work of Enigma API functions in unprotected application, like it is protected, the .ini file with the necessary configuration can be used together with enigma_ide.dll. Examples of enigma_ide.ini/enigma_ide64.ini files you can find in Examples folder of installed Enigma Protector. Configuration file enigma_ide.ini should be placed in the same folder with enigma_ide.dll, that reads it at startup. enigma_ide.ini file contains settings that allow to overwrite the default values returned by enigma_ide.dll to any custom, to emulate work of Enigma API functions until the main file is not protected.
enigma_ide.ini has the following structure and may contains the following parameters:
# This is a sample file with parameters for Enigma API functions worked under enigma_ide.dll/enigma_ide64.dll when the file is NOT protected, used to emulate Enigma API functions result, while development and debugging of NON protected application.
# Until the file that uses Enigma API is protected, it uses dummy Enigma API functions provided by empty libraries enigma_ide.dll/enigma_ide64.dll
# When file is not protected, all Enigma API functions fail/return empty results.
# To simulate working of Enigma API functions (like they will work after protection), this enigma_ide.ini/enigma_ide64.ini file can be used.
# Here you can overwrite the results that Enigma API functions returns until file is protected, for debuginning purpose.
# NOTE: same as enigma_ide.dll/enigma_ide64.dll, enigma_ide.ini/enigma_ide64.ini are not required by protected file! These files should not be distributed with protected software!
# Put this file in the folder of your appliaction (in the same folder with enigma_ide.dll/enigma_ide64.dll)
[Global]
# Parameters:
# ShowDialogs - set to 1 to show simple MessageBox when the dialog functions are called (like EP_RegistrationShowDialog, EP_ActivationShowDialog, EP_SplashScreenShow)
ShowDialogs=0
[Activation]
# Parameters:
# ActivationSucceeded - set to 0 or 1 if activation failed or succeeded
# DeactivationSucceeded - set to 0 or 1 if deactivation failed or succeeded
ActivationSucceeded=0
DeativationSucceeded=0
[Registration]
# Parameters:
# Unicode - set to 1 if registration scheme is Unicode in the Registration Features - Common settings
# SaveKey - set to 0 or 1 if save key functions fail or succeed
# LoadKey - set to 0 or 1 if load key functions fail or succeed
# CheckKey - set to 0 or 1 if check key functions fail or succeed
# DeleteKey - set to 0 or 1 if delete key functions fail or succeed
# HardwareID - HardwareID string
# RegistrationName - registration name string
# RegistrationKey - registration key string
# KeyStatus - return value for function EP_RegKeyStatus
# KeyInformation - set to 0 or 1 if key information functions fail or succeed
# KeyInformationStolen - determines the Stolen parameter from TKeyInformation structure, set to 0 or 1
# KeyInformationEncryptedSections - EncryptedSections array from TKeyInformation structure, set 0 or 1 for section to disable/enable it, must be a string of 16 characters
# KeyInformationCountryCode - determines the CountryCode parameter from TKeyInformation structure
# EncryptRegistrationInformation - return value for functions EP_RegEncryptRegistrationInformation, EP_RegDecryptRegistrationInformation
# CreationDateYear
# CreationDateMonth
# CreationDateDay - registration key creation date
# ExpirationDateYear
# ExpirationDateMonth
# ExpirationDateDay - registration key expiration date. Set Year, Month and Day values to enable key expiration date
# ExecutionsTotal
# ExecutionsLeft - total and left number of executions limited by registration key. To enable executions limit in registration key, the ExecutionsTotal parameter should be set to any other value than zero
# DaysTotal
# DaysLeft - total and left number of days limited by registration key. To enable days limit in registration key, the DaysTotal parameter should be set to any other value than zero
# RuntimeTotal
# RuntimeLeft - total and left number of runtime minutes limited by registration key. To enable runtime limit in registration key, the RuntimeTotal parameter should be set to any other value than zero
# GlobalTimeTotal
# GlobalTimeLeft - total and left number of global time minutes limited by registration key. To enable global time limit in registration key, the GlobalTimeTotal parameter should be set to any other value than zero
# RegisterAfterDateYear
# RegisterAfterDateMonth
# RegisterAfterDateDay - registration key register after date. Set Year, Month and Day values to enable key register after date
# RegisterBeforeDateYear
# RegisterBeforeDateMonth
# RegisterBeforeDateDay - registration key register before date. Set Year, Month and Day values to enable key register before date
Unicode=0
SaveKey=0
LoadKey=0
CheckKey=0
DeleteKey=0
HardwareID=
RegistrationName=
RegistrationKey=
KeyStatus=0
KeyInformation=0
KeyInformationStolen=0
KeyInformationEncryptedSections=0000000000000000
KeyInformationCountryCode=0
EncryptRegistrationInformation=0
CreationDateYear=0
CreationDateMonth=0
CreationDateDay=0
ExpirationDateYear=0
ExpirationDateMonth=0
ExpirationDateDay=0
ExecutionsTotal=0
ExecutionsLeft=0
DaysTotal=0
DaysLeft=0
RuntimeTotal=0
RuntimeLeft=0
GlobalTimeTotal=0
GlobalTimeLeft=0
RegisterAfterDateYear=0
RegisterAfterDateMonth=0
RegisterAfterDateDay=0
RegisterBeforeDateYear=0
RegisterBeforeDateMonth=0
RegisterBeforeDateDay=0
[Trial]
# Parameters:
# ExecutionsTotal
# ExecutionsLeft - total and left number of trial executions. To enable trial limit by executions number, the ExecutionsTotal parameter should be set to any other value than zero
# ExecutionTimeTotal
# ExecutionTimeLeft - total and left number of minutes for trial execution time limit. To enable trial limit by execution time, the ExecutionTimeTotal parameter should be set to any other value than zero
# DaysTotal
# DaysLeft - total and left number of trial days. To enable trial limit by days, the DaysTotal parameter should be set to any other value than zero
# ExpirationDateYear
# ExpirationDateMonth
# ExpirationDateDay - trial limitation by expiration date. Set Year, Month and Day values to enable trial expiration date
# DateTillDateStartYear
# DateTillDateStartMonth
# DateTillDateStartDay
# DateTillDateEndYear
# DateTillDateEndMonth
# DateTillDateEndDay - trial limitation from date till date. Set all 6 parameters to enable trial limitaion from date till date
# ClockReversedDays - number of days for clock reversing function EP_TrialClockReversedDays
ExecutionsTotal=0
ExecutionsLeft=0
ExecutionTimeTotal=0
ExecutionTimeLeft=0
DaysTotal=0
DaysLeft=0
ExpirationDateYear=0
ExpirationDateMonth=0
ExpirationDateDay=0
DateTillDateStartYear=0
DateTillDateStartMonth=0
DateTillDateStartDay=0
DateTillDateEndYear=0
DateTillDateEndMonth=0
DateTillDateEndDay=0
ClockReversedDays=0
[ProtectedStrings]
# Enumerate Protected Strings that are returned by EP_ProtectedStringByID/EP_ProtectedStringByKey functions
# Parameter name is ID or Key, parameter value is a protected string
# Example:
# 1=Protected String by ID
# hidden=Protected String by Key
[Other]
# CountryCode - return value for EP_MiscCountryCode function
# CryptHash - return value for functions that calculate hash
# CryptEncrypt - return value for encryption functions
# CryptDecrypt - return value for decryption functions
# CopiesTotal
# CopiesLeft - total and left number of copies of running application
# Protected - set to 0 or 1 as a return value of function EP_CheckupIsProtected
# OK - set to 0 or 1 as a return value of function EP_CheckupIsEnigmaOk
# Version - set to 0 or 1 as a return value of function EP_EnigmaVersion
# FindProcess - return value for find process functions
# VirtualizationTools - set to 0 or 1 as a return value of function EP_CheckupVirtualizationTools
# ProtectionDateYear
# ProtectionDateMonth
# ProtectionDateDay - date of file protection
CountryCode=0
CryptHash=0
CopiesTotal=0
CopiesCurrent=0
Protected=0
OK=0
Version=0
FindProcess=0
VirtualizationTools=0
ProtectionDateYear=0
ProtectionDateMonth=0
ProtectionDateDay=0
By settings different configuration parameters to .ini file, Enigma API functions will return non default/empty results while debugging.
If it is needed to load different configuration parameters while debugging of application, the Enigma API function LoadConfiguration/LoadConfigurationW can be called. Function has one parameter - file name for the new configuration .ini file (Ansi string for LoadConfiguration and Wide string for LoadConfigurationW).