阅读:2321回复:1
HOOK getcursorPos为什么不行呢!大侠看看呢!typedef BOOL (WINAPI* TRUEGetCursorPos)(LPPOINT lpPoint); TRUEGetCursorPos pTGetcursorPos = NULL; unsigned char gcode1[5]; BOOL MyGetCursorPos(LPPOINT lpPoint) { DWORD dwOldProtect; DWORD lOldProtect=0; VirtualProtect(pTGetcursorPos, 5, PAGE_READWRITE, &dwOldProtect); CopyMemory(pTGetcursorPos, &gcode1, 5); VirtualProtect(pTGetcursorPos, 5, dwOldProtect, &dwOldProtect); BOOL bRet = pTGetcursorPos(lpPoint); unsigned char JmpCode[5]={0xe9,0x00,0x00,0x00,0x00}; int JmpOffset = (char*)MyGetCursorPos - ((char*)pTGetcursorPos) -5; CopyMemory(JmpCode+1,&JmpOffset,4); VirtualProtect((char*)pTGetcursorPos,5,PAGE_READWRITE,&lOldProtect); CopyMemory(&gcode1,pTGetcursorPos,5); CopyMemory((char*)pTGetcursorPos,JmpCode,5); VirtualProtect((char*)pTGetcursorPos,5,lOldProtect,&lOldProtect); return bRet; } 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 //以下是跳转代码 { DWORD lOldProtect=0; HMODULE hDSound = LoadLibrary(_T("user32.dll")); char *pDirectSoundCreate = (char*)GetProcAddress(hDSound,"GetCursorPos"); pTGetcursorPos = (TRUEGetCursorPos)((char*)pDirectSoundCreate); unsigned char JmpCode[5]={0xe9,0x00,0x00,0x00,0x00}; int JmpOffset = (char*)MyGetCursorPos - ((char*)pDirectSoundCreate) -5; CopyMemory(JmpCode+1,&JmpOffset,4); VirtualProtect((char*)pDirectSoundCreate,5,PAGE_READWRITE,&lOldProtect); CopyMemory(&gcode1,pDirectSoundCreate,5); CopyMemory((char*)pDirectSoundCreate,JmpCode,5); VirtualProtect((char*)pDirectSoundCreate,5,lOldProtect,&lOldProtect); FreeLibrary(hDSound); } |
|
沙发#
发布于:2012-02-18 08:22
你想实现什么效果?现在是什么情况、
|
|
|