Mestre@

será que tu pode dar uma revisada na caca que eu fiz

@alessandro_10
Code:
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by app.rc
#include <windows.h>
#include <d3dx9.h>
typedef HRESULT ( WINAPI* oPresent ) ( LPDIRECT3DDEVICE9 pDevice, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion);
oPresent pPresent;
bool IsGameReadyForHook()
{
if( GetModuleHandleA( "d3d9.dll" ) != NULL
&& GetModuleHandleA( "ClientFX.fxd" ) != NULL
&& GetModuleHandleA( "CShell.dll" ) != NULL )
return true;
return false;
}
void Memoria( void* pvAddress, void* pvBuffer, size_t len )
{
if( *(BYTE*)pvAddress == *(BYTE*)pvBuffer )
return;
memcpy( ( void* )pvAddress, ( void* )pvBuffer, len );
}
bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask )
return false;
return (*szMask) == NULL;
}
DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
{
for(DWORD i=0; i < dwLen; i++)
if(bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
return (DWORD)(dwAddress+i);
return 0;
}
DWORD VTable(int index)
{
DWORD* devicePtr = 0;
DWORD hD3D9 = NULL;
while(hD3D9 == NULL){
Sleep(100);
try
{
hD3D9 = (DWORD)GetModuleHandleA("d3d9.dll");}
catch(...)
{
hD3D9 = NULL;
}}
DWORD addy = FindPattern(hD3D9, 0x1280000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
Memoria (&devicePtr, (void*)(addy+2), 4);
if(devicePtr == NULL){
return 0;}
return devicePtr[index];
}
void CPush(const char* cmd)
{
_asm
{
PUSH cmd
MOV EAX, 0x00485F60//EngineLTCLient
// Atualido aparentemente!
CALL EAX
ADD ESP, 0x4 // esse esp não é o esp boxes não neh ?
}
}
#define GameStatus 0x3778CC48
// Atualizado aparentemente
void main()
{
if(*(BYTE *)GameStatus == 1){
PushToConsole("PerturbRotationEffect 0.000000");
PushToConsole("PerturbIncreaseSpeed 0.000000");
PushToConsole("PerturbWalkPercent 0.000000");
PushToConsole("PerturbFiringIncreaseSpeed 0.000000");
PushToConsole("PerturbRecoil 0.000000");
PushToConsole("FireMovePerturb 0.000000");
PushToConsole("ZoomedFireMoveDuckPerturb 0.000000");
PushToConsole("ZoomedFireMovePerturb 0.000000");
PushToConsole("ZoomedFireDuckPerturb 0.000000");
}
else if(*(BYTE *)GameStatus == 5){
CPush("ShowFps 0");
// Aqui eu desconheço o valor padrão então não sei o que colocar :S
}
{
if(*(BYTE *)GameStatus == 1){
// desse ponto em diante terei que brincar com os numeros neh
PushToConsole("BaseMoveAccel 1000.000000");
PushToConsole("StartAccel 1000.000000");
PushToConsole("MaxAccel 1000.000000");
PushToConsole("AccelInc 1000.000000");
PushToConsole("WalkVel 100.000000");
PushToConsole("FRunVel 350.000000");
PushToConsole("BRunVel 350.000000");
PushToConsole("SRunVel 350.000000");
PushToConsole("JumpVel 350.000000");
PushToConsole("DuckVel 350.000000");
}else if(*(BYTE *)GameStatus == 5){
Comando("WalkVel 70.000000");
Comando("FRunVel 285.000000");
Comando("BRunVel 285.000000");
Comando("SRunVel 285.000000");
Comando("DuckVel 50.000000");
}
}
HRESULT WINAPI gellPresent(LPDIRECT3DDEVICE9 pDevice, CONST RECT *pSourceRect,
CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{
_asm pushad;
main();
_asm popad;
return pPresent(pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}
void *DetourCreate( BYTE *src, const BYTE *dst )
{
int len = 5;
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 );
return( jmp-len );
}
void Hook(void)
{
DWORD dwPresent = VTable(17);
pPresent = (oPresent)DetourCreate(( PBYTE)dwPresent, ( PBYTE )gellPresent);
}
DWORD WINAPI dwD3D9Thread(LPVOID)
{
while( !IsGameReadyForHook() )
Sleep(100);
Hook();
return 0;
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if ( dwReason == DLL_PROCESS_ATTACH )
{
CreateThread(NULL, NULL, dwD3D9Thread, NULL, NULL, NULL);
}
return TRUE;
}