EndScene Engine Hook

Posts 1–13 of 13 · Page 1 of 1
EndScene Engine Hook
WarRock EndScene Engine Hook

I want to share this Engine Hook, Works fine

Address:
Code:
#define EndSceneEngine 0x006D40F6
DWORD retEndSceneEngine = ( EndSceneEngine + 0x8 );
Midfunction:
Code:
__declspec( naked ) HRESULT WINAPI EndSceneMidfunction( )
{
    static LPDIRECT3DDEVICE9 pDevice;

    __asm
    {
        MOV ECX, DWORD PTR DS:[EAX]
        MOV EDX, DWORD PTR DS:[ECX + 0xA8]
        MOV DWORD PTR DS:[pDevice], EAX
        PUSHAD
    }

   //Stuffs

    __asm
    {
        POPAD
        JMP retEndSceneEngine
    }
}
Proof:


not working? You're probably using it wrong...

Credits:
@AeroMan
@WE11ington
Quote Originally Posted by Jhem View Post
WarRock EndScene Engine Hook

I want to share this Engine Hook, Works fine

Address:
Code:
#define EndSceneEngine 0x006D40F6
DWORD retEndSceneEngine = ( EndSceneEngine + 0x8 );
Midfunction:
Code:
__declspec( naked ) HRESULT WINAPI EndSceneMidfunction( )
{
    static LPDIRECT3DDEVICE9 pDevice;

    __asm
    {
        MOV ECX, DWORD PTR DS:[EAX]
        MOV EDX, DWORD PTR DS:[ECX + 0xA8]
        MOV DWORD PTR DS:[pDevice], EAX
        PUSHAD
    }

   //Stuffs

    __asm
    {
        POPAD
        JMP retEndSceneEngine
    }
}
Proof:


not working? You're probably using it wrong...

Credits:
@Alex_Agnew
@WE11ington
Nice share bro thank's ^^
You don't need to Quote it. to long.
Goodjob
Great post!
Quote Originally Posted by AeroMan View Post
Goodjob
Great post!
How are you Sir ? ^^ its been a long time...
@Jhem nyahaha, lol, good job brother, and the others go and create your own d3dmenu now, nyahaha, lol, do you already have the addy of Present Hook?
Quote Originally Posted by pusongbato View Post
@Jhem nyahaha, lol, good job brother, and the others go and create your own d3dmenu now, nyahaha, lol, do you already have the addy of Present Hook?
i think he have and he did
Quote Originally Posted by WhiteHat PH View Post


i think he have and he did
I hope it will detected soon, nyahaha, lol
Quote Originally Posted by pusongbato View Post
I hope it will detected soon, nyahaha, lol
I hope too,.
Quote Originally Posted by Jhem View Post


I hope too,.
if gameguard can scan the address, nyahaha, lol, how about no address to scan, how they can detect it, nyahaha, lol, if I be the gm of WarRock PH I will switch gameguard to punkbuster, nyahaha, lol
@Jhem

don't need use the jmp for the return
look:

Code:
__declspec( naked ) HRESULT WINAPI EndSceneMidfunction( VOID )
{
	static LPDIRECT3DDEVICE9 pDevice;

	__asm
	{
		MOV ECX, DWORD PTR DS:[EAX]
		MOV EDX, DWORD PTR DS:[ECX + 0xA8]
		MOV DWORD PTR DS:[pDevice], EAX
		PUSH EAX
		CALL EDX
		PUSHAD
	}



	__asm
	{
		POPAD
		RETN
	}
}

DWORD FindPattern( DWORD dwStart, DWORD dwLen, BYTE* pszPatt, CHAR pszMask[] )
{
	// Credits: Gellin.

	UINT i = NULL;
	INT iLen = strlen(pszMask) - 1;

	for( DWORD dwRet = dwStart; dwRet < dwStart + dwLen; dwRet++ )
	{
		if( *(BYTE*)dwRet == pszPatt[i] || pszMask[i] == '?' )
		{
			if( pszMask[i+1] == '\0' )
				return( dwRet - iLen );
			i++;
		} 
		else 
			i = NULL;
	}
	return NULL;
}

void *DetourCreate( BYTE *src, const BYTE *dst, const int len )
{
	BYTE *jmp = (BYTE*)malloc( len+5 );
	DWORD dwBack;
	VirtualProtect( src, len, PAGE_EXECUTE_READWRITE, &dwBack );
	memcpy( jmp, src, len );	
	jmp += len;
	jmp[0] = 0xE9;
	*(DWORD*)( jmp+1 ) = (DWORD)( src+len - jmp ) - 5;
	src[0] = 0xE9;
	*(DWORD*)( src+1 ) = (DWORD)( dst - src ) - 5;
	VirtualProtect( src, len, dwBack, &dwBack );
	FlushInstructionCache( GetCurrentProcess(), src, 0x10 );

	return( jmp-len );
}

