[Back to MISC SWAG index] [Back to Main SWAG index] [Original]

    {
    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.

[Back to MISC SWAG index] [Back to Main SWAG index] [Original]