BOOL InstallNewDriver(He4HookDriverHide* pNtDriverControl) { if (pNtDriverControl == NULL) return FALSE; DWORD dwVersionOld = 0; DWORD dwBaseOld = 0; GetVersion(&dwVersionOld); GetLocalBase(&dwBaseOld); FILEINFOSET* fis = NULL; BOOL bGetSaveList = FALSE; DWORD dwSizeListByBytes = pNtDriverControl->GetSaveListSizeByBytes(); if (dwSizeListByBytes) { fis = (FILEINFOSET*) new char[dwSizeListByBytes+sizeof(DWORD)]; if (fis) { fis->dwSize = dwSizeListByBytes+sizeof(DWORD); bGetSaveList = pNtDriverControl->GetSaveList(fis); } } //if (pNtDriverControl->Install() == FALSE) if (pNtDriverControl->LoadAndCallImage() == FALSE) { if (fis != NULL) delete[] (char*)fis; return FALSE; } DWORD dwVersionNew = 0; DWORD dwBaseNew = 0; GetVersion(&dwVersionNew); GetLocalBase(&dwBaseNew); if (dwVersionNew == dwVersionOld && dwBaseNew == dwBaseOld) { if (fis != NULL) delete[] (char*)fis; return FALSE; } if (bGetSaveList == TRUE) pNtDriverControl->AddToSaveList(fis); if (fis != NULL) delete[] (char*)fis; return TRUE; }
void ShowDeviceCurrentVersion(void) { DWORD dwVersion = 0; DWORD dwBase = 0; GetVersion(&dwVersion); GetLocalBase(&dwBase); if (dwVersion != 0 && dwBase != 0) printf("He4HooInv device installed - \n Version: %08X\n Base: %08X\n", dwVersion, dwBase); else printf("He4HooInv device not installed\n"); }
bool CAI_LocalIdSpace::AddSymbol( const char *pszSymbol, int localId, const char *pszDebugSymbolType, const char *pszDebugOwner ) { AssertMsg( AI_IdIsLocal( localId ), ("Global symbol ID passed to CAI_LocalIdSpace::AddSymbol()") ); if ( !m_pGlobalNamespace ) { DevMsg( "ERROR: Adding symbol to uninitialized table %s\n", pszDebugOwner ); return false; } if ( !IsLocalBaseSet() && !SetLocalBase( localId ) ) { DevMsg( "ERROR: Bad %s LOCALID for %s\n", pszDebugSymbolType, pszDebugOwner ); return false; } else if (localId < GetLocalBase() ) { DevMsg("ERROR: %s First added %s must be first LOCALID!\n", pszDebugSymbolType, pszDebugOwner); return false; } AssertMsg3( LocalToGlobal( localId ) == -1 || !m_pGlobalNamespace->IdToSymbol( LocalToGlobal( localId ) ) , "Duplicate symbol ID passed to CAI_LocalIdSpace::AddSymbol(): %s (%d), had %s", pszSymbol, localId, m_pGlobalNamespace->IdToSymbol( LocalToGlobal( localId ) ) ); AssertMsg( m_pGlobalNamespace->SymbolToId( pszSymbol ) == -1, "Duplicate symbol passed to CAI_LocalIdSpace::AddSymbol()" ); if ( m_localTop != -1 ) { if ( localId > m_localTop ) { m_localTop = localId; m_globalTop = ( m_localTop - m_localBase ) + m_globalBase; } } else { m_localTop = m_localBase; m_globalTop = m_globalBase; } m_pGlobalNamespace->AddSymbol( pszSymbol, LocalToGlobal( localId ) ); return true; }