求教关于“WriteProcessMemory”函数使用的操作方法!

procedure TForm1.Button1Click(Sender: TObject); var Form1: TForm1; handle:HWND; pid:dword; OpenHandle:THandle; lpNumberOfBytes:dword; begin handle := FindWindow('qtClass', 'Qt'); if handle= 0 then messagebox(handle,'请先打开QT','error',mb_ok); GetWindowThreadProcessId (handle, @pid); OpenHandle:=OpenProcess(PROCESS_ALL_ACCESS, false, pid); WriteProcessMemory (OpenHandle, Ptr($004BA111), PChar(Chr(235)) ,1, lpNumberOfBytes) ; CloseHandle (OpenHandle); end; 这段代码哪里有错误啊? 我想将程序内存地址004BA111值改为235 另外,为什么handle:HWND必须在过程中声明,设成全局变量会提示找不到 请给出WriteProcessMemory的具体使用,这个lpNumberOfBytes不声明dword变量,直接写成0怎么不行? 代码调试时,的确修改了程序内存(HIPS软件提示access memory),可是实际在程序中并没有体现出来 请诸位帮忙

呼如林
浏览 520回答 1
1回答

12345678_0001

测试了下这个代码``发现不能成功写入内存 WriteProcessMemory (OpenHandle, Ptr($004BA111), PChar(Chr(235)) ,1, lpNumberOfBytes) ; 的第三个参数应该是指针吧``改为 a:=chr(235); WriteProcessMemory (OpenHandle, Ptr($004BA111), @a ,1, lpNumberOfBytes) ; 好像就可以了 看下是不是这个问题吧 lpNumberOfBytes在这里是传地址``需要变量,用于返回成功写入了几个字节
打开App,查看更多内容
随时随地看视频慕课网APP