PVOID* GetVtpl(PVOID lpThis, int nIndex)
{
  return *(PVOID**)lpThis + nIndex;
}

PVOID HookVtpl(PVOID* lpAddr, PVOID lpNewAddr)
{
  DWORD dwOldProtect;
  PVOID lpResult = NULL;
  
  if ( VirtualProtect(lpAddr, sizeof (PVOID), PAGE_READWRITE, &dwOldProtect) )
  {
    lpResult = *lpAddr;
    *lpAddr = lpNewAddr;
    
    VirtualProtect(lpAddr, sizeof (PVOID), dwOldProtect, &dwOldProtect);
  }
  
  return lpResult;
}

void UnhookVtpl(PVOID* lpAddr, PVOID lpOldAddr)
{
  HookVtpl(lpAddr, lpOldAddr);
}

相关文章:

  • 2021-09-21
  • 2021-04-07
  • 2022-12-23
  • 2022-12-23
  • 2021-05-03
猜你喜欢
  • 2022-12-23
  • 2022-01-16
  • 2022-12-23
  • 2021-04-29
  • 2021-11-01
  • 2021-06-24
  • 2022-12-23
相关资源
相似解决方案