Resultados 1 al 6 de 6

TUTORIAL Hack RE5 dx10

  1. #1 TUTORIAL Hack RE5 dx10 
    Iniciado
    Fecha de ingreso
    Mar 2010
    Mensajes
    3
    Descargas
    0
    Uploads
    0
    Buenas hoy quiero empezar a transferir un conocimiento hacerca de como hackear un juego con dll injection, voy a tratar de ser lo mas explicativo posible.
    El juego que voy a utilizar es el Residen Evil 5===>Directx10.

    El software que utilizo es Visual Studio 2010 RC,c++. Cheat Engine y OllyDbg

    ESTE TUTORIAL ES PARA PERSONAS QUE SEPAN ALGO DE PROGRAMACION Y COMO BUSCAR EN GOOGLE



    CREAND PROYECTO VS2010 c++

    -Archivo->NUevo->Proyecto
    vamos a crear un proyecto WIN32 Project.
    para efectos del tutorial el proyecto lo llamare Tutorial1.
    Seleccionamos en el Ayudante la opcion DLL y finalizamos el Ayudante.

    Ahora tenemos la siguiente estructura
    Header Files=>stdafx.h,targetver.h
    Source Files=>dllmain.cpp,stdafx.cpp,Tutorial1.cpp

    sobre el proyecto tutorial1 click derecho propiedades,en general camiamos la opcion de caracteres Unicode por Multi-Byte y guardamos.

    luego sobre el proyecto tutorial1 clieck derecho, Agregar Nuevo Item y Agregamos un Archivo de Cabecera y lo ponemos hacksdisponibles.h y le agregamos el siguiente codigo

    Código:
    #pragma once
    #include "stdafx.h"
    
    void HackDisponibles();
    abrimos el archivo stdafx.h y agregamos al final
    Código:
    #include "hacksdisponibles.h"
    ahora abrimos el archivo dllmain
    y debe quedarnos de esta manera
    Código:
    // dllmain.cpp : Defines the entry point for the DLL application.
    #include "stdafx.h"
    
    BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
    					 )
    {
    	switch (ul_reason_for_call)
    	{
    	case DLL_PROCESS_ATTACH:
    		HackDisponibles();
    	case DLL_THREAD_ATTACH:
    	case DLL_THREAD_DETACH:
    	case DLL_PROCESS_DETACH:
    		break;
    	}
    	return TRUE;
    }
    habrimos el archivo Tutorial1.cpp, aqui empezamos la magia

    lo primero que haremos es realizar el "bypass" del live.dll ya que este checkea si la memoria fue cambiada y hace que se cierre resident evil.

    esto es realizado con Residen evil 5 version Directx10

    Código:
    // Tutorial1.cpp : Defines the exported functions for the DLL application.
    //
    
    #include "stdafx.h"
    
    void ByPassxLive()
    {
    	DWORD address_xlive=(DWORD)GetModuleHandle("xlive.dll");
    	address_xlive+=0x0ED690;
    	unsigned long antes=NULL;
    	VirtualProtect((void*)(address_xlive),3,PAGE_EXECUTE_READWRITE,&antes);
    	//colocamos retn c
    	//Aqui va el hack
    	*(BYTE*)(address_xlive)=0xC2; //RETN
    	*(WORD*)(address_xlive+1)=0x000C; //10
    	//Termina El hack
    	VirtualProtect((void*)(address_xlive),3,antes,NULL);			
    }
    con olly o con cheatengine se puede buscar
    MOV EDI,EDI que se encuentra en xlive.dll+ED690 y lo cambiamos a
    RETN 0C (0xC2000C), este quiero agradecer a la persona que se molesto en encontrar donde y como solucionar el checkeo de memoria, para hacer estos cambios utilizamos la funcion VirtualProtect para habilitar la escritura, y lo usamos para 3 bytes que es lo que se necesita, y por supuesto devolvemos el valor anterior de prteccion a esos bytes.

    ahora agregamos la funcion HackDisponibles en el archivo Tutorial1.cpp
    Código:
    // Tutorial1.cpp : Defines the exported functions for the DLL application.
    //
    
    #include "stdafx.h"
    
    //recortado por motios de compresion
    void ByPassxLive(){....}
    
    void HackDisponibles ()
    {
    	ByPassxLive();
    }
    ya con esto nos permite realizar nuestros hack tranquilamente
    de a pocos colocare los ejemplos, empezemos con hackear el dinero ponerlo en 999.999, no voy a explicar el como encontre la direccion de memoria esto lo pueden hacer con olly o cheat, un poco de astucia y mirar el codigo aqui expuesto:

    Código:
    // Tutorial1.cpp : Defines the exported functions for the DLL application.
    //
    
    #include "stdafx.h"
    
    #define Address_Gold 0x00a0097f
    unsigned long Address_GoldBack =0x00a00984;
    
    //codigo para poner el oro en 999.999
    _declspec(naked) void hookGold()
    {
    	_asm
    	{		
    		lea	edx,[ecx+eax+1c0h] //explicacion *1
    		mov dword ptr[edx],000F423fh //explicacion *2
    		mov edx,[ecx+eax+1c0h] //explicacion *3		
    		//explicacion *4
    		push eax 
    		mov eax,Address_GoldBack
    		jmp eax
    	}
    }
    void HackGold()
    {
    	//desprotejo la memoria
    	unsigned long antes=NULL;
    	VirtualProtect((void*)Address_Gold,7,PAGE_EXECUTE_READWRITE,&antes);
    	//Aqui va el hack del JUMP a nuestro codigo
    	*(BYTE*)(Address_Gold)=0xE9; //JMP
    	*(DWORD*)(Address_Gold+1)=(unsigned long)&hookGold-(Address_Gold+5); //a mi dll
    	*(BYTE*)(Address_Gold+5)=0x58; //POP eax
    	*(BYTE*)(Address_Gold+6)=0x90; //NOP
    	//Termina El hack
    	VirtualProtect((void*)Address_Gold,7,antes,NULL);
    }
    
    void ByPassxLive(){...}
    void HackDisponibles (){...}
    creamos una funcion con el nombre HackGold que se encarga de colocar un JMP a nuestro hookGold al codigo original, el codigo assembly es
    JMP MEMORIA(E900000000) donde memoria es la distancia entre nuestro codigo hook de la posicion de memoria donde se modifica el oro.
    explicacion *1 lea edx,[ecx+eax+1c0h]
    aqui obtenemos un puntero a la posicion de memoria donde se encuentra el dato de cuando gold tenemos
    explicacion *2 mov dword ptr[edx],000F423fh
    aqui esta la magia le pasamos 999.999 en hexadecimal al puntero donde se encuentra el dato del gold
    explicacion *3 mov edx,[ecx+eax+1c0h]
    este codigo ya es el orginal para evitar algun error
    explicacion *4
    push eax
    mov eax,Address_GoldBack
    jmp eax

    aqui lo que se hace es realizar el salto a donde debe continuar la secuencia del codigo.

    con esto ya tenemos listo el hack de dinero.

    Ahora hagamos el de municion siempre en 99 lo mismo que "infinito"
    vamos a utilizar el mismo concepto de poner un jmp en el codigo original y lo enviamos a nuestra funcion para realizar la magia.

    en el mismo archivo Tutorial1.cpp
    Código:
    // Tutorial1.cpp : Defines the exported functions for the DLL application.
    //
    
    #include "stdafx.h"
    
    #define Address_Gold 0x00a0097f
    #define Address_Munition 0x00c15278
    unsigned long Address_MunitionBack =0x00c15282;
    unsigned long Address_GoldBack =0x00a00984;
    
    //Procedimiento para colocar las balas en 99
    _declspec(naked) void hookMunition()
    {	
    	_asm
    	{
    		mov [ecx+8],63h //explicacion *1
    		mov eax,Address_MunitionBack
    		jmp eax
    	}
    }
    void HackMunition()
    {
    	//desprotejo la memoria
    	unsigned long antes=NULL;
    	VirtualProtect((void*)Address_Munition,7,PAGE_EXECUTE_READWRITE,&antes);
    	//Aqui va el hack
    	*(BYTE*)(Address_Munition)=0xE9; //JMP
    	*(DWORD*)(Address_Munition+1)=(unsigned long)&hookMunition-(Address_Munition+5); //a mi dll
    	*(BYTE*)(Address_Munition+5)=0x90; //POP ecx
    	*(BYTE*)(Address_Munition+6)=0x90; //NOP	
    	//Termina El hack
    	VirtualProtect((void*)Address_Munition,7,antes,NULL);
    }
    
    //recortado por compresion
    _declspec(naked) void hookGold(){...}
    void HackGold(){...}
    void ByPassxLive(){...}
    void HackDisponibles ()
    {
    	ByPassxLive();
            //habilitamos los hacks
            HackGold();
    	HackMunition();
    }
    aqui lo mas importe es
    explicacion *1 mov [ecx+8],63h
    aqui le estamos pasando 99 a el puntero que contiene el dato de cuantas balas nos queda

    y por ultimo habilitamos los hack en el codigo.
    LIsto eso es todo en codigo.

    Compilamos y ahora procedemos a utilizar nuestro hack para poder usarlo debes injectarlo en el proceso RE5DX10.EXE.
    yo utilizo el programa Inject-TOR para hacerlo, solo especificamos la DLL a injectar, de ahi en la zona inferior izquierda (Name of Process) ponemos "RE5DX10.EXE" y accionamos la opcion "use Watch" y lo ultimo es abrir nuestro juego si se injecta correctamente veran como su oro es inifinito y la municion.


    POR FAVOR SI NO ENTIENDEN ALGO PREGUNTEN, esto me tomo 20 dias aprender manualmente como se hacia dll injection, como se debuggeaba y como encontrar posiciones de memoria, al igual existen miles de tutoriales en video de como buscar dichas posiciones

    por ultimo quiero decirles que actualmente estoy relizando el codigo para hackear el dx10 para pintar nuestros propios obejtos, y asi poner que se visualizen las gemas rapidamente. Apenas lo tenga listo lo posteo

    att
    trompetin17

    PD. Espero sea de utilidad y disculpen la Horrografia
    Citar  
     

  2. #2  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Hola trompetin17,

    Bienvenido al foro y gracias por el aporte.


    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  3. #3 TUTORIAL HACK RE5 dx10 Puntos Infinitos 
    Iniciado
    Fecha de ingreso
    Mar 2010
    Mensajes
    3
    Descargas
    0
    Uploads
    0
    Buenas el dia de hoy vamos a realizar el codigo para que los puntos de caracteristicas especiales sea infinito. Hoy explicare un poco mas en detalle el codigo assembly.
    Les recuerdo que es con Resident Evil 5 DX10

    Con ayuda de cheat me encontre esta direccion 00ca903a en la cual se encuentra el siguiente codigo assembly
    Código:
    00CA9030  /$  8B81 8C010000 MOV EAX,DWORD PTR DS:[ECX+18C]
    00CA9036  |.  8B5424 04     MOV EDX,DWORD PTR SS:[ESP+4]
    00CA903A      3BC2          CMP EAX,EDX
    00CA903C      73 0B         JNB SHORT RE5DX10.00CA9049
    00CA903E      33C0          XOR EAX,EAX
    00CA9040      8981 8C010000 MOV DWORD PTR DS:[ECX+18C],EAX
    00CA9046  |.  C2 0400       RETN 4
    00CA9049      2BC2          SUB EAX,EDX
    00CA904B      8981 8C010000 MOV DWORD PTR DS:[ECX+18C],EAX
    00CA9051  \.  C2 0400       RETN 4
    basicamente en eax contiene el valor de los puntos que tengo actualmente, y en edx contiene los puntos que se se van a descontar, luego compara(cmp EAX,EDX) si nuestrsos puntos son menores y si lo es no salta(JNB SHORT RE5DX10.00CA9049) y lo que hace es poner en cero eax, ahora bien si salta por que nuestros puntos son mayores a 00CA9049, lo que hace alli es restarle(SUB EAX,EDX) a nuestros puntos lso que se deben descontar, y por ultimo actualiza nuestros puntos(MOV DWORD PTR DS:[ECX+18C],EAX)

    ok, despues de analizado voy a realizar un cambio en el codigo assembly para que lusca asi
    Código:
    00CA9030  /$  8B81 8C010000 MOV EAX,DWORD PTR DS:[ECX+18C]
    00CA9036  |.  8B5424 04     MOV EDX,DWORD PTR SS:[ESP+4]
    00CA903A      B8 3F420F00   MOV EAX,0F423F
    00CA903F      EB 0A         JMP SHORT RE5DX10.00CA904B
    00CA9041      90            NOP
    00CA9042      90            NOP
    00CA9043      90            NOP
    00CA9044      90            NOP
    00CA9045      90            NOP
    00CA9046  |.  C2 0400       RETN 4
    00CA9049      2BC2          SUB EAX,EDX
    00CA904B      8981 8C010000 MOV DWORD PTR DS:[ECX+18C],EAX
    00CA9051  \.  C2 0400       RETN 4
    comparen con el original para que vean los cambios, simplemente lo que hago es actualizar(MOV EAX,0F423F) nuestors puntos con 999.999(0F423F) en hexadecimal, y luego salto(JMP SHORT RE5DX10.00CA904B) al alinea que actualiza nuestros puntos.

    sugerencia: tener al menos 500 puntos , compran algo y ya quedan con 999.999

    ahora bien actulizemos nuestra dll para que contenga este codigo
    Código:
    // Tutorial1.cpp : Defines the exported functions for the DLL application.
    //
    
    #include "stdafx.h"
    
    #define Address_Gold 0x00a0097f
    #define Address_Munition 0x00c15278
    #define Address_Points 0x00ca903a
    unsigned long Address_MunitionBack =0x00c15282;
    unsigned long Address_GoldBack =0x00a00984;
    
    void HackPuntos()
    {
    	//desprotejo la memoria
    	unsigned long antes=NULL;
    	VirtualProtect((void*)Address_Points,12,PAGE_EXECUTE_READWRITE,&antes);
    	//Aqui va el hack
    	*(BYTE*)(Address_Points)=0xB8; //MOV Eax
    	*(DWORD*)(Address_Points+1)=0x000F423f; //a 999999
    	*(BYTE*)(Address_Points+5)=0xEB; //JMP
    	*(BYTE*)(Address_Points+6)=0x0A; //Salto 10 lineas adelante
    	*(BYTE*)(Address_Points+7)=0x90; //NOP
    	*(BYTE*)(Address_Points+8)=0x90; //NOP
    	*(BYTE*)(Address_Points+9)=0x90; //NOP
    	*(BYTE*)(Address_Points+10)=0x90; //NOP
    	*(BYTE*)(Address_Points+11)=0x90; //NOP
    	//Termina El hack
    	VirtualProtect((void*)Address_Points,12,antes,NULL);
    }
    //recortado por compresion
    _declspec(naked) void hookMunition(){...}
    void HackMunition(){...}
    _declspec(naked) void hookGold(){...}
    void HackGold(){...}
    void ByPassxLive(){...}
    
    void HackDisponibles ()
    {
    	ByPassxLive();
    	HackGold();
    	HackMunition();
    	HackPuntos(); //actualizo para que funcione
    }
    este es el tip del dia de hoy. Compilen e injectan y listo.

    att
    trompetin17

    PD. Si tiene dudas por favor pregunten
    PD.2 aun estoy trabajando en el hack del metodo D3DCreateDevice ya que no se puede cambiar el bin del RE5DX10.exe por que el xlive comprueba la integridad al inicializar, y la injection ocurre despues de que se llama a este metodo, aun sigo investigando si alguno tiene algun consejoo bienvenido es.
    Última edición por trompetin17; 07-03-2010 a las 05:11 Razón: modificando los pd
    Citar  
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Sep 2003
    Mensajes
    1.384
    Descargas
    21
    Uploads
    5
    Buen aporte trompetin, no le voy al RE pero siempre se agradecen aportes de este estilo.

    Saludos
    - Me desagrada
    - ¿Por qué?
    - No estoy a su altura.
    ¿Ha respondido así alguna vez un hombre?

    Friedrich Nietzsche



    Citar  
     

  5. #5  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    Se bienvenido hh, encantados de tenerte aqui.

    Muy buen trabajo, felicidades.

    Salu2
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
    Citar  
     

  6. #6 TUTORIAL HACK RE5 dx10 Memory Overrum 
    Iniciado
    Fecha de ingreso
    Mar 2010
    Mensajes
    3
    Descargas
    0
    Uploads
    0
    Buenas hoy vengo contento por que por fin logre capturar el puntero de ID3D10Device.
    Despues de analizar el codigo y seguirlo encontre. Ando Cansado pero mañana coloco bien explicado.
    Hoy por el memoento quiero comentar que aquellos que han intentado ejecutar el cheat o olly y les sale un mensaje diciendo "ERR08:Memory overrun" le spuede servir este truco.
    En RE5DX10 esta esta posicion de memoria 045BB90 aparentemente este metodo gestiona los errores que contiene el programa. Si echamos un vistazo con olly podemos encontrar cosas interesante pero a lo que respecta este tips es lo siguiente
    Código:
    0045BB90  /$  85C0          TEST EAX,EAX
    0045BB92  |.  0F84 C0010000 JE RE5DX10.0045BD58
    0045BB98  |.  3D 0E000780   CMP EAX,8007000E
    0045BB9D  |.  75 0F         JNZ SHORT RE5DX10.0045BBAE
    0045BB9F  |.  68 A4D20F01   PUSH RE5DX10.010FD2A4                    ;  ASCII "ERR08 : Memory overrun."
    0045BBA4  |.  68 886F2701   PUSH RE5DX10.01276F88
    0045BBA9  |.  E8 F2CF2800   CALL RE5DX10.006E8BA0
    basicamente revisa que si en EAX biene el codigo 8007000(CMP EAX,8007000E) que pues no se que quiere decir exactamente pero asumo que indica que hay un debugger abordo, Luego de comparar encontramos el salto condicional(JNZ SHORT RE5DX10.0045BBAE) indicando que solo saltara si no es el codigo esperado, Si lo es vemos que aparece "ERR08 : Memory overrun." y se ejecuta un metodo(CALL RE5DX10.006E8BA0)
    para mi en este caso es sencillo simplemente cambiamos el salto condicional por un salto fijo
    Código:
    0045BB90  /$  85C0          TEST EAX,EAX
    0045BB92  |.  0F84 C0010000 JE RE5DX10.0045BD58
    0045BB98  |.  3D 0E000780   CMP EAX,8007000E
    0045BB9D      EB 0F         JMP SHORT RE5DX10.0045BBAE
    0045BB9F  |.  68 A4D20F01   PUSH RE5DX10.010FD2A4                    ;  ASCII "ERR08 : Memory overrun."
    0045BBA4  |.  68 886F2701   PUSH RE5DX10.01276F88
    0045BBA9  |.  E8 F2CF2800   CALL RE5DX10.006E8BA0
    y queda listo. Aqui el donde el como, les queda como trabajo(usen dll Injection).

    Por Ultimo les adelanto en el RE5DX10 el puntero esta en [0134f238]+34, hoy termine de examinar y probar. Ya mañana les detallo el codigo, de aqui en adelante lo que voy a realizar es que los emblemas se vean facilmente, para encontrarlos rapido y asi sucesivamente, bienvenida las ideas.

    Y si quieren sugerir algun juego para tratar de crackearlo tambien bienvenido es, se hara lo posible.

    Att
    trompetin17
    Citar  
     

Temas similares

  1. Hackear WEP y WPA TUTORIAL!!
    Por ReUteR en el foro REDES Y TECNOLOGIAS WIRELESS
    Respuestas: 0
    Último mensaje: 21-03-2008, 15:01
  2. Tutorial WifiSlax??
    Por tAySeR en el foro REDES Y TECNOLOGIAS WIRELESS
    Respuestas: 5
    Último mensaje: 10-06-2007, 12:57
  3. tutorial sim
    Por torres en el foro TELEFONÍA MOVIL
    Respuestas: 2
    Último mensaje: 30-09-2005, 23:09
  4. Tutorial de Xmas2000
    Por Manoleitor en el foro INGENIERIA INVERSA
    Respuestas: 1
    Último mensaje: 17-04-2002, 12:48
  5. Tutorial de XP
    Por jbs en el foro INTRUSION
    Respuestas: 2
    Último mensaje: 12-12-2001, 10:05

Marcadores

Marcadores