VirtualBox

Changeset 52213 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jul 28, 2014 5:52:58 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
95276
Message:

SUP,IPRT: Implemented forwarder support in RTLdr and cleaned up some the ordinal mess. Resolved imports when doing the process verification/purification runs other than SUPHARDNTVPKIND_CHILD_PURIFICATION. This is necessary since 32-bit windows combine .text with .rdata, and we don't want to overwrite the import table after it has been snapped. Include read-only sections in the verfication runs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/PDMLdr.cpp

    r49039 r52213  
    406406        {
    407407            /* Search for the symbol. */
    408             int rc = RTLdrGetSymbolEx(pCur->hLdrMod, pCur->pvBits, pCur->ImageBase, pszSymbol, pValue);
     408            int rc = RTLdrGetSymbolEx(pCur->hLdrMod, pCur->pvBits, pCur->ImageBase, UINT32_MAX, pszSymbol, pValue);
    409409            if (RT_SUCCESS(rc))
    410410            {
     
    540540                             */
    541541                            RTLDRADDR uValue;
    542                             rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase,
     542                            rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, UINT32_MAX,
    543543                                                  "g_VTGObjHeader", &uValue);
    544544                            if (RT_SUCCESS(rc))
     
    740740        {
    741741            RTUINTPTR Value = 0;
    742             int rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, pszSymbol, &Value);
     742            int rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, UINT32_MAX, pszSymbol, &Value);
    743743            RTCritSectLeave(&pUVM->pdm.s.ListCritSect);
    744744            if (RT_SUCCESS(rc))
     
    910910        {
    911911            RTUINTPTR Value;
    912             int rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, pszSymbol, &Value);
     912            int rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, UINT32_MAX, pszSymbol, &Value);
    913913            RTCritSectLeave(&pUVM->pdm.s.ListCritSect);
    914914            if (RT_SUCCESS(rc))
     
    16731673                    if (!fNullRun)
    16741674                    {
    1675                         rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, szSymbol, &Value);
     1675                        rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, UINT32_MAX, szSymbol, &Value);
    16761676                        AssertMsgRCBreak(rc, ("Couldn't find symbol '%s' in module '%s'\n", szSymbol, pModule->szName));
    16771677                    }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette