进程内存的开始是什么意思



我想了解更多关于如何读取进程内存。所以我在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
我的问题是人类有没有可能在没有进一步知识的情况下解释这一点?这些是指针还是值?除了像端序这样的东西之外,对于使用不同编译器创建的不同程序来说,有什么是共同的吗?为什么它以很多零开始,这不是一种很奇怪的开始使用空间的方式吗?

显然,没有进一步的知识,你什么也做不了。但我们已经从Windows这个事实中知道了很多。对于初学者来说,我们知道可执行文件有它自己的内存视图,在这个虚拟视图中,可执行文件被加载到它的首选起始地址(如EXE的PE头中所述)。

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

该范围内的一个常见数据结构是进程环境块。使用WinDBG工具和Microsoft Symbol Server,您可以确定进程环境块是否确实位于偏移量0x10000处,以及其内容的含义。

相关内容

最新更新