-------------------------------------------
Stack Shield README file v0.5
-------------------------------------------

Stack Shield is a tool that provides compile-time protection from exploits that
uses the "stack smashing" technique (based on giving the program an amount of
data that was not predicted by the program developer causing a buffer
overflow).

For detailed info about the "stack smashing" tecnique and the Stack Shield
protection system see the file TECNICAL.

For the version history of Stack Shield see the file HISTORY.

For installation info see the file INSTALL.

For license info see the file LICENSE.

To protect an asm file:
  stackshield [-dc] [-e entrypoint] [-l elements] inputfile.s outputfile.s
Should be clear that file names are arbitrary.
  -d Forces the program to exit when on attacks.
  -c Disables the protection system when too much nested calls are executed.
  -l elements Set the buffer element number to "elements" (default 256).
  -e entypoint Set the program entry point symbol to "entrypoint" (default
     "main").
To compile a C/C++ program with Stack Shield use shieldgcc or shieldg++ instead
of gcc or g++. These front ends automaticaly call gcc/g++ and stackshield in
to automatize compilation. Use the -z option to pass an option directly to
stackshield. Eg. shieldgcc -z d -o dummy dummy.c compiles the file dummy.c
passing the -d flag to stackshield.
To compile a program with make edit the Makefile changing each occourrence of
gcc, cc, g++ or c++ in shieldgcc, shieldcc, shieldg++ or shieldc++ respectively,
eventualy adding options.

Note that currentely the -fomit-frame-pointer option is incompatible with Stack
Shield and is ignored.

If the entry point is different than the "main" symbol or the symbol specified
with the -e option the program will not work. Also a file protected with Stack
Shield will not work if the program entry point is in an unprotected file.
So Stack Shield should not be used to compile libraries. These problems will be
fixed in future versions.

  By Vendicator.
    vendicator@usa.net
  Distributed under the GNU GENERAL PUBLIC LICENSE.