如何从当前内存中找到 gsharedinfo?

逆向工程 调试 C 内核模式
2021-06-23 08:15:21

您将如何扫描本地内存上下文中映射的所有部分以查找gsharedinfo

gsharedinfo不是从user32.dllWindows server 2008 上导出的!!!

如果你能帮助我,我将不胜感激。

1个回答

有关通过扫描查找的方法,请参阅https://github.com/Meatballs1/cve-2013-1300/blob/master/cve-2013-1300/exploit.c#L16gSharedInfoUserRegisterWowHandlers

PSHAREDINFO LocateSharedInfo()
{
    ULONG i;
    ...
    ULONG_PTR pfnUserRegisterWowHandlers = (ULONG_PTR)GetProcAddress(GetModuleHandle("USER32.dll"), "UserRegisterWowHandlers");

    ...

    for (i = pfnUserRegisterWowHandlers; 
         i <= pfnUserRegisterWowHandlers +0x250; 
         ++i )
    {
        if (0x40c7 == *(WORD*)i && 
            0xb8 == *(BYTE*)(i + 7))
        {
            return (PSHAREDINFO)(*(DWORD*)(i + 8));
        }
    }
}