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 - Axtrax

#1
Buenas tengo el siguiente codigo que acabo de armar pero tengo algunos problemas para obtener el resultado que quiero primero y principal les muestro el codigo:

Código (cpp) [Seleccionar]


DWORD var[] = { 0x03B4, 0x2558, 0x0000, 0x010C };

DWORD num[] = { 0x0038,0x0030,0x0028,0x0020,0x0018,0x0010,0x008,0x0000 };

DWORD tel[] = { 0x0010C, 0x0110, 0x0114 };


for (int i = 0; i < 8; i++)
{
var[2] = num[i];

for (int b = 0; b < 3; b++)
{
var[3] = tel[b];

for (int a = 0; a < 4; a++)
{
cout << hex << var[a];
}

cout << endl;

}
cout << endl;

}



el resultado que quisiera tener es el siguiente:

Código (cpp) [Seleccionar]

/*Justamente como muestra el contenido de var[a] ese mismo contenido
pero divido asi:
DWORD var[] = { 0x03B4, 0x2558, 0x0000, 0x010C };

para luego utilizar var[0], var[1] etc asi 23 veces porque son 24 Items los que genera var[a]

se me ocurrio utilizar el comando for pero nunca lo entendi por completo aun asi logre lo que queria pero no del todo xD todo eso es para luego utilizar cada variable de var[a] por ejemplo y aplicarlas a un writeprocessmemory
*/


Espero que me puedan ayudar con este problema dividi cada item en 6 characters por si quiere usarse de alguna manera tomando 6 characteres y implementandolo como 1 item, luego otros 6 characteres y que sea otro item

{item1, item2 etc...} y luego esos items irian dentro de una variable DWORD, quizas lo pueden hacer asi o tienen un mejor metodo no vendria a pedir ayuda si no hubiese tratado jaja disculpen enserio
#2
Claro esa idea se me habia ocurrido el problema es que el valor de la partida necesito cambiarlo para que cuando este en partida figure como que no estoy en ella, asi no me pueden reportar, lo correcto seria hacer:

Código (cpp) [Seleccionar]

DWORD puntero = *(DWORD*)(comienzo + 0x02394B24); //trata de acceder al addres ej: "xxxx.exe"+02394B24
DWORD puntero1 = *(DWORD*)(puntero + 0x414); //suma el valor obtenido en puntero y le suma otro offset
DWORD verificar = *(DWORD*)(puntero1 + 0x78C) = 30; //obtiene los address + offsets y le asigna el valor de [30]
comprobador = true; //una vez que modificamos el valor hacemos que comprobador sea verdadero para saber que el cheat esta activado.

/*

if (verificar != 0) <--- o null
{
active
}
osea que me diga si logra encontrar todo el contenido y si le devuelve un valor distinto a 0... el problema es que no me funciona de esa manera y no entiendo el porque
el programa tendria que verificar todo el tiempo si es o no nulo osea ??? si llega a ser nulo entonces que no haga nada, eso tendria que hacer, quiero enocntrar un metodo que me devuelva el valor que aparece ahi dentro en pantalla asi veo que me devuelve y veo como lo hago, alguna idea en particular de que tipo de codigo tendria que estudiar?
*/

#3
Programación C/C++ / Problema con trainer DLL
13 Enero 2017, 18:24 PM
Buenas gente, aprendiendo un poco lo que es c++ pero aun asi tengo pocos conocimientos, trate de comentarles todo el funcionamiento del cheat por si alguien en un futuro quiere crear algo parecido y le sirve.
mi problema es que el valor del juego tiene que estar frezeado cuando se modifica osea tiene que estar cambiandose todo el tiempo ejemplo:

Balas: 30 <--- valor real de las balas
Balas: 250 <---- valor modificado de las balas esto tiene que estar modificandose a cada rato que para eso esta el while.

