我需要在dll中获取特定函数的RVA,然后将该RVA添加到dll的基本加载地址,以在远程进程内存中找到该函数。但是,我需要将缓冲区中的此内存地址传递给将在远程进程中创建的线程。所以我想知道我是否应该将其作为地址的DWORD表示传递。我在64位Windows上,所以如果它应该是DWORD_PTR,DWORD64等?或者我仍然可以将它作为一个对我来说没有意义的指针传递。
答案 0 :(得分:1)
让我们做一个简短的调查。我们将参考spec。查看可选标题中的SizeOfImage
字段:
图像的大小(以字节为单位),包括所有标题;必须是倍数 部分对齐。
实际上这是映射图像的大小,对于PE32和PE32 +格式都是4字节整数。因此,PE内的所有相对地址始终适合32位整数。 PE结构中的大多数RVA字段都被声明为DWORD
,IMO是一个很好的提示。
最重要的是:您可以将RVA存储在DWORD
的32位或64位系统上。