Turner Cheats
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Hook DIP Engine

Ir para baixo

Hook DIP Engine  Empty Hook DIP Engine

Mensagem por RonaldoWynnek Sáb Out 06, 2012 9:58 am

Código:
#include
#include
#include
 
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

// NUMPAD1 => Types of chams.
// NUMPAD2 => Types of colors for front and back.
// LEFT and Right => Change colors.
 
// Change here the version of your Combat Arms => CABR or CAEU or CANA or CAKR
#define CABR
 
// Actual Address: 06/03/2012
 
#ifdef CABR
// Combat Arms Brazil
#define GameStatus      0x377F0DDC
#define DIPEngine      0x006A086A
#endif
 
#ifdef CAEU
// Combat Arms Europe
#define GameStatus      0x37806FC4
#define DIPEngine      0x006A3E0A
#endif
 
#ifdef CANA
// Combat Arms North American
#define GameStatus      0x37806FC4
#define DIPEngine      0x006A3E1A
#endif
 
#ifdef CAKR
// Combat Arms Korean
#define GameStatus      0x3774C6F0
#define DIPEngine      0x006A358A
#endif
 
DWORD retDIPEngine = (DIPEngine  0x8);
 
INT chams;
INT color[2];
INT indexcolor;
 
#define Red    D3DCOLOR_ARGB( 255, 255, 000, 000 )
#define Green  D3DCOLOR_ARGB( 255, 000, 255, 000 )
#define Blue    D3DCOLOR_ARGB( 255, 000, 000, 255 )
#define Black  D3DCOLOR_ARGB( 255, 000, 000, 000 )
 
VOID SetLightChams(LPDIRECT3DDEVICE9 pDevice, FLOAT A, FLOAT R, FLOAT G, FLOAT B)
{
    D3DMATERIAL9 pMaterial;
    ZeroMemory(&pMaterial, sizeof(D3DMATERIAL9));
    pDevice->SetRenderState(D3DRS_LIGHTING, TRUE);
    //Ambient
    pMaterial.Ambient.a = (A/255);
    pMaterial.Ambient.r = (R/255);
    pMaterial.Ambient.g = (G/255);
    pMaterial.Ambient.b = (B/255);
    //Diffuse
    pMaterial.Diffuse.a = (A/255);
    pMaterial.Diffuse.r = (R/255);
    pMaterial.Diffuse.g = (G/255);
    pMaterial.Diffuse.b = (B/255);
    //Specular
    pMaterial.Specular.a = (A/255);
    pMaterial.Specular.r = (R/255);
    pMaterial.Specular.g = (G/255);
    pMaterial.Specular.b = (B/255);
    pDevice->SetMaterial(&pMaterial);
}
 
