delphi 请教writeprocessmemory函数怎么用

wsha_cc 2010-03-26 07:41:00

h1:= OpenProcess(PROCESS_ALL_ACCESS, false, pid);

WriteProcessMemory(h1,Ptr($01012F60),PChar(Chr(1000)),4,0);
h1是进程句柄 改内存$01012F60值为1000

运行以后内存值没变化
请问是哪里原因 高手指点下

没学过delphi依葫芦画瓢来的 高手莫笑 呵呵~~



...全文
239 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2010-03-26
  • 打赏
  • 举报
回复
我的程序在delphi6下测试成功的
procedure TForm1.Button1Click(Sender: TObject);
var
h1:THandle;
pid:integer;
m:dword;
const
p:pchar='1111';
begin
pid:=2624; //这个是CMD.exe的PID,我省得用其它的了
h1:= OpenProcess(PROCESS_ALL_ACCESS, false, pid);

WriteProcessMemory(h1,Ptr($40000),p,4,m); //$40000是可写的
end;
运行前,我用winhex看它的内存$40000处全为0,运行后变为4字节的
31 31 31 31
调用成功
我不知你用什么版本,关键
1.OpenProcess不能返回0,你可判一下,如果是0,说明OpenProcess失败
2.要保证你的内存可写(有API但较繁),简单的,先用winhex写一下试试
你的版本可能与我的不同,我的d6最后一个参数只能是变量,否则不能编译

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