PELock Version History

See how has PELock changed over the years, what methods of software protection have been added, what has been improved and fixed.

Version history




  • Added new license system function IsKeyHardwareIdLocked to determine if the key was locked to the hardware identifier, all SDK packages and usage examples updated.



  • Key status API function GetKeyStatus returned wrong results when time trial settings were enabled. Thank you Kevin for the bug report.



  • Upgraded loader code to avoid false-positive detections
  • Time trials API functions fixed to return valid PELOCK_TRIAL_ABSENT value accordingly to the documentation



  • Add default password hiding and displaying to the password protection dialogs
  • Add option to display which item has triggered the detection in Active Protection tab
  • Fixed warning dialogs titles saving in debugger detection options (and others)



  • Nagscreens informing the user that the key is missing are now shown when "Don't run application without a license key" is enabled




  • fixed hardware identifier pasting in the new user dialog box



  • removed a bug in license key system API related to hardware identifier reading



  • removed a bug that caused crashes while adding virtual DLL libraries to the list
  • fixed DLL handling bug with the default configuration settings
  • callbacks parameter passing is fixed for stdcall convention



  • relocation handling bug removed for ASLR enabled executable images



  • new metamorphic engine
  • new multilayer polymorphic engine
  • detection of running and attached debuggers
  • CRC file protection against modifications
  • virtual machine detection
  • new multi-thread protection approach
  • import table redirection improved with extra options
  • emulation of standard WinApi functions
  • generate white noise WinApi function calls
  • relocate executable image at a random image base
  • hide direct import table function calls
  • hiding of COM object classes
  • COM tracers detection
  • network sniffer detection
  • entrypoint antitrace protection
  • initialization table protection for Delphi applications
  • active detection of user defined cracking applications
  • saving file passwords to the Windows Registry
  • option to disable encryption of application's data with a password
  • option to enter password from the command line
  • macro analyzer added to analyze the proper placement of SDK macros in compiled binaries
  • new protection macros PELOCK_CHECKPOINT and PELOCK_CPUID
  • initialization callback functions PELOCK_INIT_CALLBACK
  • memory protection macro PELOCK_MEMORY_GAP
  • protected constant values PELOCK_DWORD
  • protection presence detection with IsPELockPresent functions
  • data encryption functions EncryptData / DecryptData
  • current process memory encryption EncryptMemory / DecryptMemory
  • more control over SDK system
  • watermarks added
  • watermark macros PELOCK_WATERMARK added
  • region and language lock options
  • default command line parameters
  • support for the Windows service applications (services)
  • allow only one instance option
  • option to disable DEP protection for protected application
  • option to check administration privileges
  • option to disable visual styles for protected application
  • Kaspersky Anti-Virus hooks compatibility added
  • Microsoft Detours hooks compatibility added
  • full compatibility of protected applications with the latest operating systems: Windows XP SP2/SP3 (32 bit), Windows XP (64 bit), Windows Vista (32bit / 64bit), Windows 7 (32bit / 64bit), Windows 8 (32bit / 64bit), Windows 8.1 (32bit / 64bit) and Windows 10 (32bit / 64bit)

License system

  • support for the UNICODE version of API functions
  • user name size limit increased up to 8192 bytes (8 kB)
  • option to create license keys as registry dumps (additional key format)
  • option to save keys to the ZIP archive
  • extra function to check license key status
  • new time trial options
  • remove local trial information from the Windows Registry
  • setting key from the memory buffer
  • additional 16 custom integers that can be stored in the license key
  • drag & drop enabled for the user name field
  • option to remove whitespace from the user name string
  • encrypt all key data with hardware identifier
  • users list sorted alphabetically (by name)
  • improved support for loading project files from the command line
  • new options to display nagscreens, display messages and open web pages for an unregistered applications
  • read user list from another project or import user list from CSV file
  • new function for disabling registration key
  • function for reloading registration key
  • function for setting your own hardware identifier routine
  • reading license key running time
  • more control over SDK's macros and some of the functions

Key generator

  • brand new key generator
  • Linux cgi-bin key generator
  • PHP examples of how to generate keys online


  • new and improved examples for C, C++, Delphi, Lazarus, PureBasic, PowerBasic, D, MASM
  • SDK support for the MinGW / GCC Windows compilers, Pelles C, PowerBASIC (updated header files)
  • CPELock class for the C++
  • TPELock component for Delphi
  • PELock class for D language


  • new options window
  • global options window
  • it's possible now to change the window size
  • it's now possible to change interface language without restarting the application
  • recent files list, to see it click on the button marked with ◀, or click with the right mouse button on the filename field
  • automatic hardware id field completion, hardware id is automatically pasted from the clipboard if you select this option
  • updated FAQ section, e.g. MS Visual Studio C++ / Borland C++ / Delphi optimizations and encryption macros
  • problem with large system fonts (120 DPI and higher) fixed
  • tooltips handling improved
  • "Edit" buttons replaced with icons
  • auto complete of file, URL and directory paths within edit controls
  • additional command line parameters
  • optional clickless navigation in tab and treeview controls


  • solid compression is used now to achieve better compression ratios
  • option to test all compression algorithms and select the best
  • option to disable application data compression
  • disable resource compression option
  • it's possible to select which resource types can and cannot be compressed
  • added several compression algorithms, including QuickLZ, UCL, zlib, miniLZO, HLZ, BriefLZ, JCALG1 and Mini-LZ
  • it's possible now to use custom compression library
  • compression algorithm random selection

Other features

  • generating antivirus friendly output files
  • creating batch files to restore original files from the backup copies
  • new option to save backup files to the selected directory
  • digitally signing of the protected applications (support for double signatures)
  • support for CFGuard and SAFESEH mitigation technologies
  • TLS Callbacks functions support, fully compatible with all Windows versions
  • option to preserve original file date
  • option to preserve original file attributes
  • option to preserve original zone identifier
  • sound events
  • new remote license system used by PELock
  • nagscreen window at the application startup and exit
  • detection of files protected with a Windows File Protection (WFP)
  • use only one CPU power for protected application option
  • set priority class for protected application process and for the loader itself
  • delay execution option
  • shut down the system after application exit
  • memory leaks removed
  • backup restoration rewritten
  • merge empty sections
  • fill alignment gaps between sections with random bytes
  • align loader's size to the file alignment value
  • option to remove exported functions structure
  • load application libraries statically
  • remove overlays option changed to copy overlays, additionally there are more options available to control overlays (like emulation)
  • option to append your own file at the end of the protected file
  • option to set the custom output file size
  • support for the applications with UNC paths (WebDAV mechanism) to DLL libraries in import table
  • support for configuration and project files larger than 64 kB regardless of the operating system


  • additional protection code redirection
  • added active protection
  • new api GetKeyExpirationDate
  • new options automatically start protection process after file loading and exit application after successful file protection
  • save log and clear log buttons added
  • password protection fixed


  • hardware key id added
  • new markers CLEAR_START i CLEAR_END
  • additional options in DOS header optimization
  • new option strip overlays
  • compression level option
  • password protection
  • external keygen library added


  • additional key data option
  • key expiration date option
  • protection against code dumping


  • added CRYPT_START and CRYPT_END markers
  • added additional anti-debug check
  • auto association of .plk files


  • added anti-filemon and anti-regmon checks in loader code
  • command line support added e.g. "pelock c:\project.plk", "pelock e:\myfile\file.exe"
  • fixed Delphi examples bugs


  • English help file
  • few bugs removed


  • first official version of PELock


If you would like to ask me about PELock, or something's not clear, mail me. I'll be happy to answer all of your questions.