Mi problema mas que nada consiste en que si el address que busca el programa no existe osea su valor es null o ???? como seria en cheat engine porque no estas en partida que no modifique su valor o por ejemplo si estoy en partida y active el cheat y por x motivo lo deje activado y quiero salir de la partida que no lo siga modificando.

no entiendo por que mi codigo hace que crashee el juego a veces y me gustaria saber si
hay alguna forma de ver el valor de los address+pointers con mi codigo o quizas ustedes tengan un metodo mas sofisticado para hacerlo.

Muchas gracias y saludos!

Código (cpp) [Seleccionar]

#include <Windows.h>
#include <iostream>

bool killshot = false;
bool comprobador = false;



void hack()
{
DWORD comienzo = (DWORD)GetModuleHandle(NULL); //me devuelve el valor de "xxxx.exe"



while (true)
{

try
{

/* Addres: "xxxx.exe"+02394B24
   offset1: 0x414
   offset2: 0x78C
   esto es igual a la suma de cada uno:
   "xxxx.exe"+02394B24+0x414+0x78C = ("aqui se encuentra el valor a modificar");
*/
DWORD puntero = *(DWORD*)(comienzo + 0x02394B24); //trata de acceder al addres ej: "xxxx.exe"+02394B24

if ((puntero != 0) && (killshot == true)) //me dice si el contenido de puntero es distinto a 0 y killshot es verdadero entonces...
{
DWORD puntero = *(DWORD*)(comienzo + 0x02394B24); //trata de acceder al addres ej: "xxxx.exe"+02394B24
DWORD puntero1 = *(DWORD*)(puntero + 0x414); //suma el valor obtenido en puntero y le suma otro offset
*(DWORD*)(puntero1 + 0x78C) = 30; //obtiene los address + offsets y le asigna el valor de [30]
comprobador = true; //una vez que modificamos el valor hacemos que comprobador sea verdadero para saber que el cheat esta activado.

}

if ((comprobador == true) && (killshot == false)) //me dice si el contenido de puntero es distinto a 0 y killshot es falso entonces...
{
DWORD puntero = *(DWORD*)(comienzo + 0x02394B24); //trata de acceder al addres ej: "xxxx.exe"+02394B24
DWORD puntero1 = *(DWORD*)(puntero + 0x414); //suma el valor obtenido en puntero y le suma otro offset
*(DWORD*)(puntero1 + 0x78C) = 1; //obtiene los address + offsets y le asigna el valor de [1]
comprobador = false; //una vez que modificamos el valor hacemos que comprobador sea verdadero para saber que el cheat esta desactivado.

}
}

catch (const std::exception&)
{
        //no me parecio necesario colocar algo en caso de que genere un error
}

}
Sleep(5); //Espera 5 milisegundos
}

void comprobar()
{
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD1) & 0x80000) //si se aprieta numpad_1...
{
killshot = !killshot; //me devuelve el valor contrario de killshot, si es true lo da en false (desactiva y activa el cheat)

}
}
Sleep(5); //Espera 5 milisegundos
}

BOOL WINAPI DllMain(HINSTANCE modulo, DWORD razón, LPVOID reserva)
{
if (razón == DLL_PROCESS_ATTACH)
{
//Estamos dentro del juego
//Thread
//hack();
//comprobar();
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)comprobar, 0, 0, 0);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)hack, 0, 0, 0);

}
else if (razón == DLL_PROCESS_DETACH)
{
//Salimos del juego
}

//Devolvemos al juego
return TRUE;

}
#4
Realmente perdon por mi ignorancia pero tambien intente agregarlo a mi codigo y no me deja ya que no aparece dentro de system :/


   cout<<""<<endl;
   cout<<("Filename:")<<endl;
   system("dhl.dll a -m3 -r -pf -o comprimido.dhl ");
   cout<<""<<endl;
   cout<<""<<endl;
   cout<<"COMPRESSED SUCCESSFULLY!!!"<<endl;
   system("pause");
   system("cls");


