- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《如何访问一个进程的内存空间
访问一个进程的内存空间
引言
每个进程都有各自互不干涉的进程地址空间。在WIN32中,每个应用程序都可“看见”4GB的线性地址空间,其中最开始的4MB和最后的2GB由操作系统保留,剩下不足2GB的空间用于应用程序私有空间。具体分配如下:0xFFFFFFFF-0xC0000000的1GB用于VxD、存储器管理和文件系统;
0xBFFFFFFF-01GB用于共享的WIN32 DLL、存储器映射文件和共享存储区;
0x7FFFFFFF-0每个进程的WIN32专用地址;
0x003FFFFF-0MS-DOS 和 WIN16应用程序;
0x00000FFF-0防止使用空指针的4,096字节。
以上都是指逻辑地址,也就是虚拟内存。
在WIN32中每页大小为4,096字节。通过使用硬件地址映射和页表,WIN32可使虚拟内存即有好的性能而且还提供保护。操作系统为每个进程提供独立的从逻辑地址到物理地址的映射,使每个进程的地址空间对另一个进程完全不可见。WIN32中也提供了一些访问进程内存空间的函数,但使用时要谨慎,一不小心就有可能破坏被访问的进程。
2.提出问题
2.1如何了解windows环境下内存的使用情况。
2.2怎么使用win32下API函数编写系统程序。
3.解决方案
ReadProcessMemory 读另一个进程的内存,原形如下:
BOOL ReadProcessMemory(??? HANDLE hProcess,???????? // 被读取进程的句柄;
LPCVOID lpBaseAddress,????? // 读的起始地址;
LPVOID lpBuffer,???????? // 存放读取数据缓冲区;
DWORD nSize,???????? // 一次读取的字节数;
? LPDWORD lpNumberOfBytesRead // 实际读取的字节数;? );
hProcess 进程句柄可由OpenProcess 函数得到,原形如下:? HANDLE OpenProcess(??? DWORD dwDesiredAccess, // 访问标志;??? BOOL bInheritHandle,?? // 继承标志;??? DWORD dwProcessId????? // 进程ID;? );用完后使用 CloseHandle 关闭打开的句柄。读另一个进程的内存 dwDesiredAccess 须指定为 PROCESS_VM_READ ,写另一个进程的内存 dwDesiredAccess 须指定为 PROCESS_VM_WRITE ,继承标志无所谓,进程ID可由 Process32First 和 Process32Next 得到,这两个函数可以枚举出所有开启的进程,这样进程的信息也就得到了。Process32First 和 Process32Next是由 TLHelp32 单元提供的,需在 uses 里加上TLHelp32。ToolsHelp32 封装了一些访问堆、线程、进程等的函数,只适用于Win9x,原形如下:? BOOL WINAPI Process32First(??? HANDLE hSnapshot????? // 由 CreateToolhelp32Snapshot 返回的系统快照句柄;??? LPPROCESSENTRY32 lppe // 指向一个 PROCESSENTRY32 结构;? );? BOOL WINAPI Process32Next(??? HANDLE hSnapshot????? // 由 CreateToolhelp32Snapshot 返回的系统快照句柄;??? LPPROCESSENTRY32 lppe // 指向一个 PROCESSENTRY32 结构;? );hSnapshot 由 CreateToolhelp32Snapshot 返回的系统快照句柄;CreateToolhelp32Snapshot 原形如下:? HANDLE WINAPI CreateToolhelp32Snapshot(??? DWORD dwFlags,????? // 快照标志; ??? DWORD th32ProcessID // 进程ID;? );现在需要的是进程的信息,所以将 dwFlags 指定为 TH32CS_SNAPPROCESS, th32ProcessID 忽略;PROCESSENTRY32 结构如下:? typedef struct tagPROCESSENTRY32 { ??? DWORD dwSize;???????????? // 结构大小;
您可能关注的文档
最近下载
- 2024年湖南省高中学业水平合格性考试数学试卷真题(含答案详解).pdf VIP
- 10.农庄小能手(搭架)(教学设计)-三年级下册劳动教育”小农庄“(校本课程).docx VIP
- 农庄小能手(积肥)(教学设计)-四年级下册劳动教育“小农庄”(校本课程).docx VIP
- 2018年人教版一年级下册《道德与法治》全册教案及其教学计划.doc VIP
- 三人合作经营合同协议书.docx VIP
- 世界上最棒的礼物幼儿园儿童故事绘本PPT课件.pptx VIP
- 世界上最棒的礼物幼儿园儿童故事绘本PPT课件.pptx VIP
- 幼儿园故事《世界上最棒的礼物》绘本故事PPT课件.pptx VIP
- 幼儿园故事《世界上最棒的礼物》绘本故事PPT课件.pptx VIP
- 中国石化品牌管理手册解读(适用业务简单的单位).pptx
文档评论(0)