关于进程的物理内存地址空间问题(实在搜索不到内容,因此新发一贴)

renxu350 2010-04-09 09:00:40
请问 *.EXE 进程的物理内存起始地址是否必然为 0x00400000 ?
还是另外会有其它的值的可能性呢?

另外是不是因为进程的物理内存的提交的不确定,
是不是进程的物理内存结束地址无法获取?
baidu.com,gooogle搜索了半天,没有发现什么线索,
是不是没有近路可走?
是不是必须老老实实的按照PE文件的物理内存装载格式计算出结束地址呢 ?
这样太麻烦太复杂了,
有没有什么可直接操作的 WINDOWS WIN32 API 啊 ?

我的意图和目的就是获取进程的从起始地址->结束地址的全部物理内存的值 ?
...全文
164 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
充电宝111 2010-04-17
  • 打赏
  • 举报
回复
这个0x00400000是虚拟地址,每个进程都一样,因为每个进程都是0到4G的空间
linux下可以去修改标准库(glibc),windows下就不清楚喽
天亮后说晚安 2010-04-17
  • 打赏
  • 举报
回复
0x00400000是虚拟地址,每个进程都一样,因为每个进程都是0到4G的空间


意图和目的就是获取进程的从起始地址->结束地址的全部物理内存的值

window下直接操作物理地址? 好像不太容易吧
大熊猫侯佩 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 renxu350 的回复:]
请问 *.EXE 进程的物理内存起始地址是否必然为 0x00400000 ?
还是另外会有其它的值的可能性呢?
[/Quote]

当然不是必然的,你说的是虚拟地址的起始地址,概念不要混淆。
delphiwcdj 2010-04-09
  • 打赏
  • 举报
回复
通过分析PE文件
大熊猫侯佩 2010-04-09
  • 打赏
  • 举报
回复
看我写的mmguy,see你在汇编区发的另一贴
yuzl32 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 renxu350 的回复:]
我的意图和目的就是获取进程的从起始地址->结束地址的全部物理内存的值 ?
[/Quote]
你可以研究一下ImportREC怎么抓取内存中的进程。
oysoft 2010-04-09
  • 打赏
  • 举报
回复
1.WIN32 内存管理是段页式,对程序可见的都是虚拟地址, *.EXE 进程的地址0x00400000 也是虚拟地址,物理地址不确定,这样就可以保证每个主进程的开始地址都相同
2.主进程的载入内存后的开始地址是可以修改的,这个数值保存在PE文件头中
3.你没有办法直接操作物理地址,都是虚拟地址,所以你的目的没有办法实现

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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