怎样有效率的遍历其他进程空间?

progray 2003-04-05 03:31:27
我粗浅的知道点,任何进程都有4G的内存空间,如果要遍历某个进程的内存空间,肯定不能从头搜到尾吧?那具体该如何做呢?最好代码示范,多谢。另外,98和2K下有没有什么区别呢(我是指在遍历的时候)?
...全文
25 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
housisong 2003-07-17
  • 打赏
  • 举报
回复
遍历其他进程空间 清参看:
http://new.playicq.com/dispdocnew.php?id=6762
游戏修改器MemEdit -- 作者:侯思松
开发语言: Delphi6
简介: 一个快速的游戏修改工具的Delphi6源代码
和金山游侠之类的很接近,速度较快,但部分功能还需要完善


fangyan 2003-04-06
  • 打赏
  • 举报
回复
最快的方法就是直接读取物理内存
housisong 2003-04-05
  • 打赏
  • 举报
回复
(我在网吧上网,不能提供具体的函数名称和例子,忘原谅;明天如果有机会我会把实现的源代码给出来)
Windows提供了查询其它进程内存分布信息的函数,用它可以过滤掉大部分没有提交的内存空间;
Windows也提供了读取和写入其它进程内存的函数(只要你能以读写方式打开进程的句柄);

要提高性能: 如果你要连续处理大片的内存,可以直接采用Windows提供的API函数,自己做缓冲处理
这样的效率也很高
如果你要处理大量内存,但这些内存区不连续(及大量的随机存取),可以考虑写一个HOOK钩子DLL,让注入目标进程的DLL中的函数代码来执行这种随机存取(呵呵,这可能是最快的方法了,因为读写的是自己进程的数据,但和主程序的通信可能稍微麻烦一点,可以采用一块共享内存来交换信息)

Eastunfail 2003-04-05
  • 打赏
  • 举报
回复
但是私有进程空间只有2GB。一般数据都是保存在2GB的私有进程空间的。

但是DLL的代码区是保存在共享2GB中,一些内存映射文件等等或其他的一些系统资源也保存在2GB共享空间中。所有后面的2GB没有必要去遍历
FrameSniper 2003-04-05
  • 打赏
  • 举报
回复
严重关注!

1,183

社区成员

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

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