home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* NODEB.PAS *)
- (* -- No debuggers wanted -- *)
- (* Unit zum Vergraulen von Debugging-künstlern in *)
- (* eigenen Programmen. *)
- (* (c) 1989, 1992 Jürgen Plehn & DMV-Verlag *)
- (* ------------------------------------------------- *)
- UNIT nodeb;
-
- INTERFACE
-
- USES Dos;
-
- PROCEDURE timetrap(legal : WORD);
-
-
- IMPLEMENTATION
-
- CONST
- nobytes = 40; { diese beiden Werte können nach }
- codebyte = $11; { Belieben geändert werden }
-
- TYPE
- bytearray = ARRAY[1..nobytes] OF BYTE;
-
- VAR
- fake : ^bytearray;
- i : WORD;
-
- FUNCTION Exor(byte1, byte2 : BYTE) : BYTE;
- BEGIN
- Exor := (byte1 AND NOT(byte2)) OR
- (NOT(byte1) AND byte2);
- END;
-
- PROCEDURE Kern(legal : WORD);
- { Der Interrupt 1AH gibt die seit Mitternacht }
- { gezählten Timerticks der Form CX = HI- Byte,}
- { DX = LO- Byte, zurück }
-
- CONST
- time : LONGINT = 0;
- VAR
- initime : LONGINT ABSOLUTE time;
- acttime : LONGINT;
- localregs : Registers;
- BEGIN
- localregs.AX := $0000;
- Intr($1A, localregs);
- IF (time = 0) OR (legal = 0) THEN
- initime := localregs.DX + (localregs.CX SHL 8)
- ELSE BEGIN
- acttime := localregs.DX + (localregs.CX SHL 8);
- IF acttime > initime + legal THEN
- Halt; { oder andere "Schweinereien" }
- END;
- END;
-
- PROCEDURE Code;
- BEGIN
- fake := Addr(Kern);
- FOR i := 1 TO nobytes DO
- fake^[i] := Exor(fake^[i], codebyte);
- END;
-
- PROCEDURE timetrap(legal : WORD);
- BEGIN
- Code; { entschlüsseln }
- Kern(legal); { ausführen }
- Code; { verschlüsseln }
- END;
-
- BEGIN
- Code; { verschlüsselt den Code von Kern }
- END.
- (* ------------------------------------------------- *)
- (* Ende von NODEB.PAS *)
-