Short:    V1.68 Check for Archives/Packers/Viruses
Author:   stoecker@amigaworld.com (Dirk Stoecker)
Uploader: stoecker@amigaworld.com (Dirk Stoecker)
Type:     util/arc
Requires: util/arc/xadmaster.lha

          util/virus/xvsLibrary.lha
          util/pack/xfdmaster.lha
          util/pack/xpk_User.lha
Version:  1.68

This program uses xfdmaster.library (see util/pack/xfdmaster.lha) and
xvs.library (util/virus/xvsLibrary.lha) for packer and virus scanning.
The xadmaster.library (see util/arc/xadmaster.lha) is used to dearchive
file and disk archives.

NOTE: xadmaster.library is Shareware, so think about registering when
using this utility together with that library (and without it's nearly
useless). See conditions in xadmaster.library distribution.

The xfdmaster.library is needed to run the utility. The xvs.library and
xadmaster.library are recommended! The xpkmaster.library is needed with
ASKPWD password only (and to decrunch XPKF files).

CheckX unpacks archives and packed files as deep as possible:
 - you can unarchive a crunched archive as well
 - multiple crunched files can be decrunched
 - multiple archives can be extracted
 - multiple disk archives can be extracted
 - linked and crunched and archived files are no problem

This all depends mainly on your memory size! If have around 50MB and have
only little problems with really large files.

Call CheckX with a ? and you get following argument list:
 FROM,LOG,SAVE/K,ALL/S,ASKPWD/S,AUTOMOUNT/S,PRINTALL/S,PRINTEXEC/S,
 NODECRUNCH/S,NOUNLINK/S,NOUNARCHIVE/S,NOUNTRACK/S,NOTRACKCUT/S,NOSTRIP/S,
 NOVIRUS/S,DEBUG/S,QUIET/S

Enter a ? again and you get a short doc:
 FROM        source file or directory - may contain patterns
 LOG         log file name
 SAVE        directory, where decrunched files are saved
 ALL         scan deep into directories
 ASKPWD      ask for password when needed (needs xpkmaster.library)
 PRINTALL    print all filenames
 PRINTEXEC   print names of all executable files
 AUTOMOUNT   automatically mount RDx: device when needed
 NODECRUNCH  do not decrunch files with xfdmaster
 NOUNLINK    do not unlink files with xfdmaster
 NOUNARCHIVE do not call archiver for unarchiving file archives
 NOUNTRACK   do not call archiver for unarchiving track archives
 NOTRACKCUT  do not call archiver for partially track archives
 NOSTRIP     do not strip useless hunks
 NOVIRUS     do not scan with xvs.library for viruses
 DEBUG       also output texts to serial debug engine
 QUIET       do not output texts to console

A bit more explanation:
LOG         The output is written to a file as well as to the standard
            output stream. The main purpose CheckX was written for is
            to scan for crunched files and to test the decrunch
            routines. So the logging may take some more time, but is
            very stable, as the last log-entry is always the file which
            possibly crashed the machine.
            The logfile can be accessed by other programs for read and write
            the whole time CheckX works (and surely after that). But writing
            is not recommended, as this may produce a corrupted file.
SAVE        If this keyword is given, all uncrunched/unlinked/stripped
            files will be saved in the directory given with that keyword.
            The directory must already exist! Sub directories are created
            automatically.
            If files are unlinked, they get saved with .1, .2, ...
            extensions. Address crunched files are not saved. Use
            xfdDecrunchAddr or xfdDecrunch to do so.
AUTOMOUNT   To unarchive disk archives (DMS, Zoom) a destination device
            is needed. These devices are called RD0: to RDn: and for high
            density disks RH0: to RHn:. CheckX can automatically mount
            these or you may mount them before calling the program.
            The number n depends on the archiver depth, so normally RD1:
            should be the highest one really needed.
NOTRACKCUT  This prevents unarchiving of cutted archives. Splitted
            DMS-Archives may produce strange errors, but can be checked
            correctly, when the two parts are directly after another (e.g.
            no other track archive is between them). In this case the first
            file shows some XPKCERR_READWRITE and the second one the
            correct stuff. I checked EuroScene1 CD which has a lot cutted
            archives and newest xfdmaster.library had no problems, so
            probably this option is not needed anymore.
