Windows 过程记忆的开始意味着什么

Windows 过程记忆的开始意味着什么,windows,memory,readprocessmemory,Windows,Memory,Readprocessmemory,我正在努力学习更多关于如何读取进程内存的知识。因此,我在WinHex中打开Firefox进程的“整个内存”,看到以下十六进制值从偏移量10000开始 00 00 00 00 00 00 00 00 EC 6B 3F 80 0C 6D 00 01 EE FF EE FF 01 00 00 00 我的问题是 人类有可能在没有进一步了解的情况下解释这一点吗?这些是指针还是值?除了endianness之类的东西外,对于使用不同编译器创建的不同程序,在进程内存方面是否还有什么共同点?为什么它从很多零开始

我正在努力学习更多关于如何读取进程内存的知识。因此,我在WinHex中打开Firefox进程的“整个内存”,看到以下十六进制值从偏移量10000开始

00 00 00 00 00 00 00 00 EC 6B 3F 80 0C 6D 00 01 EE FF EE FF 01 00 00 00
我的问题是
人类有可能在没有进一步了解的情况下解释这一点吗?这些是指针还是值?除了endianness之类的东西外,对于使用不同编译器创建的不同程序,在进程内存方面是否还有什么共同点?为什么它从很多零开始,这不是一种非常奇怪的开始使用空格的方式吗?

显然,“没有进一步的知识”,你不能做任何事情。但我们已经从它是Windows这一事实中了解了很多。对于初学者,我们知道可执行文件有自己的内存视图,在该虚拟视图中,可执行文件加载到其首选的起始地址(如EXE的PE头中所述)

0x00010000的起始地址与MS-DOS兼容(是的,16位操作系统)-前64KB是保留的,永远不是有效地址。高达0x00400000(4MB)的页面是为操作系统保留的,并且通常在操作系统版本之间有所不同


该范围内的通用数据结构是Process Environment块。使用WinDBG工具和Microsoft Symbol Server,您可以确定Process Environment块是否确实位于偏移量0x10000处,以及其内容的含义。

显然,“没有进一步的了解”,您无法做任何事情。但我们已经从它是Windows这一事实中了解了很多。对于初学者,我们知道可执行文件有自己的内存视图,在该虚拟视图中,可执行文件加载到其首选的起始地址(如EXE的PE头中所述)

0x00010000的起始地址与MS-DOS兼容(是的,16位操作系统)-前64KB是保留的,永远不是有效地址。高达0x00400000(4MB)的页面是为操作系统保留的,并且通常在操作系统版本之间有所不同

该范围内的通用数据结构是Process Environment块。使用WinDBG工具和Microsoft符号服务器,您可以确定进程环境块是否确实位于偏移量0x10000处,以及其内容的含义