首页
社区
课程
招聘
[求助]请教各位大大 关于DELPHI 如何读出物理内存指定的值。 :3:
发表于: 2011-7-31 20:44 4838

[求助]请教各位大大 关于DELPHI 如何读出物理内存指定的值。 :3:

2011-7-31 20:44
4838

比如我用WINHEX找到物理内存的 $789340 字串为 XXX
我怎么写代码给读出来。 求教。 网上搜索了大规模关键字均无果。

搜索出的资料
http://blog.sina.com.cn/s/blog_626a27090100eto2.html

function ReadOrWritePhyMem 这里该怎么用请高手支招。

能给给个DEMO 更好,感激不尽! 泪流满面呐。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
var
  pBuffer:Pointer;
  dwSize:DWORD;
begin
  dwSize:=100;//想要读取的长度
  pBuffer:=VirtualAlloc(nil,dwSize,MEM_COMMIT,PAGE_READWRITE);
  if pBuffer=nil then exit;
  ReadOrWritePhyMem(TRUE,$789340,dwSize,pBuffer);
  VirtualFree(pBuffer,dwSize,MEM_DECOMMIT);
end;
2011-8-3 18:11
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
朋友 首先感谢你 其次我想读出内存到MEMO
我的写法是 memo1.Text:=PChar(string(pBuffer)); 但是这样子的方法读不出内存字串。
还请赐教 谢谢了!
2011-8-3 23:08
0
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
刚开始没有仔细看他的代码,后来复制了慢慢调了一下,现在可以正确读取了。
var
  Addr:integer;
  buf:array [0..4096] of byte;
begin
  Addr:=strtoint('$'+Edit1.Text);
  buf[4096]:=0;
  Memo1.Text:='';
  if ReadOrWritePhyMem(True,Addr,4096,@buf) then
      Memo1.Text:=PChar(@buf[Addr mod 4096]);
end;
还有,要在他的代码里搜索Inc(DWORD(VirtualAddress),Access mod $1000);这一行,把他删了。
2011-8-4 09:33
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢了 兄弟!
2011-8-4 18:50
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
提示出错

缓中区长度不足或内存跨段
2011-8-4 19:21
0
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
还是QQ和你说吧,晕了。。。。
2011-8-4 20:14
0
游客
登录 | 注册 方可回帖
返回
//