当前位置: 代码迷 >> VC/MFC >> PE构造之获取重定位表
  详细解决方案

PE构造之获取重定位表

热度:123   发布时间:2016-05-02 03:30:57.0
PE结构之获取重定位表
如何获取重定位表数据
像lordpe一样 总是找不到里面的数据。求代码。!

------解决思路----------------------
百度搜 PE文件解析工具源代码。一大堆。
相关书籍也说得很详细了。
------解决思路----------------------
参考:
"PEmodifier.rar "
http://download.csdn.net/detail/schlafenhamster/2476867
"本程序用于显示PE文件格式,及资源。难点在于对话框的创建和显示,基本没有不能创建的对话框。"
------解决思路----------------------

//      Relocation
        IMAGE_BASE_RELOCATION *     pReloca;
       WORD *                     pOffsetDat;
       DWORD                      dwTolOffset;
       DWORD                      dwBlockOffset;
       WORD                      wOneDat;
       WORD                      wOneType;
       DWORD                      dwOneOffset;
 
        m_PeInfo.RelocOffsetList.clear();
        dwOffset = m_PeInfo.pNtHead->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress;
        if(dwOffset == 0)
           goto RelocationEnd;
 
        pReloca = (IMAGE_BASE_RELOCATION *)(pImgData + dwOffset);
 
        for(;;)
       {
           if(pReloca->VirtualAddress == 0 
------解决思路----------------------

               pReloca->SizeOfBlock == 0)
               break;
 
           dwBlockOffset = pReloca->VirtualAddress;
           nCount = (pReloca->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION))/sizeof(WORD);
           pOffsetDat = (WORD *)(pReloca + 1);
           for(i=0; i<nCount; i++)
           {
               wOneDat = *pOffsetDat;
               wOneType = wOneDat >> 12;
               dwOneOffset = wOneDat & 0x0FFF;
 
               if(wOneType == 0x03)
               {
                   dwTolOffset = dwBlockOffset + dwOneOffset;
                   NLog::DbgLog("Relocation: %08X", dwTolOffset);
                   m_PeInfo.RelocOffsetList.push_back(dwTolOffset);
               }
               else
               {
                   NLog::DbgLog("Relocation Unknow Type!");
               }
           }
           pReloca = (IMAGE_BASE_RELOCATION *)((BYTE *)pReloca + pReloca->SizeOfBlock);
       }
  相关解决方案