DEBUG       Should not be used normally. This brings the normal output to
            serial debugging terminal or catcher tools like Sushi. This
            allows a lot easier to detect files producing hits.

CheckX has following return values:
 0  - all ok
 5  - either no virus checking possible or virus found
 20 - an error occured and CheckX was unable to do anything

CheckX cannot scan files, which are read-protected. You get CheckX error 4
as result in that case. Unprotect files and scan again when you want. For
files contained in archives, the protection bits are ignored.

CheckX is completely reentrant and may work fine twice or more times
parallel (You can set the pure file protection bit and make it resident),
with one exception: Destination Disks (RDn: or RHn:) can be accessed only
by one tool! So when source path contains disk archives, start only one
copy of CheckX or use NOUNTRACK! It is not recommended to call it multiple
times as CheckX normally needs lots of memory.

This is a batch tool, so drink a coffee or two or three during its work.
Check the logfile afterwards. Use a text-editor and scan case sensitive
for "-Virus" and you get lines which a related to viruses (and mostly
only the important lines). A scan with "XFD-", "XAD-", "CheckX-" or
"-Error" brings lines which produced errors.

The complete number of found viruses is logged at the file end, if the
scan found some of them. Also the scan time and the number of errors
(if some appeared) is logged.

If the permanent file scrolling slows down your computer try setting the
output stream to a raw mode display using following redirect command:
">RAW:0/11/640/50/CheckX-Output/AUTO/CLOSE/WAIT".
To get CheckX really silent either use LOG option and call CheckX with
QUIET or redirect normal output into logfile with ">filename".

CheckX detects all the viruses found by xvs.library, which contains the
complete antivirus knowledge of VirusZ utility by Georg Hörmann. CheckX
cannot detect viruses in memory or remove detected viruses. You still
need antivirus software like VirusZ, VT or Virus_Checker. I always run
VirusZ in the background to check for viruses.
CheckX also scans disk archive information texts for packers and viruses
and also bootsectors of dearchived disks.

Error 11 (Could not check for virus) mostly means, that the files is a bit
to large and such files are normally archives only. So in most cases this
error is harmless!

If there are serious errors, please report them, but CheckX has a long
way of development and I hope it is really stable now (as well as
xfdmaster.library is now).
Send me files, which cause the system to bring Enforcer/MungWall/PatchWork
Hits or crash the computer. If the files are larger, please contact me
first.

This program is Freeware. Use it as you want, but WITHOUT ANY WARRANTY!

Contact me at:

************************************************************************
* snail-mail:                  * e-mail:                               *
*   Dirk Stoecker              *   stoecker@amigaworld.com             *
*   Geschwister-Scholl-Str. 10 *   dstoecker@gmx.de                    *
*   01877 Bischofswerda        * world wide web:                       *
*   GERMANY                    *   http://home.pages.de/~Gremlin/      *
* phone:                       * pgp key:                              *
*   GERMANY +49 (0)3594/706666 *   get with finger or from WWW pages   *
************************************************************************


============================= Archive contents =============================

Original  Packed Ratio    Date     Time    Name
-------- ------- ----- --------- --------  -------------
     628     256 59.2% 06-Dec-99 13:43:04  CheckX.info
   11140    6481 41.8% 06-Dec-99 13:43:04 +CheckX
    8066    3359 58.3% 06-Dec-99 13:43:04 +CheckX.readme
    1949     422 78.3% 06-Dec-99 13:43:04 +RD-MountList
   47058   14132 69.9% 06-Dec-99 13:43:04 +CheckX.c
    2188     805 63.2% 06-Dec-99 13:43:04 +SDI_ASM_STD_functions.lib
    5632    1977 64.8% 06-Dec-99 13:43:04 +SDI_ASM_STD_protos.h
    1288     486 62.2% 06-Dec-99 13:43:04 +SDI_compiler.h
    3713    1610 56.6% 06-Dec-99 13:43:04 +SDI_defines.h
     375     255 32.0% 06-Dec-99 13:43:04 +SMakeFile
    1444     724 49.8% 06-Dec-99 13:43:04 +StartCode.a
     192     167 13.0% 06-Dec-99 13:43:04 +StartCode.o
-------- ------- ----- --------- --------
   83673   30674 63.3% 07-Dec-99 19:14:02   12 files
