[Delphi]求教“WriteProcessMemory”函数使用
答案:2 悬赏:0 手机版
解决时间 2021-02-03 16:25
- 提问者网友:树红树绿
- 2021-02-03 04:17
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),可是实际在程序中并没有体现出来 请诸位帮忙,必要时追分 THX
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-02-03 05:23
测试了下这个代码``发现不能成功写入内存 WriteProcessMemory (OpenHandle, Ptr($004BA111), PChar(Chr(235)) ,1, lpNumberOfBytes) ; 的第三个参数应该是指针吧``改为 a:=chr(235); WriteProcessMemory (OpenHandle, Ptr($004BA111), @a ,1, lpNumberOfBytes) ; 好像就可以了 看下是不是这个问题吧 lpNumberOfBytes在这里是传地址``需要变量,用于返回成功写入了几个字节
全部回答
- 1楼网友:神也偏爱
- 2021-02-03 07:03
procedure tform1.formcreate(sender: tobject);
begin
timer1.enabled :=false;
end;
procedure tform1.button1click(sender: tobject);
begin
timer1.enabled :=true;
end;
procedure tform1.timer1timer(sender: tobject);
var
a,b,c:integer;
begin
a:=random(255);
b:=random(255);
c:=random(255);
label1.font.color :=rgb(a,b,c);
end;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