home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Rising BBS
/
phoenixrising.zip
/
phoenixrising
/
vir-docs
/
crptlt18.arj
/
KRTTDEMO.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-08-31
|
5KB
|
144 lines
;********************************************************************************
; KRTTdemo.ASM
; AUTHOR: Köhntark
; DATE: 27 August 1993
;********************************************************************************
;***************************************************************
; TUNNEL 4.1 procedure usage:
; INPUT:
; bp=01 => search for original INT 2Ah
; bp=02 => search for original INT 13h
; any other value in bp => search for original INT 21h
; OUTPUT: ah=00 Not found
; ah=01 Found!
; ah=02 Int 21h / 2Ah / 13h Not Hooked
; ah=03 DOS internal interrupts are hooked
; If found:
; dx= DOS INT 21h / 2Ah / 13h SEGMENT
; di= INT 21h / 2Ah / 13h OFFSET
; al= RECURSION DEPT
; DESTROYED: ax,bx,cx,dx,di,bp,es
;***************************************************************
extrn TUNNEL:proc
MAIN SEGMENT BYTE
ASSUME cs:main,ds:main,ss:nothing ;all part in one segment=com file
org 100h
START:
mov ah,09 ;otherwise ...
lea dx,[FIRST_MSG] ;display KREATOR's msg
int 21h
push es ;save necessary registers
call TUNNEL ;call TUNNELING ENGINE
pop es ;restore necessary registers
mov cx,ax ;save return codes
mov ah,09 ;print found message
cmp ch,00 ;was int 21h found?
je NOT_FOUND
cmp ch,03 ;TROUBLE?
je TROUBLE
mov bp,dx ;bp=int 21h segment, di = offset
cmp ch,02 ;was int 21h found?
je NOT_HOOKED
cmp ch,01 ;is int 21h hooked?
jne TROUBLE
lea dx,[FOUND_MSG]
int 21h
lea dx,[OFFSET_MSG] ;display header
int 21h
mov bx,di ;display offset found
call BIN_TO_HEX
lea dx,[SEGMENT_MSG] ;display header
int 21h
mov bx,bp ;display segment found
call BIN_TO_HEX
lea dx,[RECURSION_DEPT_MSG] ;display header
int 21h
and cx,000FFh ;cx=cl
mov bx,cx ;recursion dept count
call BIN_TO_HEX
int 20h ;exit
NOT_HOOKED: lea dx,[OK_MSG]
int 21h
int 20h
NOT_FOUND: lea dx,[SAD_MSG]
int 21h
int 20h
TROUBLE: lea dx,[TROUBLE_MSG]
int 21h
int 20h
;*****************************************************************************
BIN_TO_HEX:
push cx ;save registers
push dx
push ax
mov ch,04 ;# of digits to process
ROTATE: mov cl,04 ;# of bits to rotate
rol bx,cl ;rotate bx l to r
mov al,bl ;move to al (2 digits)
and al,0Fh ;mask off upper digit
add al,30h ;convert to ASCII
cmp al,3Ah ;is it > 9?
jl PRINTIT ;jump of digit =0 to 9
add al,07h ;digit is A to F
PRINTIT:
mov dl,al
mov ah,2 ;INT 21h function
int 21h ;print character
dec ch
jnz ROTATE
pop ax ;restore registers
pop dx
pop cx
ret
;****************************************************************************
FIRST_MSG db '════════════════════════════════',13d,10d
db ' KöhntarK',027h,'s Tunneling Toolkit ',13d,10d
db ' Version 4.1 DEMO (C) 1993 ',13d,10d
db '════════════════════════════════',13d,10d,13d,10d,'$'
OK_MSG db 'INT 21h not hooked. ',13d,10d,'$'
FOUND_MSG db 'ORIGINAL INT 21h FOUND! ',13d,10d,'$'
OFFSET_MSG db 'INT 21h OFFSET FOUND: ','$'
SEGMENT_MSG db 13d,10d,'INT 21h SEGMENT FOUND: ','$'
SAD_MSG db 'COULDN',027h,'T FIND INT 21h ! ',13d,10d,'$'
RECURSION_DEPT_MSG db 13d,10d,'RECURSION DEPT: ','$'
TROUBLE_MSG db 'Internal DOS interrupts hooked ',13d,10d,'$'
INT_21_OFF dw 0
INT_21_SEG dw 0
MAIN ENDS
END START