没人理我啊,,,,费我三个小时,
我弄好了,下边的我的API,有兴趣的朋友可以看一下:
MyAPI proc vkey:DWORD
invoke getprocessname
invoke lstrcmp,offset xydname,offset thisname
.if eax==0
invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8 ;先还原API
invoke GetKeyboardState,vkey
push eax ;再调用API
mov eax,vkey
mov [eax+VK_MENU],word ptr 10000000b
;push eax
invoke WriteApi,WProcess,Papi1, addr hacker ,sizeof HOOKAPI ;调用完后再改回来
pop eax
.else
invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8 ;先还原API
invoke GetKeyboardState,vkey
push eax ;再调用API
mov eax,vkey
mov [eax+VK_MENU],word ptr 00000000b
invoke SetKeyboardState,vkey
pop eax
.endif
ret
MyAPI endp
;*******************************************************************
getprocessname proc
invoke GetCurrentProcessId
mov processid,eax
invoke OpenProcess,PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,FALSE,processid
mov hprocess,eax
invoke EnumProcessModules,hprocess,addr hmodule,size hmodule,cbneeded
invoke GetModuleBaseName,hprocess,hmodule,offset thisname,size thisname
ret
getprocessname endp
我弄好了,下边的我的API,有兴趣的朋友可以看一下:
MyAPI proc vkey:DWORD
invoke getprocessname
invoke lstrcmp,offset xydname,offset thisname
.if eax==0
invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8 ;先还原API
invoke GetKeyboardState,vkey
push eax ;再调用API
mov eax,vkey
mov [eax+VK_MENU],word ptr 10000000b
;push eax
invoke WriteApi,WProcess,Papi1, addr hacker ,sizeof HOOKAPI ;调用完后再改回来
pop eax
.else
invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8 ;先还原API
invoke GetKeyboardState,vkey
push eax ;再调用API
mov eax,vkey
mov [eax+VK_MENU],word ptr 00000000b
invoke SetKeyboardState,vkey
pop eax
.endif
ret
MyAPI endp
;*******************************************************************
getprocessname proc
invoke GetCurrentProcessId
mov processid,eax
invoke OpenProcess,PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,FALSE,processid
mov hprocess,eax
invoke EnumProcessModules,hprocess,addr hmodule,size hmodule,cbneeded
invoke GetModuleBaseName,hprocess,hmodule,offset thisname,size thisname
ret
getprocessname endp