1

我需要在 dll 中获取特定函数的 RVA,然后将该 RVA 添加到 dll 的基本加载地址以在远程进程内存中查找该函数。但是,我需要将缓冲区中的这个内存地址传递给将在远程进程中创建的线程。所以我想知道是否应该将其作为地址的 DWORD 表示形式传递。我在 64 位 Windows 上,所以如果是这样,它应该是 DWORD_PTR、DWORD64 等吗?或者我仍然可以将它作为一个指针传递给我,这对我来说真的没有意义。

4

1 回答 1

1

让我们做一个简短的调查。我们将参考规范。查看SizeOfImage可选标题中的字段:

图像的大小(以字节为单位),包括所有标头;必须是截面对齐的倍数。

实际上这是映射图像的大小,对于 PE32 和 PE32+ 格式,它都是 4 字节整数。因此,PE 内的所有相对地址总是适合 32 位整数。此外,PE 结构中的大多数 RVA 字段都被声明为DWORD,IMO 是一个很好的提示。

最重要的是:您可以将 RVA 存储DWORD在 32 位或 64 位系统上。

于 2016-07-12T08:44:41.673 回答