home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* SUICHECK.PAS *)
- (* Unit zum Schutz von eigenen Programmen vor Ver- *)
- (* änderungen durch Viren. *)
- (* Aufruf: check(<dateiname>) *)
- (* Beim Namen darf die Extension nicht mit angegeben *)
- (* werden. SUICHECK legt zu den Programmen, in die es *)
- (* eingebunden wird, eine Datei mit der Extension .SCH an *)
- (* Sie ist immer 1024 Bytes lang. Bitte löschen Sie diese *)
- (* Datei nicht und verändern Sie nicht das R/O-Attribut, *)
- (* da es sonst Probleme geben könnte. *)
- (* (c) 1989 by Fabian Kiendl & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT SuiCheck;
-
- INTERFACE
-
- CONST
- Alles_OK = 0;
- EXE_nicht_gefunden = 5;
- Datenfile_init = 10;
- Virenwarnung = 255;
-
- VAR
- SuiCheckResult : BYTE;
-
- PROCEDURE Check(name : STRING);
-
- IMPLEMENTATION
-
- PROCEDURE Check(name:STRING);
-
- TYPE
- DatenTyp=ARRAY[0..255] OF LONGINT;
-
- VAR
- Filename : STRING;
- Programm : FILE;
- Block : ARRAY[1..128] OF BYTE;
- Zaehler : INTEGER;
- Vorkommen : DatenTyp;
- Referenz : DatenTyp;
- Datendatei : FILE OF DatenTyp;
- DatenName : STRING[70];
- Ergebnis : WORD;
-
- BEGIN
- Filename := name + '.EXE';
- Assign(Programm, Filename);
- {$I-} Reset(Programm); {$I+}
- IF IOResult <> 0 THEN BEGIN
- SuiCheckResult := EXE_nicht_gefunden;
- Exit;
- END;
- FOR Zaehler := 0 TO 255 DO Vorkommen[Zaehler] := 0;
- REPEAT
- FillChar(Block, 128, 0);
- BlockRead(Programm, Block, 1, Ergebnis);
- FOR Zaehler := 1 TO 128 DO
- Inc(Vorkommen[Block[Zaehler]]);
- UNTIL Ergebnis = 0;
- Close(Programm);
- DatenName := name + '.SCH';
- Assign(Datendatei, DatenName);
- {$I-} Reset(Datendatei); {$I+}
- IF IOResult <> 0 THEN BEGIN
- Rewrite(Datendatei);
- Write(Datendatei, Vorkommen);
- Close(Datendatei);
- SuiCheckResult := Datenfile_init;
- Exit;
- END;
- Read(Datendatei, Referenz);
- Close(Datendatei);
- FOR Zaehler := 0 TO 255 DO
- IF Referenz[Zaehler]<>Vorkommen[Zaehler] THEN BEGIN
- SuiCheckResult := Virenwarnung;
- Exit;
- END;
- SuiCheckResult := Alles_OK;
- END;
-
- BEGIN
- END.
- (* ------------------------------------------------------ *)
- (* Ende von SUICHECK.PAS *)