DWORD FindPattern( DWORD dwStart, DWORD dwLen, BYTE *pszPatt, char pszMask[ ] )
{
unsigned int 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 findRenderAddress( DWORD *dwBuffer )
{
*dwBuffer = ( DWORD ) FindPattern( 0x400000,
INFINITE,
( PBYTE ) "\xB8\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x8B\x06\x8B\x50\x00",
( char * ) "x????x????xxxx?" );
*dwBuffer = *( DWORD * ) ( dwBuffer + 0x01 );
*dwBuffer += 0xA7;
}
DWORD WINAPI dwStartRoutine( void * )
{
while( !GetModuleHandle( "ClientFX.fxd" ) )
Sleep( 1 );
DWORD dwPlayerRenderState = 0;
findRenderAddress( &dwPlayerRenderState );
if( !dwPlayerRenderState )
return 0;
*( BYTE * ) ( dwPlayerRenderState ) = 0;
return 0;
}


#include <windows.h>
#include <stdio.h>
bool WallHack = false;
#define ModelNode = 0x17B93D4
DWORD FindPattern( DWORD dwStart, DWORD dwLen, BYTE *pszPatt, char pszMask[ ] )
{
unsigned int 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 findRenderAddress( DWORD *dwBuffer )
{
*dwBuffer = ( DWORD ) FindPattern( 0x400000,INFINITE,( PBYTE ) "\xB8\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x8B\x06\x8B\x50\x00", ( char * ) "x????x????xxxx?" );
*dwBuffer = *( DWORD * ) ( dwBuffer + 0x01 );
*dwBuffer += 0xA7;
}
DWORD WINAPI dwStartRoutine( void * )
{
while( !GetModuleHandle( "ClientFX.fxd" ) )
Sleep( 1 );
DWORD dwPlayerRenderState = 0;
findRenderAddress( &dwPlayerRenderState );
if( !dwPlayerRenderState )
return 0;
// WallHack
if (GetAsyncKeyState (VK_F2) & 1)
WallHack = (!WallHack); // Tecla de atalho F2 para WallHack
if(WallHack)
{
*( BYTE * ) ( dwPlayerRenderState ) = 0;
}
return 0;
}
bool IsGameReadyForHook()
{
if (GetModuleHandleA ("CShell.dll")!= NULL && GetModuleHandleA ("ClientFX.fxd")!= NULL)
return true;
return false;
}
void Engine ()
{
while (! IsGameReadyForHook ())
{
sleep (200);
}
while (true)
{
dwStartRoutine();
}
}
extern "C" __declspec (dllexport) DllMain BOOL WINAPI (HMODULE hDLL, DWORD dwReason, lpvRe LPVOID)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls (hDLL);
CreateThread (0, 0, (LPTHREAD_START_ROUTINE) Engine, 0, 0, 0);
break;
case DLL_PROCESS_DETACH:
break;
}
return true;
}