__declspec( naked ) HRESULT WINAPI DIPMidfunction( )
{
    static LPDIRECT3DDEVICE9 pDevice;
    static INT BaseVertexIndex;
    static UINT MinVertexIndex, NumVertices, startIndex, primCount;
 
    __asm
    {
        MOV ECX, DWORD PTR DS:[EAX]
        MOV EDX, DWORD PTR DS:[ECX  0x148]
        MOV DWORD PTR DS:[pDevice], EAX;
        MOV ECX, DWORD PTR DS:[EBP  0x18]
        MOV DWORD PTR DS:[BaseVertexIndex], ECX
        MOV ECX, DWORD PTR DS:[EBP  0x8]
        MOV DWORD PTR DS:[MinVertexIndex], ECX
        MOV ECX, DWORD PTR DS:[EBP  0x10]
        MOV DWORD PTR DS:[NumVertices], ECX
        MOV ECX, DWORD PTR DS:[EBP  0xC]
        MOV DWORD PTR DS:[startIndex], ECX
        MOV ECX, DWORD PTR DS:[EBP  0x14]
        MOV DWORD PTR DS:[primCount], ECX
        PUSHAD
    }
 
    if( chams ) {
 
        pDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE );
 
        if( chams == 1 ) {
            if( color[0] == 1 ) SetLightChams( pDevice, 255, 255, 000, 000 );
            if( color[0] == 2 ) SetLightChams( pDevice, 255, 000, 255, 000 );
            if( color[0] == 3 ) SetLightChams( pDevice, 255, 000, 000, 255 );
            if( color[0] == 4 ) SetLightChams( pDevice, 255, 000, 000, 000 );
        }
        if( chams == 2 ) {
            pDevice->SetRenderState( D3DRS_LIGHTING, D3DZB_TRUE );
            pDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_FLAT );
            pDevice->SetRenderState( D3DRS_FOGENABLE, D3DZB_FALSE );
            if( color[0] == 1 ) pDevice->SetRenderState( D3DRS_AMBIENT, Red  );
            if( color[0] == 2 ) pDevice->SetRenderState( D3DRS_AMBIENT, Green );
            if( color[0] == 3 ) pDevice->SetRenderState( D3DRS_AMBIENT, Blue  );
            if( color[0] == 4 ) pDevice->SetRenderState( D3DRS_AMBIENT, Black );
        }
        if( chams > 2 ) {
            pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, D3DZB_TRUE );
            pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVDESTCOLOR );
            if( chams == 3 ) pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_INVSRCCOLOR );
            if( chams == 4 ) pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_INVSRCALPHA );
        }
 
        pDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount );
 
        pDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );
 
        if( chams == 1 ) {
            if( color[1] == 1 ) SetLightChams( pDevice, 255, 255, 000, 000 );
            if( color[1] == 2 ) SetLightChams( pDevice, 255, 000, 255, 000 );
            if( color[1] == 3 ) SetLightChams( pDevice, 255, 000, 000, 255 );
            if( color[1] == 4 ) SetLightChams( pDevice, 255, 000, 000, 000 );
        }
        if( chams == 2 ) {
            if( color[1] == 1 ) pDevice->SetRenderState( D3DRS_AMBIENT, Red  );
            if( color[1] == 2 ) pDevice->SetRenderState( D3DRS_AMBIENT, Green );
            if( color[1] == 3 ) pDevice->SetRenderState( D3DRS_AMBIENT, Blue  );
            if( color[1] == 4 ) pDevice->SetRenderState( D3DRS_AMBIENT, Black );
        }
        if( chams > 2 ) {
            pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, D3DZB_TRUE );
            pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVDESTCOLOR );
            if( chams == 3 ) pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_INVSRCCOLOR );
            if( chams == 4 ) pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_INVSRCALPHA );
        }
    } else {
        pDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );
    }
 
    __asm
    {
        POPAD
        JMP retDIPEngine
    }
}
 
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;
    for( int i = 5; i < len; i  )
        src[i] = 0x90;
    VirtualProtect( src, len, dwBack, &dwBack );
    return ( jmp - len );
}
 
VOID Hook( VOID )
{
    while( TRUE ) {
        if( *(BYTE *)GameStatus == 1 ) {
 
            DetourCreate( (PBYTE)DIPEngine, (PBYTE)DIPMidfunction, 8 );
 
            if( GetAsyncKeyState(VK_NUMPAD1)&1 ) {
                chams  ;
                if(chams > 4) chams = 0;
            }
 
            if( GetAsyncKeyState(VK_NUMPAD2)&1 ) indexcolor = !indexcolor;
 
            if( GetAsyncKeyState(VK_LEFT)&1 ) {
                color[indexcolor]--;
                if(color[indexcolor] < 0) color[indexcolor] = 4;
            }
 
            if( GetAsyncKeyState(VK_RIGHT)&1 ) {
                color[indexcolor]  ;
                if(color[indexcolor] > 4) color[indexcolor] = 0;
            }
        }
        else
            memcpy( (VOID *)DIPEngine, (CONST VOID *)(PBYTE)"\x8B\x08\x8B\x91\x48\x01\x00\x00", 8 );
 
        Sleep(100);
    }
}
 
BOOL CheckModules( VOID )
{
    if( GetModuleHandleA("d3d9.dll") != NULL
        && GetModuleHandleA("CShell.dll") != NULL
        && GetModuleHandleA("ClientFX.fxd") != NULL )
        return TRUE;
 
    return FALSE;
}
 
DWORD WINAPI StartRoutine( LPVOID )
{
    while( !CheckModules( ) )
        Sleep(100);
 
    Hook( );
 
    return 0;
}
 
BOOL WINAPI DllMain( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
    DisableThreadLibraryCalls( hDll );
 
    if( dwReason == DLL_PROCESS_ATTACH ) {
        CreateThread( NULL, NULL, (LPTHREAD_START_ROUTINE)StartRoutine, NULL, NULL, NULL );
    }
 
    return TRUE;
}


Créditos

Detour -> Azorbix
Types of chams -> Pheron or Phenomand
Midfunction -> Shadow_ && Gellin
WE11ington
E outros não citados aqui.
RonaldoWynnek
RonaldoWynnek
Combat Arms
Combat Arms

Turner Cheats Evolution

Jogo : Combat Arms
Mensagens : 124
Cash : 4449
Obrigado : 23
Data de inscrição : 30/08/2012
Idade : 26
Conquistas : Nenhum troféu

https://turnercheats.forumbrasil.net/

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos