home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 315.img / RS2.ZIP / SEN.PAS < prev    next >
Pascal/Delphi Source File  |  1990-10-01  |  3KB  |  126 lines

  1. {$M $1000,0,0 }   { 2K stack, no heap }
  2. USES Crt, Dos;
  3. CONST
  4.   KEY1      = 87     ;   { F11 }
  5.  
  6. VAR
  7.   KbdIntVec  : PROCEDURE ;
  8.   TIMEINTVEC : PROCEDURE ;
  9.   REG   : REGISTERS;
  10.   PSP   : WORD ABSOLUTE $0:$EF*4;
  11.   INT_TABLE : ARRAY[1..1024] OF BYTE ABSOLUTE $0:$0;
  12.   INT_SAVE  : ARRAY[1..1024] OF BYTE ;
  13.   INT_SAVE1 : ARRAY[1..1024] OF BYTE ;
  14.   INV   : WORD ;
  15.   TCW   : FILE ;
  16.   MODE  : BYTE ;
  17.   PAGE  : BYTE ;
  18.   NO    : BYTE ;
  19.   SEGS  : WORD ;
  20.   OFFS  : WORD ;
  21.   BUSY  : BOOLEAN ;
  22.   SAFE  : ^BYTE   ;
  23.   WORK  : BOOLEAN ;
  24.   SCREEN : ^BYTE   ;
  25.   I      : INTEGER ;
  26.   TEMP   : BYTE    ;
  27.   SIZE   : WORD    ;
  28. {$F+}
  29.  
  30. PROCEDURE  GetGraph ; INTERRUPT ;
  31. VAR
  32.     INT_SAVE2 : ARRAY[1..1024] OF BYTE ;
  33. BEGIN
  34.   INLINE ( $9C ) ;
  35.   KBDINTVEC ;
  36.   MOVE(INT_SAVE,INT_TABLE,1024);
  37.   WORK := FALSE ;
  38.   SEGS:=$1200; OFFS:=$0;
  39.   REPEAT
  40.     INC(OFFS);
  41.     IF MEM[SEGS:OFFS  ] = $83 THEN
  42.     IF MEM[SEGS:OFFS+1] = $3E THEN
  43.     IF MEM[SEGS:OFFS+2] = $F0 THEN
  44.     IF MEM[SEGS:OFFS+3] = $07 THEN
  45.     IF MEM[SEGS:OFFS+4] = $00 THEN
  46.     IF MEM[SEGS:OFFS+5] = $75 THEN
  47.     IF MEM[SEGS:OFFS+6] = $0B THEN
  48.       WORK:=TRUE;
  49.   UNTIL (WORK) OR (OFFS=$FFFA);
  50.   IF WORK THEN
  51.     BEGIN
  52.       WRITE(^G^G^G);
  53.       MEM[SEGS:OFFS  ] := $C7 ;
  54.       MEM[SEGS:OFFS+1] := $06 ;
  55.       MEM[SEGS:OFFS+2] := $F0 ;
  56.       MEM[SEGS:OFFS+3] := $07 ;
  57.       MEM[SEGS:OFFS+4] := $00 ;
  58.       MEM[SEGS:OFFS+5] := $00 ;
  59.       MEM[SEGS:OFFS+6] := $90 ;
  60.     END
  61.   ELSE
  62.     WRITE(^G);
  63.  
  64.   MOVE(INT_SAVE1,INT_TABLE,1024);
  65. END ;
  66.  
  67. PROCEDURE  NEWINT8 ; INTERRUPT ;
  68. BEGIN
  69.   IF PORT[$60] = KEY1 THEN
  70.     BEGIN
  71.       MOVE(INT_TABLE,INT_SAVE1,1024);
  72.       BUSY := TRUE ;
  73.       SEGS := MEMW[ $0:9*4+2 ] ;
  74.       OFFS := MEMW[ $0:9*4   ] ;
  75.       @KBDINTVEC := PTR ( SEGS,OFFS ) ;
  76.       MEMW[ $0:9*4+2 ] := SEG ( GETGRAPH ) ;
  77.       MEMW[ $0:9*4   ] := OFS ( GETGRAPH ) ;
  78.       write(^g);
  79.     END ;
  80.   INLINE ($9C);
  81.   TIMEINTVEC ;
  82. END ;
  83.  
  84.  
  85. {$F-}
  86.  
  87. {======================== M A I N  *** P R O G R A M =====================}
  88. BEGIN
  89.   IF MEMW[$0:254 SHL 2] <> $1234  THEN
  90.   BEGIN
  91.     REG.AH := $34 ;
  92.     MSDOS ( REG ) ;
  93.     SAFE := PTR ( REG.ES,REG.BX ) ;
  94.     BUSY := FALSE ;
  95.     WORK := FALSE ;
  96.     NO     := 0   ;
  97.     PSP    := PREFIXSEG ;
  98.     MEMW[$0:254 SHL 2] :=  $1234 ;
  99.     GetIntVec($9,@KbdIntVec );
  100.     GetIntVec($8,@TIMEINTVEC);
  101.     MEMW[$0:252 SHL 2] := MEMW[$0:$8 SHL 2]  ;
  102.     MEMW[$0:252 SHL 2+2] := MEMW[$0:$8 SHL 2+2]  ;
  103.     MOVE(INT_TABLE,INT_SAVE,1024);
  104.     SetIntVec($8,Addr(NEWINT8));
  105.     WRITELN (#7,'Cracker of RS2 Installed !!') ;
  106.     WRITELN ('Press F11 to crack RS2 (at password screen) .....');
  107.     WRITELN ('**** Program design by Leu S.S. ****');
  108.     delay(4000);
  109.     KEEP ( DosExitCode ) ;
  110.   END
  111.   ELSE
  112.   BEGIN
  113.     MEMW[$0:$8 SHL 2]:= MEMW[$0:252 SHL 2]  ;
  114.     MEMW[$0:$8 SHL 2+2]:= MEMW[$0:252 SHL 2+2]  ;
  115.     MEMW[$0:254 SHL 2] :=  $FFFF ;
  116.     INV    := MEMW [PSP:$2C];
  117.     REG.ES := INV ;
  118.     REG.AH := $49 ;
  119.     MSDOS ( REG ) ;
  120.     REG.ES := psp ;
  121.     REG.AH := $49 ;
  122.     MSDOS ( REG ) ;
  123.     WRITELN ( #7,'Cracker of RS2 Removed !!') ;
  124.   END ;
  125. END .
  126.