DWORD WINAPI D3DHook( PVOID )
{

	DWORD EndScene;

	do
	{
		DWORD WarRock = (DWORD)GetModuleHandle( "WarRock.exe" );

		if( WarRock != NULL )
			EndScene = FindPattern( WarRock, 0x6CD000, (PBYTE)"\x8B\x08\x8B\x91\x00\x00\x00\x00\x50\xFF\xD2\xC3\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x8B\x80\x00\x00\x00\x00\x8B\x08\x52", "xxxx????xxxxxxxxxxxxxxxxxxxx????xxx" );
	}
	while( !EndScene );

	DetourCreate( (DWORD)EndScene, (PBYTE)EndSceneMidfunction, 8 );

	return FALSE;
}

BOOL WINAPI DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
{
	if( dwReason == DLL_PROCESS_ATTACH )
	{
		CreateThread( 0, 0, &D3DHook, 0, 0, 0 );
	}

	return TRUE;
}
Quote Originally Posted by luizimloko View Post
@Jhem

don't need use the jmp for the return
look:

Code:
__declspec( naked ) HRESULT WINAPI EndSceneMidfunction( VOID )
{
	static LPDIRECT3DDEVICE9 pDevice;

	__asm
	{
		MOV ECX, DWORD PTR DS:[EAX]
		MOV EDX, DWORD PTR DS:[ECX + 0xA8]
		MOV DWORD PTR DS:[pDevice], EAX
		PUSH EAX
		CALL EDX
		PUSHAD
	}



	__asm
	{
		POPAD
		RETN
	}
}

DWORD FindPattern( DWORD dwStart, DWORD dwLen, BYTE* pszPatt, CHAR pszMask[] )
{
	// Credits: Gellin.

	UINT i = NULL;
	INT iLen = strlen(pszMask) - 1;

	for( DWORD dwRet = dwStart; dwRet < dwStart + dwLen; dwRet++ )
	{
		if( *(BYTE*)dwRet == pszPatt[i] || pszMask[i] == '?' )
		{
			if( pszMask[i+1] == '\0' )
				return( dwRet - iLen );
			i++;
		} 
		else 
			i = NULL;
	}
	return NULL;
}

void *DetourCreate( BYTE *src, const BYTE *dst, const int len )
{
	BYTE *jmp = (BYTE*)malloc( len+5 );
	DWORD dwBack;
	VirtualProtect( src, len, PAGE_EXECUTE_READWRITE, &dwBack );
	memcpy( jmp, src, len );	
	jmp += len;
	jmp[0] = 0xE9;
	*(DWORD*)( jmp+1 ) = (DWORD)( src+len - jmp ) - 5;
	src[0] = 0xE9;
	*(DWORD*)( src+1 ) = (DWORD)( dst - src ) - 5;
	VirtualProtect( src, len, dwBack, &dwBack );
	FlushInstructionCache( GetCurrentProcess(), src, 0x10 );

	return( jmp-len );
}

DWORD WINAPI D3DHook( PVOID )
{

	DWORD EndScene;

	do
	{
		DWORD WarRock = (DWORD)GetModuleHandle( "WarRock.exe" );

		if( WarRock != NULL )
			EndScene = FindPattern( WarRock, 0x6CD000, (PBYTE)"\x8B\x08\x8B\x91\x00\x00\x00\x00\x50\xFF\xD2\xC3\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x8B\x80\x00\x00\x00\x00\x8B\x08\x52", "xxxx????xxxxxxxxxxxxxxxxxxxx????xxx" );
	}
	while( !EndScene );

	DetourCreate( (DWORD)EndScene, (PBYTE)EndSceneMidfunction, 8 );

	return FALSE;
}

BOOL WINAPI DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
{
	if( dwReason == DLL_PROCESS_ATTACH )
	{
		CreateThread( 0, 0, &D3DHook, 0, 0, 0 );
	}

	return TRUE;
}
Oh, I see.
Thank you. Helped me a lot.
But sadly crash.
@luizimloko thank's for the infro bro ^^
@
Jhem i dedint test it anymore can you share your addies to me ^^
Posts 1–13 of 13 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Talk with us