home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 11 / tricks / suicheck.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-08-11  |  2.5 KB  |  86 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   SUICHECK.PAS                         *)
  3. (* Unit zum Schutz von eigenen Programmen vor Ver-        *)
  4. (* änderungen durch Viren.                                *)
  5. (* Aufruf:  check(<dateiname>)                            *)
  6. (* Beim Namen darf die Extension nicht mit angegeben      *)
  7. (* werden.  SUICHECK legt zu den Programmen, in die es    *)
  8. (* eingebunden wird, eine Datei mit der Extension .SCH an *)
  9. (* Sie ist immer 1024 Bytes lang. Bitte löschen Sie diese *)
  10. (* Datei nicht und verändern Sie nicht das R/O-Attribut,  *)
  11. (* da es sonst Probleme geben könnte.                     *)
  12. (*      (c) 1989 by Fabian Kiendl & TOOLBOX               *)
  13. (* ------------------------------------------------------ *)
  14. UNIT SuiCheck;
  15.  
  16. INTERFACE
  17.  
  18. CONST
  19.   Alles_OK           = 0;
  20.   EXE_nicht_gefunden = 5;
  21.   Datenfile_init     = 10;
  22.   Virenwarnung       = 255;
  23.  
  24. VAR
  25.   SuiCheckResult : BYTE;
  26.  
  27.   PROCEDURE Check(name : STRING);
  28.  
  29. IMPLEMENTATION
  30.  
  31.   PROCEDURE Check(name:STRING);
  32.  
  33.   TYPE
  34.     DatenTyp=ARRAY[0..255] OF LONGINT;
  35.  
  36.   VAR
  37.     Filename   : STRING;
  38.     Programm   : FILE;
  39.     Block      : ARRAY[1..128] OF BYTE;
  40.     Zaehler    : INTEGER;
  41.     Vorkommen  : DatenTyp;
  42.     Referenz   : DatenTyp;
  43.     Datendatei : FILE OF DatenTyp;
  44.     DatenName  : STRING[70];
  45.     Ergebnis   : WORD;
  46.  
  47.   BEGIN
  48.     Filename := name + '.EXE';
  49.     Assign(Programm, Filename);
  50.     {$I-} Reset(Programm); {$I+}
  51.     IF IOResult <> 0 THEN BEGIN
  52.       SuiCheckResult := EXE_nicht_gefunden;
  53.       Exit;
  54.     END;
  55.     FOR Zaehler := 0 TO 255 DO Vorkommen[Zaehler] := 0;
  56.     REPEAT
  57.       FillChar(Block, 128, 0);
  58.       BlockRead(Programm, Block, 1, Ergebnis);
  59.       FOR Zaehler := 1 TO 128 DO
  60.         Inc(Vorkommen[Block[Zaehler]]);
  61.     UNTIL Ergebnis = 0;
  62.     Close(Programm);
  63.     DatenName := name + '.SCH';
  64.     Assign(Datendatei, DatenName);
  65.     {$I-} Reset(Datendatei); {$I+}
  66.     IF IOResult <> 0 THEN BEGIN
  67.       Rewrite(Datendatei);
  68.       Write(Datendatei, Vorkommen);
  69.       Close(Datendatei);
  70.       SuiCheckResult := Datenfile_init;
  71.       Exit;
  72.     END;
  73.     Read(Datendatei, Referenz);
  74.     Close(Datendatei);
  75.     FOR Zaehler := 0 TO 255 DO
  76.       IF Referenz[Zaehler]<>Vorkommen[Zaehler] THEN BEGIN
  77.         SuiCheckResult := Virenwarnung;
  78.         Exit;
  79.       END;
  80.     SuiCheckResult := Alles_OK;
  81.   END;
  82.  
  83. BEGIN
  84. END.
  85. (* ------------------------------------------------------ *)
  86. (*               Ende von SUICHECK.PAS                    *)