Thread: VMTHookManager

Results 1 to 5 of 5
  1. #1
    Trollaux's Avatar
    Join Date
    Nov 2011
    Gender
    male
    Posts
    2,074
    Reputation
    137
    Thanks
    792

    Post VMTHookManager

    Copy pasted straight outta oubhack
    Code:
    #pragma once
    #include <Windows.h>
    class CVMTHookManager
    {
    public:
    	CVMTHookManager( )
    	{
    		memset( this, 0, sizeof( CVMTHookManager ) );
    	}
    
    	CVMTHookManager( PDWORD* ppdwClassBase )
    	{
    		bInitialize( ppdwClassBase );
    	}
    
    	~CVMTHookManager( )
    	{
    		UnHook();
    	}
    	bool bInitialize( PDWORD* ppdwClassBase )
    	{
    		m_ppdwClassBase = ppdwClassBase;
    		m_pdwOldVMT = *ppdwClassBase;
    		m_dwVMTSize = dwGetVMTCount( *ppdwClassBase );
    		m_pdwNewVMT = new DWORD[ m_dwVMTSize ];
    		memcpy( m_pdwNewVMT, m_pdwOldVMT, sizeof( DWORD ) * m_dwVMTSize );
    		*ppdwClassBase = m_pdwNewVMT;
    		return true;
    	}
    	bool bInitialize( PDWORD** pppdwClassBase ) // fix for pp
    	{
    		return bInitialize( *pppdwClassBase );
    	}
    
    	void UnHook( )
    	{
    		if ( m_ppdwClassBase )
    		{
    			*m_ppdwClassBase = m_pdwOldVMT;
    		}
    	}
    
    	void ReHook( )
    	{
    		if ( m_ppdwClassBase )
    		{
    			*m_ppdwClassBase = m_pdwNewVMT;
    		}
    	}
    
    	int iGetFuncCount( )
    	{
    		return ( int ) m_dwVMTSize;
    	}
    
    	DWORD dwGetMethodAddress( int Index )
    	{
    		if ( Index >= 0 && Index <= ( int )m_dwVMTSize && m_pdwOldVMT != NULL )
    		{
    			return m_pdwOldVMT[ Index ];
    		}
    		return NULL;
    	}
    
    	PDWORD pdwGetOldVMT( )
    	{
    		return m_pdwOldVMT;
    	}
    
    	DWORD dwHookMethod( DWORD dwNewFunc, unsigned int iIndex )
    	{
    		if ( m_pdwNewVMT && m_pdwOldVMT && iIndex <= m_dwVMTSize && iIndex >= 0 )
    		{
    			m_pdwNewVMT[ iIndex ] = dwNewFunc;
    			return m_pdwOldVMT[ iIndex ];
    		}
    
    		return NULL;
    	}
    
    private:
    	DWORD dwGetVMTCount( PDWORD pdwVMT )
    	{
    		DWORD dwIndex = 0;
    
    		for ( dwIndex = 0; pdwVMT[ dwIndex ]; dwIndex++ )
    		{
    			if ( IsBadCodePtr( ( FARPROC ) pdwVMT[ dwIndex ] ) )
    			{
    				break;
    			}
    		}
    		return dwIndex;
    	}
    	PDWORD*	m_ppdwClassBase;
    	PDWORD	m_pdwNewVMT, m_pdwOldVMT;
    	DWORD	m_dwVMTSize;
    };
    d e a d b o y s
    Quote Originally Posted by Dave84311 View Post
    What do you call a troll with shitty jokes?
    Trollaux
    Quote Originally Posted by Kyeran View Post
    Foot job with lots of oil.
    Quote Originally Posted by Kyeran View Post
    If she's 12, I'm 12.

  2. #2
    MeepDarknessMeep's Avatar
    Join Date
    Aug 2012
    Gender
    female
    Posts
    725
    Reputation
    22
    Thanks
    922
    [Never Before Seen] [Very] [Amazing] [Best Codes]

  3. #3
    D3M0L1T10N's Avatar
    Join Date
    May 2012
    Gender
    male
    Posts
    1,364
    Reputation
    19
    Thanks
    656
    cool vmt hooks dude

  4. #4
    Trollaux's Avatar
    Join Date
    Nov 2011
    Gender
    male
    Posts
    2,074
    Reputation
    137
    Thanks
    792
    Quote Originally Posted by D3M0L1T10N View Post
    cool vmt hooks dude
    thanks dude +rep
    d e a d b o y s
    Quote Originally Posted by Dave84311 View Post
    What do you call a troll with shitty jokes?
    Trollaux
    Quote Originally Posted by Kyeran View Post
    Foot job with lots of oil.
    Quote Originally Posted by Kyeran View Post
    If she's 12, I'm 12.

  5. #5
    ehex's Avatar
    Join Date
    Dec 2011
    Gender
    male
    Posts
    150
    Reputation
    22
    Thanks
    555
    shit

    /lel