[comp.binaries.ibm.pc] v06i195: cvirprot, virus resistance for C

ibmbin-request@crdgw1.crd.ge.com (06/06/90)

Checksum: 3209149213  (Verify with "brik -cv")
Posting-number: Volume 06, Issue 195
Submitted-by: caprio@uhccux.uhcc.hawaii.edu
Archive-name: cvirprot/part01

  Because I don't keep viruses around for testing I can't say anything
about how well these routines work. With the virus problems we've been
having I felt this was a useful toolset.

The submitter says:

   This archive contains several programs designed to make C
programs virus resistant.  The programs do not actually stop
virus infection, but will alert the user that such an event has
occurred. The technique works by embedding CRC or checksum
values into the executable file.  When the user program is
started, it checks itself against the CRC values embedded when
the file was first compiled to see if any changes have been
made.  The program is a faster revision of the version published
in PC Magazine, Aug. 1989 (and includes a correction for a bug
in that version).
   These programs have been compiled under Turbo C 2.0 and MSC
5.1.  They have not been tested with other compilers.



[
Checksums obtained with the 4.3BSD "sum" or System V "sum -r" command.

checksum     size (bytes)  file (between BEGIN--cut and END--cut lines)
   54689        14393      part01

checksum     size (bytes)  file
   18146        10423      cvirprot.zoo

-- bill
]

cvirprot part01/01
BEGIN--cut here--cut here
begin 644 cvirprot.zoo
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
M5]1K3&&E%0BTS>'=G'UH$!#<I\3]`@``````````````````````````````
<``````````````````````````````````#\@P``
`
end
END--cut here--cut here