Home Forum MultiPlayer Game Hacks & Cheats Other Semi-Popular First Person Shooter Hacks WarRock - International Hacks WarRock Hack Source Code 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
Originally Posted by
Jhem
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!
Originally Posted by
AeroMan
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?
Originally Posted by
pusongbato
@
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
Originally Posted by
WhiteHat PH
i think he have and he did
I hope it will detected soon, nyahaha, lol
Originally Posted by
pusongbato
I hope it will detected soon, nyahaha, lol
I hope too,.
Originally Posted by
Jhem
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;
}
Originally Posted by
luizimloko
@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