我正在尝试了解有关如何读取进程内存的更多信息。所以我在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
我的问题是 没有进一步的知识,人类是否有可能解释这一点?这些指针或值是?有什么东西,对于不同的编译器创建的不同程序,除了字节序之外的进程内存有什么共同点吗?为什么它从很多零开始,这不是开始使用空间的一种非常奇怪的方式吗?
答案 0 :(得分:3)
显然,没有进一步的了解,你就无法做任何事情。但是我们已经从它是Windows的事实中了解了很多。对于初学者,我们知道可执行文件有自己的内存视图,在该虚拟视图中,可执行文件以其首选起始地址加载(如EXE的PE头中所述)。
0x00010000的开头是MS-DOS的兼容性(是的,那个16位操作系统) - 第一个64KB是保留的,永远不是有效的地址。最高为0x00400000(4MB)的页面是为操作系统保留的,并且通常在操作系统版本之间有所不同。
该范围内的常见数据结构是Process Environment Block。使用WinDBG工具和Microsoft Symbol Server,您可以确定Process Envirionment Block是否确实位于偏移0x10000,以及它的内容是什么意思。