ReFox Help - level III

protection level III

Visual FoxPro 6, 7, 8 and 9 executables
Visual FoxPro 6, 7, 8 and 9 .app and .fxp - see *)

Visual FoxPro 6, 7, 8 and 9 COM servers (.exe or .dll)

If compiled executable is unencrypted, it can be compressed for distribution, then it must be decompressed to run on target PC and the code can be decompiled easily. If compiled executable is encrypted, the compression is ineffective which brings problem of distribution.
With Level III of ReFox XII the encryption and compression are combined into one step. No additional library files or support DLL’s are required to run the application, only the standard RT module is used and it is modified on the fly when loaded into memory. Applications are compressed to 25% of original size and decompressed into memory only when run. The application is protected by modified encryption method to disable ReFox and other decompilers from decompiling the code.

Level  III supports Visual FoxPro 6, 7, 8 and 9 EXEs, DLLs and COM Servers(exe, dll)
Level  III enables calling another protected application from within compressed executable

*) Level III can be use to protect and compress APP or FXP files too,
the same password as for the main exe must be used for protection

WARNING - protection level III is irreversible !!!

Level III branding does not require any code insertions to be made.
This level scrambles the code so it is not recognized by ReFox
Application is compressed and uses standard runtime modified in memory after loaded.

The add I+ option combines level I+ and III protection.

the password is hashed and the value is used as a seed for the modified encryption of protected files
all files called from the main executable (loader) must be protected by the same not empty password
an empty password is replaced by any random value which is different for each file
the password does not mean a 'magic word' which could be used to remove the protection

RT DLL's Time Stamp
this value replaces the date-time information in the string returned by VERSION(1) function
this can be used to forward a short message to the protected application
e.g. the application can test whether or not is running in protected mode
(maximum 22 characters)
see using GETENV ("ReFox.Brand")

defines an image which is shown on application start
any image type acceptable by GdiPlus can be used,
transparent .png recommended,
use the file picker to select an image,
use the spinner to define splashscreen duration,
splashscreen is closed from application - see using GETENV ("ReFox.SplashScreen")

Cryptor issue
see using GETENV ("ReFox.CryptorX")

obsolete solution:
- edit ReFox.ini and set CryptorX = 1
- check Cryptor checkbox in Branding dialog

Limited / low memory issue
- edit ReFox.ini and set MemLimit = 1
- check limited memory checkbox in Branding dialog

DBC abuse protection
(hackers can abuse DBC to inject malicious code into application)
- DBC forbidden, prevents from opening any DBC in the application
- DBC signed only, all DBC must be signed (see Level I+ for signing DBC)
- DBC no restriction, there is no protection from abusing database containers

use all
- all three upackers are included,
  usefull only if several applications need to run together and were packed by different packers
  then the starter application (the loader) must be protected with this option

pack any
- all application components are packed (e.g. icon)

pack APP
- also APP or single FXP is packed, these must be run from packed exe only

- obfuscate application structure
  additional protection made by level III

- obfuscate compiled code,
  additional protection, but worse compression ratio ;-(

FileToStr abuse protection
0  default, application is protected from FileToStr(...) abuse
1  using FileToStr( ) is partially restricted, not blocked in macros and ExecScript()
2  using FileToStr( ) is partially restricted, not blocked in compiled code
3  using FileToStr( ) is fully allowed, protection is disabled

add I+
- can remove debug info for better compression and adds a bit more protection


Compression methods and parameters:

ZLIB – vers. 1.2.2 -
JCAL – vers. 5.34 -
LZMA - vers. 9.12 -

ZLIB compresses faster than JCAL , JCAL gives better compression
there is no difference in speed of decompression
LZMA - new packer, seems to be better then ZLIB and JCAL in compression and speed

first parameter: 1=max speed ... 9= best compression

second parameter is for segment size

if segment_size < file_size
the file is split to segments and each segment is compressed
and decompressed separately - this is useful for extra large files only

Makefile command - Brand 5 or III

see also
    set branding level III options in makefile

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

LZMA vers. 9.12 - Compression library
Copyright (C) 2009 by Igor Pavlov

JCALG1 r5.34 - Compression library
Copyright (C) 1999 - 2002 by Jeremy Collake

ZLIB compression library, version 1.2.1, November 17th, 2003
Copyright (C) 1995 - 2003 Jean-loup Gailly and Mark Adler