Ajuda com Present Engine

Posts 1–12 of 12 · Page 1 of 1
Ajuda com Present Engine
Bom, temos esse Hook Present Engine :

 
ABRA
Code:
#include <windows.h>
#include <d3d9.h>
#include <d3dx9.h>
 
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
 
#define PresentEngine 0x004C41AF
DWORD retPresentEngine = ( PresentEngine + 0x5 );
 
#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 )
 
LPD3DXFONT Font;
 
VOID StartFont( LPDIRECT3DDEVICE9 pDevice )
{
    if( Font )
    {
        Font->Release();
        Font = NULL;
    }
 
    if( !Font )
    {
        D3DXCreateFont( pDevice,
                        14,
                        0,
                        FW_BOLD,
                        1,
                        0,
                        DEFAULT_CHARSET,
                        OUT_DEFAULT_PRECIS,
                        DEFAULT_QUALITY,
                        DEFAULT_PITCH | FF_DONTCARE,
                        "Arial",
                        &Font );
    }
}
 
VOID WriteText( LPDIRECT3DDEVICE9 pDevice, INT x, INT y, DWORD color, CHAR *text )
{    
    RECT rect;
    SetRect( &rect, x, y, x, y );
    Font->DrawText( NULL, text, -1, &rect, DT_NOCLIP | DT_LEFT, color );
}
 
__declspec( naked ) HRESULT WINAPI PresentMidfunction( )
{
    static LPDIRECT3DDEVICE9 pDevice;
 
    __asm
    {
        MOV ECX, DWORD PTR DS:[EAX]
        MOV EDX, DWORD PTR DS:[ECX + 0x44]
        MOV DWORD PTR DS:[pDevice], EAX
        PUSH 0
        PUSHAD
    }
 
    StartFont( pDevice );
 
    if( Font )
        WriteText( pDevice, 300, 300, Red, "CrossFire: Hook Present Engine" );
 
    __asm
    {
        POPAD
        JMP retPresentEngine
    }
}
 
VOID *DetourCreate( BYTE *src, CONST BYTE *dst, CONST INT len )
{
    BYTE *jmp =( BYTE * ) malloc( len + 5 );
    DWORD dwBack;
 
    VirtualProtect( src, len, PAGE_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 );
}
 
DWORD WINAPI StartRoutine( LPVOID )
{
    while( TRUE )
    {
        if( memcmp( ( VOID * )PresentEngine, ( VOID * )( PBYTE )"\x8B\x51", 2 ) == 0 )
        {
            Sleep( 100 );
            DetourCreate( ( PBYTE )PresentEngine, ( PBYTE )PresentMidfunction, 5 );
        }
        Sleep( 50 );
    }
 
    return 0;
}
 
BOOL WINAPI DllMain( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{ 
    if( dwReason == DLL_PROCESS_ATTACH )
    {
        DisableThreadLibraryCalls( hDll );
        MessageBox( 0, "Hook Present Engine", "Crossfire", 0 );
        CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)StartRoutine, 0, 0, 0 );
    }
 
    return TRUE;
}


Tenho o Pattern do endereço do Present : \x8B\x51\x00\x6A\x00\x6A\x00\x6A\x00\x50\xFF\xD2\x B8\x00\x00\x00\x00\xE8\x00\x00\x00\x00\xC7\x05\x00 \x00\x00\x00
xx?x?x?x?xxxx????x????xx????

Gostaria de uma ajuda para tentar botar isso para funcionar, estou meio sem rumo de por onde começar

Estou buscando em todos os lugares e estou até entendendo mais sobre o assunto.
Caso não queiram ajudar vou entender.
Atualiza o endereço caso estiver incorreto, tem vários endereços referente ao Present.
Depois desenha um menu e adiciona aí.
Quote Originally Posted by iProgammer View Post
Atualiza o endereço caso estiver incorreto, tem vários endereços referente ao Present.
Depois desenha um menu e adiciona aí.
O Meu problema é com esse endereço.
Já carreguei o Crossfire.exe e não consegui localizar
Carreguei a D3D9.DLL e não encontrei

A Unica coisa que não tentei foi carregar a d3d9 no crossfire.exe pois não libera a opção de faze-lo no ollydbg *-*
Quote Originally Posted by ForeverMarshall View Post
O Meu problema é com esse endereço.
Já carreguei o Crossfire.exe e não consegui localizar
Carreguei a D3D9.DLL e não encontrei

A Unica coisa que não tentei foi carregar a d3d9 no crossfire.exe pois não libera a opção de faze-lo no ollydbg *-*
Usa o x32Dbg, vai dar certo
Não entendi essa de carregar a d3d9...

Code:
#define ADDR_PRESENT		0x4E77AF
#define ADDR_ENDSCENE		0x459B1F
Quote Originally Posted by Fix2 View Post
Não entendi essa de carregar a d3d9...

Code:
#define ADDR_PRESENT		0x4E77AF
#define ADDR_ENDSCENE		0x459B1F
Agora que eu li um pouco mais entendi sobre o assunto.
Estou com problemas para achar esses endereços aí :P
Estão na D3D9 correto? Bom, se estiver só irão variar de sistema operacional para sistema operacional
Agora se for no Crossfire.exe (tenho quase certeza que não) elas são para todos sistemas.
Quote Originally Posted by ForeverMarshall View Post
Agora que eu li um pouco mais entendi sobre o assunto.
Estou com problemas para achar esses endereços aí :P
Estão na D3D9 correto? Bom, se estiver só irão variar de sistema operacional para sistema operacional
Agora se for no Crossfire.exe (tenho quase certeza que não) elas são para todos sistemas.
Estão na engine do game, crossfire.exe...
E tem vários endereços tanto Present como EndScene, DipEngine. Fonte -> dreek1
Quote Originally Posted by iProgammer View Post
Estão na engine do game, crossfire.exe...
E tem vários endereços tanto Present como EndScene, DipEngine. Fonte -> dreek1
Existe uma string, pattern ou algo que eu possa utilizar como referência para encontra-los?
Quote Originally Posted by ForeverMarshall View Post
Existe uma string, pattern ou algo que eu possa utilizar como referência para encontra-los?
Pesquise no google, "Hook EndScene" e "Hook Present".
Para os dois você irá encontrar pattern, estão desatualizadas... Retire alguns números, letras ou ?? que irá conseguir encontrar algum endereço.
Quote Originally Posted by iProgammer View Post
Pesquise no google, "Hook EndScene" e "Hook Present".
Para os dois você irá encontrar pattern, estão desatualizadas... Retire alguns números, letras ou ?? que irá conseguir encontrar algum endereço.
Já consegui, valeu pai
Obrigado
Esse hook aqui tá dando dc, mais também pode ser o injetor extreme ou a dll,
ESSE HOOK REALMENTE ESTÁ DETECTADO???
Posts 1–12 of 12 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?