首页
社区
课程
招聘
[旧帖] [求助]PE 获取资源目录偏移量 0.00雪花
发表于: 2008-1-22 17:53 2527

[旧帖] [求助]PE 获取资源目录偏移量 0.00雪花

2008-1-22 17:53
2527
我想获取 PIMAGE_RESOURCE_DIRECTORY   根目录 。

网上有这段代码:
LPVOID WINAPI ImageDirectoryOffset(LPVOID lpFile, DWORD dwIMAGE_DIRECTORY)
{
     PIMAGE_OPTIONAL_HEADER poh;
     PIMAGE_SECTION_HEADER psh;
     int nSections = NumOfSections(lpFile);
     int i = 0;
     LPVOID VAImageDir;
     /* 必须为0到(NumberOfRvaAndSizes-1)之间 */
     if (dwIMAGE_DIRECTORY >= poh->NumberOfRvaAndSizes)
           return NULL;
     /* 获得可选头部和段头部的偏移量 */
     poh = (PIMAGE_OPTIONAL_HEADER)OPTHDROFFSET(lpFile);
     psh = (PIMAGE_SECTION_HEADER)SECHDROFFSET(lpFile);
     /* 定位映像目录的相对虚拟地址 */
     VAImageDir = (LPVOID)poh->DataDirectory[dwIMAGE_DIRECTORY].VirtualAddress;
     /* 定位包含映像目录的段 */
     while (i++ < nSections)
     {
          if (psh->VirtualAddress <= (DWORD)VAImageDir &&
              psh->VirtualAddress +
              psh->SizeOfRawData > (DWORD)VAImageDir
          )
          break;

          psh++;
    }
    if (i > nSections)
        return NULL;
      /* 返回映像导入目录的偏移量 */
     return (LPVOID)(((int)lpFile +
       (int)VAImageDir. psh->VirtualAddress) +
       (int)psh->PointerToRawData);
}

其中返回值:return (LPVOID)(((int)lpFile +
    (int)VAImageDir. psh->VirtualAddress) +
    (int)psh->PointerToRawData);

(int)VAImageDir. psh->VirtualAddress)
中的那各点“.”号是什么意思啊?

如何才能正确取到偏移量?即
PIMAGE_RESOURCE_DIRECTORY prdRoot = (PIMAGE_RESOURCE_DIRECTORY)ImageDirectoryOffset;

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回