SACSLite (ver. 1.0.3)
SACSLite is a freeware simplified version of SACS (Soubatchev AntiCopy System, see end of this file).
Description
The overwhelming majority of software cracks that may be found
in the Internet consists only of changing of several bytes in
the executable. Usually these are changing of conditional jump
with unconditional, replacing call or compare operators with
NOPs or insertion of RET at the beginning of checking routines.
SACS is intended for struggle against such easy cracks.
SACS uses new (at least for me ;-) approach to the problem of
the software protection.
In its protection technique SACS does NOT use a call of some
checking routine and subsequent conditional terminating of the
application.
Instead SACSLite modifies the Delphi project in such a manner,
that for proper functioning the application requires
restoration of OnClick event handlers of all TButton components
of the main form (SACS treats any event handlers of any
components) and (as a side effect) of Captions of various
components of the main form.
The restoration, in turn, requires release code. Protected
application does not check release code for validity during
execution, but USES it to restore event handlers (and Captions)
from encrypted data containing in the binary resource.
Using of encryption ensures, that without correct release code
the protected application cannot be cracked, because part of
the information needed to run the application properly exists
in the .EXE file only in the encrypted form.
Without correct release code the protected application will not
respond to OnClick events of TButton components - that is it
will not perform any programmed in this event handlers actions
(and Captions will be empty). The application may be launched,
but it will not work.
To be protected by SACSLite Delphi project must contain main
form with TButton components that have OnClick event handlers
(and various Captions) set at design time.
Different SACS kinds and protection methods may be used to
"SACS" application.
SACS kinds:
1. "Strict". SACS data is encrypted using the set of release
codes corresponding to chosen SACS protection methods. To run
properly the protected application requires that all release
codes match the ones, which were used to "SACS" it.
2. "Loose". SACS data is encrypted using generated by SACS
unique protection key(s). Then the protected application may be
freely distributed (through Internet, on CD-ROM, etc.). You
must generate separate release code(s) for each user of the
protected application.
3. "Only protection". Protected application will work properly
only if all conditions used to "SACS" the application are
observed. If only one condition is not observed, then the
protected application will not work at all.
4. "Trial version". If all conditions used to "SACS" the
application are observed, then the protected application will
work properly. If only one condition is not observed, then the
protected application will work as Trial version. Trial
versions produced by SACS are based on difference in the event
handlers, which are used in the trial and registered versions
of the protected application. If the user provides correct
release code(s), the protected application will use registered
versions of the event handlers, otherwise it will use the trial
ones.
SACS protection methods:
1. "PassPhrase" method uses string PassPhrase as release code.
Protected application will work only if the user passes the
same PassPhrase or corresponding release code.
2. "Hardware" method uses some specific to the user's computer
hardware information as release code. Protected application
will work only on computer used to get this information.
3. "Month" method uses information about one chosen calendar
month as release code. Protected application will work only
during this restriction month.
More detailed information may be found in SACS.HLP file.
Usage
- Install SACSLite in any folder on your computer.
- Create Delphi project, then close it.
- Run SACSLite, open your project and "SACS" it, choosing
appropriate SACS kind, methods and options.
- Open "SACSed" project in Delphi and compile it.
- Now protected project will run correctly only under
conditions corresponding to chosen "SACSing" methods.
- Do not forget to "UnSACS" project before further modifying.
How SACSLite works
First of all SACSLite checks if opened project is already
"SACSed". SACSLite checks only the presence of main form's .DFM
and .PAS files in SACS_BAK directory, so do not remove or
modify this directory and files that reside there, or you will
not be able to restore original .DFM and .PAS files.
If project is ready to be "SACSed" SACSLite backs up main
form's .DFM and .PAS files in SACS_BAK directory. Then SACS
Trial removes information about OnClick event handler of
TButtons and Captions of main form from .DFM, encrypts this
information and writes it in SACS_RES.RES resource file. Then
it creates SACS_DCU.DCU file and at last adds SACS_DCU unit in
uses clause and UN_SACS routine in OnCreate event handler of
main form's .PAS file.
UN_SACS performs restoration of event handlers and Captions
during execution.
The protected application may be launched without or with wrong
password, but application will not react to treated by SACS
events and all treated by SACS Captions will be empty.
What is the difference between SACS and SACSLite
As I mentioned, SACSLite is simplified version of SACS.
The only but very important difference between SACS and
SACSLite is that SACS allows to treat any event handlers, not
only OnClick of TButton components.
Information about SACS and terms of its acquisition will be
e-mailed to all who are interested. Please, do not hesitate to
contact with me by e-mail.
Examples
To check what "SACSed" by SACS and SACSLite applications look
like you can download file http://www.urvb.ru/sacs/sacstst.zip
where you can find two "SACSed" example applications.
Where to download
You can download SACSLite from:
http://www.urvb.ru/sacs/sacslite.zip (always latest version)
or from Delphi Super Page:
http://sunsite.icm.edu.pl/delphi/ftp/tools/sacslt02.zip.
Oleg Soubatchev
soi@urvb.e-burg.su
urvb@mail.ur.ru