ASM 写DLL 模拟鼠标操作代码
2009-07-24 09:39
417 查看
;====================myDLL.asm
.586
.model flat,stdcall
option casemap:none
include myDLL.inc
.const
INPUT_MOUSE equ 0h
INPUT_KEYBOARD equ 1h
INPUT_HARDWARE equ 2h
CTROL_ID equ 16Dh
.data
.data?
hInstance dd ?
;hMainWND dd ?
g_hDllMain dd ?
MOUSEINPUT struct
dxx dword ?
dy dword ?
mouseData dword ?
dwFlags dword ?
time dword ?
dwExtraInfo dword ?
MOUSEINPUT Ends
KEYBDINPUT struct
wVk dword ?
wScan dword ?
dwFlags dword ?
time dword ?
dwExtraInfo dword ?
KEYBDINPUT Ends
HARDWAREINPUT struct
uMsg dword ?
wParamL dword ?
wParamH dword ?
HARDWAREINPUT Ends
INPUT_MOUSE_DATA struct
dwtype dword ?
mi MOUSEINPUT <?,?,?,?,?,?>
INPUT_MOUSE_DATA Ends
INPUT_KEYBD_DATA struct
typee dword ?
ki KEYBDINPUT <?>
INPUT_KEYBD_DATA Ends
INPUT_HD_DATA struct
typee dword ?
hi HARDWAREINPUT <?>
INPUT_HD_DATA Ends
.code
;DLL的入口函数
;#########################################################################
DllEntry proc hModule:HINSTANCE, dwReason:DWORD, lpReserved:DWORD
.IF dwReason == DLL_PROCESS_ATTACH
mov eax, hModule
mov g_hDllMain, eax
mov eax, TRUE
.ELSEIF
mov eax, FALSE
.ENDIF
ret
DllEntry Endp
;--------------------以上这些内容为DLL函数导出为可注册DLL必须的过程
;#########################################################################
; Output Window procs
myDLL_Mouse proc hMainWND:DWORD,hCTROLID:DWORD
LOCAL keydata:KEYBDINPUT
LOCAL x:MOUSEINPUT
LOCAL y:HARDWAREINPUT
LOCAL inputdata: INPUT_MOUSE_DATA
LOCAL TRECT:RECT
pushad
;mov edx,206ECh
.IF hCTROLID==0
push CTROL_ID
pop hCTROLID
.endif
invoke GetDlgItem,hMainWND,hCTROLID ;获取窗口控件句柄,通过控件ID
mov edx,eax
invoke GetWindowRect,edx,addr TRECT
mov eax,TRECT.left
add eax,25
mov TRECT.left,eax
mov eax,TRECT.top
add eax,6
mov TRECT.top,eax
invoke SetCursorPos,TRECT.left,TRECT.top
mov inputdata.dwtype,INPUT_MOUSE
mov inputdata.mi.dxx,0
mov inputdata.mi.dy,0
mov inputdata.mi.mouseData,0
mov inputdata.mi.dwFlags,MOUSEEVENTF_MOVE or MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_LEFTUP
;invoke GetTickCount
mov inputdata.mi.time,0
;invoke GetMessageExtraInfo
mov inputdata.mi.dwExtraInfo,0
invoke SendInput,1,addr inputdata,sizeof inputdata
popad
ret
myDLL_Mouse endp
;#########################################################################
End DllEntry
;============================myDLL.inc
include windows.inc
include user32.inc
include kernel32.inc
include shell32.inc
includelib user32.lib
includelib kernel32.lib
includelib shell32.lib
;======================myDLL.Def
LIBRARY "myDLL.DLL"
DESCRIPTION "myDLL DLL"
EXPORTS
myDLL_Mouse
;=================== 调用方法其它ASM中调用代码
.DATA
szDLLFile db 'myDLL.dll',0
szlpModule db 'myDLL_Mouse',0
szDllKernel32 db 'Kernel32.dll',0
szlpLoadLibraryA db 'LoadLibraryA',0
.DATA?
hDLLFile dd ?
hlpModule dd ?
hlpLoadLibraryA dd ?
hDllKernel32 dd ?
.CODE
myDLL proc
invoke GetModuleHandle,addr szDllKernel32
mov hDllKernel32,eax
invoke GetProcAddress,hDllKernel32,addr szlpLoadLibraryA
mov hlpLoadLibraryA,eax
push offset szDLLFile
call hlpLoadLibraryA ;获取我的DLL句柄
;invoke LoadLibrary,addr szDLLFile
mov hDLLFile,eax
invoke GetProcAddress,hDLLFile,addr szlpModule
mov hlpModule,eax
mov eax,dword ptr[ebp+100h]
mov ebx,eax
push IDC_CLOSE
push hMainWND
call hlpModule
ret
myDLL endp
.586
.model flat,stdcall
option casemap:none
include myDLL.inc
.const
INPUT_MOUSE equ 0h
INPUT_KEYBOARD equ 1h
INPUT_HARDWARE equ 2h
CTROL_ID equ 16Dh
.data
.data?
hInstance dd ?
;hMainWND dd ?
g_hDllMain dd ?
MOUSEINPUT struct
dxx dword ?
dy dword ?
mouseData dword ?
dwFlags dword ?
time dword ?
dwExtraInfo dword ?
MOUSEINPUT Ends
KEYBDINPUT struct
wVk dword ?
wScan dword ?
dwFlags dword ?
time dword ?
dwExtraInfo dword ?
KEYBDINPUT Ends
HARDWAREINPUT struct
uMsg dword ?
wParamL dword ?
wParamH dword ?
HARDWAREINPUT Ends
INPUT_MOUSE_DATA struct
dwtype dword ?
mi MOUSEINPUT <?,?,?,?,?,?>
INPUT_MOUSE_DATA Ends
INPUT_KEYBD_DATA struct
typee dword ?
ki KEYBDINPUT <?>
INPUT_KEYBD_DATA Ends
INPUT_HD_DATA struct
typee dword ?
hi HARDWAREINPUT <?>
INPUT_HD_DATA Ends
.code
;DLL的入口函数
;#########################################################################
DllEntry proc hModule:HINSTANCE, dwReason:DWORD, lpReserved:DWORD
.IF dwReason == DLL_PROCESS_ATTACH
mov eax, hModule
mov g_hDllMain, eax
mov eax, TRUE
.ELSEIF
mov eax, FALSE
.ENDIF
ret
DllEntry Endp
;--------------------以上这些内容为DLL函数导出为可注册DLL必须的过程
;#########################################################################
; Output Window procs
myDLL_Mouse proc hMainWND:DWORD,hCTROLID:DWORD
LOCAL keydata:KEYBDINPUT
LOCAL x:MOUSEINPUT
LOCAL y:HARDWAREINPUT
LOCAL inputdata: INPUT_MOUSE_DATA
LOCAL TRECT:RECT
pushad
;mov edx,206ECh
.IF hCTROLID==0
push CTROL_ID
pop hCTROLID
.endif
invoke GetDlgItem,hMainWND,hCTROLID ;获取窗口控件句柄,通过控件ID
mov edx,eax
invoke GetWindowRect,edx,addr TRECT
mov eax,TRECT.left
add eax,25
mov TRECT.left,eax
mov eax,TRECT.top
add eax,6
mov TRECT.top,eax
invoke SetCursorPos,TRECT.left,TRECT.top
mov inputdata.dwtype,INPUT_MOUSE
mov inputdata.mi.dxx,0
mov inputdata.mi.dy,0
mov inputdata.mi.mouseData,0
mov inputdata.mi.dwFlags,MOUSEEVENTF_MOVE or MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_LEFTUP
;invoke GetTickCount
mov inputdata.mi.time,0
;invoke GetMessageExtraInfo
mov inputdata.mi.dwExtraInfo,0
invoke SendInput,1,addr inputdata,sizeof inputdata
popad
ret
myDLL_Mouse endp
;#########################################################################
End DllEntry
;============================myDLL.inc
include windows.inc
include user32.inc
include kernel32.inc
include shell32.inc
includelib user32.lib
includelib kernel32.lib
includelib shell32.lib
;======================myDLL.Def
LIBRARY "myDLL.DLL"
DESCRIPTION "myDLL DLL"
EXPORTS
myDLL_Mouse
;=================== 调用方法其它ASM中调用代码
.DATA
szDLLFile db 'myDLL.dll',0
szlpModule db 'myDLL_Mouse',0
szDllKernel32 db 'Kernel32.dll',0
szlpLoadLibraryA db 'LoadLibraryA',0
.DATA?
hDLLFile dd ?
hlpModule dd ?
hlpLoadLibraryA dd ?
hDllKernel32 dd ?
.CODE
myDLL proc
invoke GetModuleHandle,addr szDllKernel32
mov hDllKernel32,eax
invoke GetProcAddress,hDllKernel32,addr szlpLoadLibraryA
mov hlpLoadLibraryA,eax
push offset szDLLFile
call hlpLoadLibraryA ;获取我的DLL句柄
;invoke LoadLibrary,addr szDLLFile
mov hDLLFile,eax
invoke GetProcAddress,hDLLFile,addr szlpModule
mov hlpModule,eax
mov eax,dword ptr[ebp+100h]
mov ebx,eax
push IDC_CLOSE
push hMainWND
call hlpModule
ret
myDLL endp
相关文章推荐
- 转载:键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- Control Study -> 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- [转载]C# 封装winio.dll 驱动级按键鼠标操作模拟
- Control Study -> 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- C# 封装winio.dll 驱动级按键鼠标操作模拟
- Control Study -> 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- C# WPF 中用代码模拟鼠标和键盘的操作
- C# 模拟 鼠标 键盘操作
- python模拟鼠标拖动操作的方法
- vc模拟鼠标键盘操作实用类mouse_event
- uinput模拟鼠标事件,用于跨屏操作
- vc2012模拟鼠标键盘操作事件
- [DLL]模仿C++中INI文件代码操作习惯的XML配置文件类
- C#模拟鼠标在指定区域进行指定操作的小工具
- VB6.0代码窗口不支持鼠标中键操作滚动条解决方法
- Python模拟键盘输入和鼠标操作
- vb的winio模拟键盘鼠标部分参考代码
- python模拟鼠标键盘操作的库
- python实现模拟鼠标代码