home *** CD-ROM | disk | FTP | other *** search
/ PC Underground / UNDERGROUND.ISO / nodebug / nodeb.asm < prev    next >
Encoding:
Assembly Source File  |  1995-07-28  |  2.4 KB  |  142 lines

  1. .386p
  2. .MODEL TPASCAL
  3. .DATA
  4.  oldint3 dd ?
  5.  old_interrupt3 dd ?
  6.  
  7. .CODE
  8.  
  9.   public PIQ_Stop_System
  10.   public Keyboard_off
  11.   public Keyboard_on
  12.   public No_Stepping
  13.  
  14.  
  15. keyb_off macro
  16.   push ax
  17.   in  al,21h
  18.   or  al,02
  19.   out 21h,al
  20.   pop ax
  21. endm
  22.  
  23. keyb_on macro
  24.   push ax
  25.   in  al,21h
  26.   and al,0Fdh
  27.   out 21h,al
  28.   pop ax
  29. endm
  30.  
  31. PIQ_Stop_System proc near
  32.   push ds
  33.   push ax
  34.   push bx
  35.   push cs
  36.   pop  ds                             ; CS to DS
  37.   mov  cs:word ptr [@int_21_funct],4CB4h  ; End function Prg.
  38. @int_21_funct:
  39.   mov  ah,30h                         ; Function Get DOS-Vers.
  40.   int  21h
  41.   pop  bx
  42.   pop  ax
  43.   pop  ds
  44.   ret
  45. PIQ_Stop_System endp
  46.  
  47. Keyboard_off proc near
  48.    keyb_off
  49.    ret
  50. Keyboard_off endp
  51.  
  52. Keyboard_on proc near
  53.    keyb_on
  54.    ret
  55. Keyboard_on endp
  56.  
  57. No_Stepping proc near
  58.   push ax
  59.   jmp @Nostep+2
  60. @Nostep:
  61.   mov ds:byte ptr [06EBh],00
  62.   mov ax,4C01h
  63.   int 21h
  64.   pop ax
  65.   ret
  66. No_Stepping endp
  67.  
  68. public protected_stopping
  69. protected_stopping proc pascal
  70.     pusha
  71.     cli                         ; disable interrupts
  72.     mov eax,cr0                 ; switch to protected mode
  73.     or eax,1
  74.     mov cr0,eax
  75.     jmp PROTECTION_ENABLED      ; clear execution pipe
  76. PROTECTION_ENABLED:
  77.  
  78.     and al,0FEh                 ; switch back to real mode
  79.     mov cr0,eax                 ; don't reset CPU
  80.     jmp PROTECTION_DISABLED     ; clear execution pipe
  81. PROTECTION_DISABLED:
  82.     sti                         ; enable interrupts again
  83.     popa
  84.   ret
  85. protected_stopping endp
  86.  
  87. public Check_for_vector
  88. Check_for_vector proc pascal check : dword;
  89.   mov bx,0
  90.   mov es,bx
  91.   mov bx,18
  92.   mov eax,es:[bx]
  93.   mov oldint3,eax
  94.   mov eax,check
  95.   mov es:[bx],eax
  96.   ret
  97. Check_for_vector endp
  98.  
  99. public Vector_ok
  100. Vector_ok proc pascal check : dword;
  101.   mov bx,0
  102.   mov es,bx
  103.   mov bx,18
  104.   mov eax,es:[bx]
  105.   cmp eax,check
  106.   je  @check_ok
  107.   mov al,0
  108.   jmp @check_end
  109. @check_ok:
  110.   mov al,1
  111. @check_end:
  112.   ret
  113. Vector_ok endp
  114.  
  115. public restore_Checkvector
  116. restore_Checkvector proc pascal
  117.   mov bx,0
  118.   mov es,bx
  119.   mov bx,18
  120.   mov eax,oldint3
  121.   mov es:[bx],eax
  122.   ret
  123. restore_Checkvector endp
  124.  
  125. public Copy_int21_int3
  126. Copy_int21_int3 proc pascal
  127.   mov bx,0
  128.   mov es,bx
  129.   mov bx,18
  130.   mov eax,es:[bx]
  131.   mov old_interrupt3,eax              ; store old int3
  132.   mov bx,84                             ; load int 21
  133.   mov eax,es:[bx]
  134.   mov bx,18                             ; store in int3
  135.   mov es:[bx],eax
  136.   ret
  137. Copy_int21_int3 endp
  138.  
  139.  
  140.  
  141. end
  142.