home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* SELFTEST.PAS *)
- (* Testet sich selbst auf unerlaubte Veränderungen... *)
- (* (c) 1989 Klaus Ruzicka & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT selftest;
-
- INTERFACE
-
- TYPE str8 = STRING[8];
-
- PROCEDURE self_test(name : str8);
-
- IMPLEMENTATION
-
- PROCEDURE self_test(name : str8);
- VAR datei : FILE;
- info : FILE OF LONGINT;
- block : ARRAY [1..128] OF BYTE;
- i, test,
- sumvgl, laevgl : LONGINT;
- found : BOOLEAN;
- j : INTEGER;
-
- BEGIN
- WriteLn('SELBSTTEST: Testet sich selbst auf unerlaubte ',
- 'Veränderungen,');
- WriteLn(' legt ein Informationsfile mit dem ',
- 'Namen ',name,'.INF an.');
- WriteLn;
- writeln('(C) 1989 Klaus Ruzicka & TOOLBOX');
- {$I-}
- Assign(datei, name + '.EXE');
- Reset(datei);
- {$I+}
- found := (IOResult = 0) AND (FileSize(datei) > 0);
- IF NOT found THEN BEGIN
- WriteLn(Chr(7) + name + '.EXE nicht gefunden!');
- Halt(1);
- END;
- test := 0;
- {$I-}
- Assign(info, name + '.INF');
- Reset(info);
- {$I+}
- found := (IOResult = 0) AND (FileSize(info) > 0);
- IF NOT found THEN BEGIN
- WriteLn('Selbsttest wird initialisiert!');
- Rewrite(info);
- END ELSE BEGIN
- WriteLn('Selbsttest wird durchgeführt');
- Read(info, sumvgl);
- Read(info, laevgl);
- END;
- IF found AND (laevgl <> FileSize(datei)) THEN BEGIN
- WriteLn(Chr(7) + 'Fehler beim Längenvergleich! Virus?');
- Halt(1);
- END;
- FOR i := 0 TO FileSize(datei) - 1 DO BEGIN
- BlockRead(datei, block, 1);
- FOR j := 1 TO 128 DO
- test := test + block[j];
- END;
- IF NOT found THEN BEGIN
- Write(info, test);
- i := FileSize(datei);
- Write(info, i);
- END ELSE
- IF test <> sumvgl THEN BEGIN
- WriteLn(Chr(7)
- + 'Fehler beim Prüfsummenvergleich! Virus? ');
- Halt(1);
- END;
- END;
-
- BEGIN
- END.
- (* ------------------------------------------------------ *)
- (* Ende von SELFTEST.PAS *)