Dober'man
02.07.2008, 17:31
Начитался я про трои, вирусы, черви, которые срабатывают на элементарное наведение указателя мыши на ярлык exe'шника и решил родить программу, которая выполняет отслеживание перемещения текстового указателя мыши.
Вдобавок добавил в код (ну это уже наверное лишнее, но убрать то можно =) ) визуальное отображение, в правом нижнем углу экрана, горизонтальных и вертикальных ( X и Y ) координат перемещения указателя, и еще немного API. При нажатии левой кнопки мыши её координаты фиксируются в левом нижнем углу экрана (эт всё WinAPI).
Исходник:
TITLE Программа регистрации движения мыши (mouse.asm)
INCLUDE Irvine16.inc
.data
ESCkey = 1Bh
GreetingMsg BYTE "Для выхода нажмите <Esc>",0dh,0ah,0
StatusLine BYTE "Левая кнопка:
"
BYTE "Положение мыши: ",0
blanks BYTE " ",0
Xcoordinate WORD 0
Ycoordinate WORD 0
Xclick WORD 0
Yclick WORD 0
.code
main PROC
mov ax,@data
mov ds,ax
call HideCursor
mov dx,OFFSET GreetingMsg
call WriteString
call ShowMousePointer
mov dh,24
mov dl,0
call GotoXY
mov dx,OFFSET StatusLine
call Writestring
L1:
call ShowMousePPosition
call LeftButtonClick
mov ah,11h
int 16h
jz L2
mov ah,10h
int 16h
cmp al,,ESCkey
je quit
L2:
jmp L1
quit:
call HideMousePointer
call ShowCursor
call ClrScr
call WaitMsg
exit
main ENDP
GetMousePosition PROC
push ax
mov ax,3
int 33h
pop ax
ret
GetMousePosition ENDP
HideCursor proc
mov ah,3
int 10h
or ch,30h
mov ah,1
int 10h
ret
HideCursor ENDP
ShowCursor PROC
mov ah,3
int 10h
mov ah,1
mov cx,0607h
int 10h
ret
ShowCursor ENDP
HideMousePointer PROC
push ax
mov ax,2
int 33h
pop ax
ret
HideMousePointer ENDP
ShowMousePointer PROC
push ax
mov ax,1
int 33h
pop ax
ret
ShowMousePointer ENDP
LeftButtonClick PROC
pusha
mov ax,5
mov bx,0
int 33h
cmp cx,Xclick
jne LBC1
cmp dx,Yclick
je LBC_exit
LBC1:
mov Xclick,cx
mov Yclick,dx
mov dh, 24
mov dl,15
call GotoXY
push dx
mov dx,OFFSET blanks
call WriteString
pop dx
call GotoXY
mov ax,Xcoordinate
call WriteDec
mov dl,20
call GotoXY
mov ax,Ycoordinate
call WriteDec
LBC_exit:
popa
ret
LeftButtonClick ENDP
SetMousePosition PROC
mov ax,4
int 33h
ret
SetMousePosition ENDP
ShowMousePosition PROC
pusha
call GetMousePosition
cmp cx,Xcoordinate
jne SMP1
cmp dx, Ycootdinate
je SMP_exit
SMP1:
mov Xcoordinate,cx
mov Ycoordinate,dx
mov dh,24
mov dl,60
call GotoXY
push dx
mov dx,OFFSET blanks
call WriteString
pop dx
call GotoXY
mov ax,Xcoordinate
call WriteDec
mov dl,65
call GotoXY
mov ax,Ycoordinate
call WriteDec
SMP_exit:
popa
ret
ShowMousePosition ENDP
END main
Делал асм. вставки в Delphi - все фурычит =)
p.s.: исходник карявить не стал, но и exe не выложил
Вдобавок добавил в код (ну это уже наверное лишнее, но убрать то можно =) ) визуальное отображение, в правом нижнем углу экрана, горизонтальных и вертикальных ( X и Y ) координат перемещения указателя, и еще немного API. При нажатии левой кнопки мыши её координаты фиксируются в левом нижнем углу экрана (эт всё WinAPI).
Исходник:
TITLE Программа регистрации движения мыши (mouse.asm)
INCLUDE Irvine16.inc
.data
ESCkey = 1Bh
GreetingMsg BYTE "Для выхода нажмите <Esc>",0dh,0ah,0
StatusLine BYTE "Левая кнопка:
"
BYTE "Положение мыши: ",0
blanks BYTE " ",0
Xcoordinate WORD 0
Ycoordinate WORD 0
Xclick WORD 0
Yclick WORD 0
.code
main PROC
mov ax,@data
mov ds,ax
call HideCursor
mov dx,OFFSET GreetingMsg
call WriteString
call ShowMousePointer
mov dh,24
mov dl,0
call GotoXY
mov dx,OFFSET StatusLine
call Writestring
L1:
call ShowMousePPosition
call LeftButtonClick
mov ah,11h
int 16h
jz L2
mov ah,10h
int 16h
cmp al,,ESCkey
je quit
L2:
jmp L1
quit:
call HideMousePointer
call ShowCursor
call ClrScr
call WaitMsg
exit
main ENDP
GetMousePosition PROC
push ax
mov ax,3
int 33h
pop ax
ret
GetMousePosition ENDP
HideCursor proc
mov ah,3
int 10h
or ch,30h
mov ah,1
int 10h
ret
HideCursor ENDP
ShowCursor PROC
mov ah,3
int 10h
mov ah,1
mov cx,0607h
int 10h
ret
ShowCursor ENDP
HideMousePointer PROC
push ax
mov ax,2
int 33h
pop ax
ret
HideMousePointer ENDP
ShowMousePointer PROC
push ax
mov ax,1
int 33h
pop ax
ret
ShowMousePointer ENDP
LeftButtonClick PROC
pusha
mov ax,5
mov bx,0
int 33h
cmp cx,Xclick
jne LBC1
cmp dx,Yclick
je LBC_exit
LBC1:
mov Xclick,cx
mov Yclick,dx
mov dh, 24
mov dl,15
call GotoXY
push dx
mov dx,OFFSET blanks
call WriteString
pop dx
call GotoXY
mov ax,Xcoordinate
call WriteDec
mov dl,20
call GotoXY
mov ax,Ycoordinate
call WriteDec
LBC_exit:
popa
ret
LeftButtonClick ENDP
SetMousePosition PROC
mov ax,4
int 33h
ret
SetMousePosition ENDP
ShowMousePosition PROC
pusha
call GetMousePosition
cmp cx,Xcoordinate
jne SMP1
cmp dx, Ycootdinate
je SMP_exit
SMP1:
mov Xcoordinate,cx
mov Ycoordinate,dx
mov dh,24
mov dl,60
call GotoXY
push dx
mov dx,OFFSET blanks
call WriteString
pop dx
call GotoXY
mov ax,Xcoordinate
call WriteDec
mov dl,65
call GotoXY
mov ax,Ycoordinate
call WriteDec
SMP_exit:
popa
ret
ShowMousePosition ENDP
END main
Делал асм. вставки в Delphi - все фурычит =)
p.s.: исходник карявить не стал, но и exe не выложил