Contributor: KARL HEINZ KREMER { RH>I am looking for source to catch someone who is debugging my program. What do you think about this ... I don't write it and sorry for the German, but it works OK. Just include it into your included units, when someone tries to debug your program, it reboots. } UNIT NoDebug; { ************************* } { Aus c't 2/90 Seite 186 } { (c) by Karl Heinz Kremer } { ************************* } INTERFACE { Hier gibt's nichts zu exportieren } IMPLEMENTATION USES DOS,CRT; VAR OldInt1, OldInt3, { Die alten Interruptvektoren } ExitSave : POINTER; { Speicher fr die alte Exit-Prozedur } PROCEDURE REBOOT; BEGIN Inline($b8/$00/$f0/ $50/ $b8/$5b/$e0/ $50/ $b8/$40/$00/ $8e/$d8/ $c7/$06/$72/$00/$34/$12/$cb); END; PROCEDURE DoNotDebug; INTERRUPT; { neue Int1 und Int3 Prozedur } BEGIN reboot; END; {$F+} PROCEDURE ResetNoDebug; {$F-} BEGIN { Neue Exit-Prozedur } SetIntVec(1,OldInt1); { Interruptvektoren zurcksetzen } SetIntVec(3,OldInt3); ExitProc:=ExitSave; { Zeiger auf alte Exit-Prozedur } END; BEGIN ExitSave:=ExitProc; { alte Exit Prozedur speichern } ExitProc:=@ResetNoDebug; { neue Exit Prozedur setzen } GetIntVec(1,OldInt1); { Int-Vektoren speichern } GetIntVec(3,OldInt3); SetIntVec(3,@DoNotdebug); { Int-Vektoren neu setzen } SetIntVec(1,@DoNotdebug); END.