0

我正在尝试了解有关如何读取进程内存的更多信息。所以我在 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

我的问题是人类是否有可能在没有进一步知识的情况下解释这一点?这些是指针还是值?除了字节顺序之外,对于使用不同编译器创建的不同程序,关于进程内存,有什么是常见的吗?为什么它以很多零开头,这不是开始使用空间的一种非常奇怪的方式吗?

4

1 回答 1

3

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

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

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

于 2011-04-29T13:26:08.927 回答