一个Hook API的小程序,在用WriteProcessMemory把Hook代码写到远程进程的时候出错,GetLastError返回代码87(参数错误),求解决方法!
WriteProcessMemory(hTargetProcess, (LPVOID)dwFuncAddr, (LPCVOID)HookSend, 8192, NULL); 《=====就是这句错误
HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwHookProcId);《=====打开进程
dwFuncAddr = (DWORD)VirtualAllocEx(hTargetProcess, NULL, 8192,
MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE);
《===========申请远程线程内存ps:这个程序参考另一个程序写的,那个程序运行在命令行模式下,正常运行,我想加个界面就不行了
WriteProcessMemory(hTargetProcess, (LPVOID)dwFuncAddr, (LPCVOID)HookSend, 8192, NULL); 《=====就是这句错误
HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwHookProcId);《=====打开进程
dwFuncAddr = (DWORD)VirtualAllocEx(hTargetProcess, NULL, 8192,
MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE);
《===========申请远程线程内存ps:这个程序参考另一个程序写的,那个程序运行在命令行模式下,正常运行,我想加个界面就不行了
87 The parameter is incorrect. 调试查看你的参数是否传递正确。另外WriteProcessMemory的那个进程要有PROCESS_VM_WRITE、PROCESS_VM_OPERATION权限
BOOL WriteProcessMemory(
HANDLE hProcess,
LPVOID lpBaseAddress,
LPVOID lpBuffer,
DWORD nSize,
LPDWORD lpNumberOfBytesWritten
);
我是用过LPVOID的,但是不行,才改LPCVOID的,以为我看到一个能调试通的程序用LPCVOID没问题。而OpenProcess我是设置了all access 的权限的。
不会弄附件,只好上传到纳米盘,麻烦帮看看!
hookSocket.rar
hookWs32.rar