The Unprotected markers allow selecting parts of the code that should be executed only in a non-protected version of the file. During the protection process, the code inside these markers is deleted and these parts will not be present in memory when the protected file starts. In short, the code inside these markers will not be executed after protection.
uses
enigma_ide;
procedure Test;
begin
EP_Marker('unprotected_begin');
EP_Marker('unprotected_end');
end;
unprotected_begin.inc
asm
DB $EB, $08, $55, $4E, $50, $52, $4F, $54, $42, $00
end;
unprotected_end.inc
asm
DB $EB, $08, $55, $4E, $50, $52, $4F, $54, $45, $00
end;
#include "enigma_ide.h"
#pragma optimize("", off)
void test()
{
EP_Marker("unprotected_begin");
EP_Marker("unprotected_end");
}
#pragma optimize("", on)
unprotected_begin.inc
__asm
{
DB 0xEB, 0x08, 0x55, 0x4E, 0x50, 0x52, 0x4F, 0x54, 0x42, 0x00
}
unprotected_end.inc
__asm
{
DB 0xEB, 0x08, 0x55, 0x4E, 0x50, 0x52, 0x4F, 0x54, 0x45, 0x00
}
#include "enigma_ide.h"
#pragma optimize("", off)
void test()
{
EP_Marker("unprotected_begin");
EP_Marker("unprotected_end");
}
#pragma optimize("", on)
Call VarPtr("UNPROTECTED_BEGIN")
Call VarPtr("UNPROTECTED_END")
uses
enigma_ide;
begin
EP_Marker('unprotected_begin');
MessageBox(0, 'If you are seeing this message then the module is not protected!', 'Application', 0);
EP_Marker('unprotected_end');
{$I ..\..\..\EnigmaSDK\Delphi\unprotected_begin.inc}
MessageBox(0, 'If you are seeing this message then the module is not protected!', 'Application', 0);
{$I ..\..\..\EnigmaSDK\Delphi\unprotected_end.inc}
MessageBox(0, 'If you did not see any messages then the module is protected!', 'Application', 0);
end;
See markers examples in the installation folder, Examples\MarkersUnprotect subfolder.