2011-04-29 54 views
0

我想了解如何读取进程内存的更多信息。所以,我打开Firefox的过程的“全内存”,在WinHex中,看到下面的十六进制值开始偏移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这样的东西之外,对于使用不同编译器创建的不同程序来说,这些东西对于进程内存来说很常见?它为什么从零开始,是不是开始使用空间的非常奇怪的方式?

回答

3

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

从0x00010000开始与MS-DOS兼容(是的,即16位操作系统) - 第一个64KB保留,永远不会有效地址。最大为0x00400000(4MB)的页面是为操作系统保留的,一般在操作系统版本上有所不同。

该范围内的常见数据结构是过程环境块。使用WinDBG工具和Microsoft Symbol Server,可以确定Process Envirionment Block是否确实位于偏移量0x10000处,以及它的内容是什么。