在DWORD中存储远程虚拟地址?

时间:2016-07-12 07:56:11

标签: c++11 pointers 64-bit virtual-address-space dword

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

1 个答案:

答案 0 :(得分:1)

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

  

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

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

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