lo que quiero hacer es que al lado de comprimido.dhl aparezca el nombre que escriban.

ejemplo: ccleaner.exe,repito... perdon por mi ignorancia es que recien empiezo con c++ y ya se que tendria que empezar con lo basico es que ya programe todo este programa y solo me falta esta ultima parte y lo termino u_u...
perdon.
#5
Esta bien pero no logro incorporarlo al codigo mio intente de muchas formas pero aun no lo logro...

   printf("Filename:");
    std::cin >> buffer;
    system("echo ");
    std::cout << buffer << std::endl;

eso es un ejemplo y no logro que dentro de echo diga lo que escribi en filename :/ (se que no se mucho de c++ empeze hoy xD)
#6
Bueno mi pregunta es la siguiente,como veran eso es un codigo batch... mi problema es que no funciona,pero hoy lo habia hecho funcionar pero perdi el codeo por un apagon y me olvide lo que habia hecho :/
mi pregunta es como puedo hacer desde c++ (un codigo)
para que por ejemplo yo le diga: Resp: (El texto que vos elijas)
y luego en un system("") me de ese mismo texto que habia elegido anteriormente

    system("set /p Respuesta=Resp:");
    system("Resp: %Respuesta%");

Espero que puedan ayudarme ^^
#7
Ingeniería Inversa / Pregunta sobre programacion
19 Febrero 2012, 19:41 PM
Bueno puede que sea una pregunta un tanto tonta... y no se si es el foro correspondiente pero me interesaria saber como crear una dll hack para un juego online... me gustaria que me digan que lenguaje de programacion me combiene estudiar etc... y como hallar los offsets a modificar ^^
ya que los hacks de hoy en dia se basan en dll injection.
los offsets no se pueden encontrar con cheat engine en algunos juegos asi que si pudieran decirme otra menera se los agradeceria... por ejemplo ollydbg ^^
#8
Bueno,esa es la parte que quiero descifrar,asi logro crear Trainers para games...  Igual gracias por tu ayuda :)
#9
Eso que decis ya lo habia hecho,esta explicado en el principio de mi post... pero lo que te sale no es el adress original por que al cerrar y abrir el juego el adress cambia.
#10
Bueno me sucede lo siguiente:

Abro Cheat Engine 5.6.1 + Plants Vs Zombies

Al principio tengo 50 Soles,agarro 1 sol y tengo 75 soles.
Escanenando estos 2 valores me sale el siguiente adress: 1507F470 (El cual cambia al cerrar el juego)

Bueno de ahi voy a la opcion -> "Find out what accesses this address" -> Me salen 2 ventanas con lo siguiente:

Created Process: 0000087C

The following opcodes accessed the selected address:

00420225 - 03 82 78 55 00 00 - add eax,[edx+00005578]
00498195 - 8b 87 78 55 00 00 - mov eax,[edi+00005578]

Elijo el mov y le hago doble click y me salen una serie de datos de los cuales yo copio esto: 15079EF8 ya que cheat engine me dice que posiblemente ese sea el pointer.

voy a scanear denuevo pero esta ves marco hex y coloco: 15079EF8

Me salen muchos adress pero yo elijo el 3ro por que no cambia,el adress seria: 00188E48 + 5578 que seria el valor que me habia dado cheat engine.

voy a add address manually y coloco esos datos,por lo cual noto que si era el pointer de: 1507F470 por que me quedo: P-> 1507F470 4Bytes 75

Luego de ahi todos los precedimientos que hago parecieran que no funcionan... intente con muchos metodos pero no me salieron,ya que al crear el trainer no se modifica el valor de los soles por que el adress de los soles cambia siempre.

probe el metodo que encontre por aca de MHS5 y no me salio.
el metodo que estaba de ollydbg el ollydbg no me muestra una opcion por lo cual no puedo continuar :/

Espero que puedan ayudarme y en el caso de que no puedan igual les agradezco por intentarlo :)