Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Stereo

#11
Programación C/C++ / Re: EOF y archivos
4 Septiembre 2013, 22:04 PM
Creo que el fread está mal, el 3er parámetro debería ser la longitud de la cadena

Y deberías cerrar los archivos con fclose
#12
Programación C/C++ / Re: Archivos
29 Agosto 2013, 21:50 PM
Haz un while !feof, usa fgets para obtener los carácteres de cada línea, usa fprintf para escribir en un archivo y termina con fclose para evitar bugs.
#13
Okey ahora sí funciona, con el cheat engine, es un lujo, 10000000 gracias!!
#14
Me sigue crasheando el programa, ahora lo cambie por:
"\x81\x40\x50\xC3\x00\x00\x00"
Y puse 7 bytes, lo que dijiste no?

Alomejor es por lo que has dicho de lo de despues del default, yo pretendo sobreescribir el opcode que tiene el address
#15
Es lo que quiero ;D y lo de 7 bytes... seguro? O sea tal y como lo cambio está bien?:

Op code en debugger:
81 40 50 50C30000

El cambio a C++:
"\x81\x40\x50\xC3\x00\x00"
#16
Hola, tengo otro problema

Ésta vez quiero cambiar las instrucciones (no se si se llaman así) de un address:

0043579C - 01 50 50                   - add [eax+50],edx
->
0043579C - 81 40 50 50C30000          - add [eax+50],0C350

Y hasta ahora lo que hago es crear 2 variables: una para el nuevo código y otra para el default, pero se crashea el programa (es una inyección de DLL):

Código (cpp) [Seleccionar]

char Default[] = "\x01\x50\x50";                     // 3 bytes
char New[] =     "\x81\x40\x50\xC3\x00\x00"; //Aqui el error, no se si la cadena esta mal o si son mas de 4 bytes...

#17
Ok ya resolví el problema:

Primero hay que leer el pointer, luego sumarle el offset de lo que hayas obtenido, y después escribir en esa dirección.

Lo siento si he hecho perder tiempo, soy newbie jiji

Gracias de todas formas
#18
El caso es que según el cheat engine está bien y WriteProcessMemory y ReadProcessMemory retornan true ambas :/

Lo de los 0s a la izquierda me refiero que no se si al poner 0x se quitan los 0 de la izq o se deja así:
     00187F34 -> 0x187F34
     00005578 -> 0x5778

Gracias
#19
Hola buenas
He hecho este code, pero no funciona, será la suma? o que no he puesto bien el offset, lo del 0x00.. no se si se pone así o se quitan los 0s de la izquierda :-\:
Código (cpp) [Seleccionar]

void ChangeAddr(int toadd)
{
        system("cls");
long offset = 0x00005578;
long pointer = 0x00187F34;
long finalAddr = offset + pointer/*, sumaHex = 0x18D4AC*/, Leer;
WriteProcessMemory ( process, ( LPVOID )finalAddr, &toadd, sizeof ( toadd ), NULL );
ReadProcessMemory ( process, ( LPVOID )finalAddr, &Leer, sizeof ( Leer ), NULL );
printf("Valor: %d", Leer);
}


Gracias de antemano!
#20
Gracias por responder pero ya he encontrado otra forma:

bool IsCollision(SDL_Rect &rect1, SDL_Rect &rect2)
{
    if(rect1.x <= rect2.x+rect2.w &&
       rect1.x+rect1.w >= rect2.x &&
       rect1.y <= rect2.y+rect2.h &&
       rect1.y+rect1.h >= rect2.y)
       return true;
    return false;
}


Cita de: Xafi en 23 Febrero 2013, 20:08 PM
Esa forma esta mal echa porque cuando el cuadro es 10 de alto y el objeto que colision es 8 de alto  y esta justo en el centro los vertices del cuadro estan fuera.

Yo usaba unos cuantos bucles y condiciones para comprobar si algun punto del objeto A estaba dentro de B,

Funciona perfecto, siempre cuando el cuadrado que chequeas sea igual o más pequeño que el otro, aun así gracias.