home *** CD-ROM | disk | FTP | other *** search
/ PC Underground / UNDERGROUND.ISO / password / protecte.asm < prev    next >
Assembly Source File  |  1995-07-28  |  2KB  |  89 lines

  1. .386p
  2.  
  3. .MODEL TPASCAL
  4. .DATA
  5.  
  6.  oldint3 dd ?
  7.  old_interrupt3 dd ?
  8. .CODE
  9.  
  10. public protected_stopping
  11. protected_stopping proc pascal
  12.     pusha
  13.     cli                         ; disable interrupts
  14.     mov eax,cr0                 ; switch to Protected mode
  15.     or eax,1
  16.     mov cr0,eax
  17.     jmp PROTECTION_ENABLED      ; clear execution pipe
  18. PROTECTION_ENABLED:
  19.  
  20.     and al,0FEh                 ; switch back to Real mode
  21.     mov cr0,eax                 ; do not reset CPU
  22.     jmp PROTECTION_DISABLED     ; clear execution pipe
  23. PROTECTION_DISABLED:
  24.     sti                         ; enable interrupts again
  25.     popa
  26.   ret
  27. protected_stopping endp
  28.  
  29. public check_for_vector
  30. check_for_vector proc pascal check : dword;
  31.   mov bx,0
  32.   mov es,bx
  33.   mov bx,18
  34.   mov eax,es:[bx]
  35.   mov oldint3,eax
  36.   mov eax,check
  37.   mov es:[bx],eax
  38.   ret
  39. check_for_vector endp
  40.  
  41. public vector_ok
  42. vector_ok proc pascal check : dword;
  43.   mov bx,0
  44.   mov es,bx
  45.   mov bx,18
  46.   mov eax,es:[bx]
  47.   cmp eax,check
  48.   je  @check_ok
  49.   mov al,0
  50.   jmp @check_end
  51. @check_ok:
  52.   mov al,1
  53. @check_end:
  54.   ret
  55. Vector_ok endp
  56.  
  57. public restore_checkvector
  58. restore_checkvector proc pascal
  59.   mov bx,0
  60.   mov es,bx
  61.   mov bx,18
  62.   mov eax,oldint3
  63.   mov es:[bx],eax
  64.   ret
  65. restore_checkvector endp
  66.  
  67. public copy_int21_int3
  68. copy_int21_int3 proc pascal
  69.   mov bx,0
  70.   mov es,bx
  71.   mov bx,18
  72.   mov eax,es:[bx]
  73.   mov old_interrupt3,eax              ; store old int3
  74.   mov bx,84                             ; load int 21
  75.   mov eax,es:[bx]
  76.   mov bx,18                             ; save in int3
  77.   mov es:[bx],eax
  78.   ret
  79. copy_int21_int3 endp
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88. END
  89.