[AYUDA] Ayuda con cheat engine y C++

  • Hola Invitado, hemos creado un grupo de telegram para GamerzHacking Latino, para mas informacion ingresa al siguiente enlace AQUI


1
Me Gusta
1
Temas

Dword

Curioso
Registrado
31 May 2020
Temas
1
Mensajes
7
Mejores respuestas
0
Hola buenas noches a todos! Espero que esten bien ^^

¿Cómo puedo encontrar una dirección modular junto a su offset de una función en CE?

Así es, ya que lo estoy haciendo con assaultCube, si bien en google hay muchas paginas con la dirección modular y su offset ej: (004E4DBC + 0x14C) Funciona

Esta misma me funcionaría de 10, y nunca va a cambiar porque es un puntero.

Si yo encuentro su puntero se me es bastante diferente y no me funciona con el code que tengo en C++ ej: ("ac_client.exe"+000F32F8 + 0x14C) No funciona

A continuación dejaré el código de mi hack basico hecho en C++.

C++:
#include <stdio.h>

#include <Windows.h>



void Hack()

{

    while (1)

    {

        DWORD direccion = *(DWORD*)(0x004E4DBC);

        if (direccion != 0)

        {

            *(DWORD*)(direccion + 0x14C) = 50;

        }

        Sleep(200);

    }

}



BOOL WINAPI DllMain(HINSTANCE module, DWORD reason, LPVOID reserved)

{

    if (reason == DLL_PROCESS_ATTACH)

    {

        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hack, 0, 0, 0);

    }

    else if (reason == DLL_PROCESS_DETACH)

    {



    }



    return true;

}

(ASÍ FUNCIONA PERFECTAMENTE) --------------------------------------------------------------


C++:
#include <stdio.h>

#include <Windows.h>



void Hack()

{

    while (1)

    {

        DWORD direccion = *(DWORD*)("ac_client.exe" + 0x000F32F8);

        if (direccion != 0)

        {

            *(DWORD*)(direccion + 0x14C) = 50;

        }

        Sleep(200);

    }

}



BOOL WINAPI DllMain(HINSTANCE module, DWORD reason, LPVOID reserved)

{

    if (reason == DLL_PROCESS_ATTACH)

    {

        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hack, 0, 0, 0);

    }

    else if (reason == DLL_PROCESS_DETACH)

    {

    }
    return true;

}

(ASÍ NO FUNCIONA Y CRASHEA) --------------------------------------------------------------

Espero su ayuda/consejos.

EDIT: Utiliza las etquetas de CODIGO
 
Última edición por un moderador:


2
Me Gusta
1
Temas

ZwClose

0xD3ADB33F
Registrado
31 May 2020
Temas
1
Mensajes
6
Mejores respuestas
0
Código:
DWORD direccion = *(DWORD*)("ac_client.exe" + 0x000F32F8); <- Error aqui

utiliza algo asi para obtener las address en "internals" (osea cheats/hacks en dlls)

uintptr_t uBase = GetModuleHandle(nullptr);

Concadena asi

*(int*)(uBase+ 0x14C) = 261337;

Tu codigo corregido:

C++:
#include <windows.h>
#include <cstdint>

uintptr_t uBase = GetModuleHandle(nullptr);

void Hack()
{
while (1)
{
    uintptr_t direccion = *(uintptr_t*)(uBase + 0x000F32F8);
    if (direccion)
    {
        *(int*)(uBase + 0x14C) = 261337;
    }
}

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID pReserved)
{
    switch(dwReason)
    {
        case DLL_PROCESS_ATTACH:
            CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hack, nullptr, 0, 0);
        break;
    }

    return TRUE;
}
 
Última edición:
  • Like
Reacciones : c0de y Dword


2
Me Gusta
1
Temas

ZwClose

0xD3ADB33F
Registrado
31 May 2020
Temas
1
Mensajes
6
Mejores respuestas
0
Sigue sin funcionar :/
Para mi funciona bien, Screenshot_1.png


C++:
#include <windows.h>
#include <cstdint>

uintptr_t uBase = (uintptr_t)GetModuleHandle(nullptr);//Conversion de HANDLE a uintptr_t

void Hack()
{
    while (1)
    {
        uintptr_t direccion = *(uintptr_t*)(uBase + 0x000F32F8);
        if (direccion)
        {
            *(int*)(uBase + 0x14C) = 261337;
        }
    }
}

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID pReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hack, nullptr, 0, 0);
        break;
    }

    return TRUE;
}
 


1
Me Gusta
1
Temas

Dword

Curioso
Registrado
31 May 2020
Temas
1
Mensajes
7
Mejores respuestas
0
Código:
DWORD direccion = *(DWORD*)("ac_client.exe" + 0x000F32F8); <- Error aqui

utiliza algo asi para obtener las address en "internals" (osea cheats/hacks en dlls)

std::uintptr_t uBase = GetModuleHandle(nullptr);

Concadena asi

*(int*)(uBase+ 0x14C) = 261337;

Tu codigo corregido:

C++:
#include <windows.h>

std::uintptr_t uBase = GetModuleHandle(nullptr);

void Hack()
{
while (1)
{
    uintptr_t direccion = *(uintptr_t*)(uBase + 0x000F32F8);
    if (direccion != nullptr)
    {
        *(int*)(uBase + 0x14C) = 261337;
    }
}

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID pReserved)
{
    switch(dwReason)
    {
        case DLL_PROCESS_ATTACH:
            CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hack, nullptr, 0, 0);
        break;
    }

    return TRUE;
}
 

Adjuntos

  • error.png
    error.png
    43,8 KB · Visitas: 3


1
Me Gusta
1
Temas

Dword

Curioso
Registrado
31 May 2020
Temas
1
Mensajes
7
Mejores respuestas
0
Copie y pegué, me tira el siguiente error, qué puede ser?
 


2
Me Gusta
1
Temas

ZwClose

0xD3ADB33F
Registrado
31 May 2020
Temas
1
Mensajes
6
Mejores respuestas
0
Copie y pegué, me tira el siguiente error, qué puede ser?
Error mio, quitale el std:: a uintptr_t y el check para ver si la direccion es valida solo cambiala por if(direccion) en vez de (direccion != nullptr), hay te edite el post con las correciones.
 


1
Me Gusta
1
Temas

Dword

Curioso
Registrado
31 May 2020
Temas
1
Mensajes
7
Mejores respuestas
0
Sigue sin funcionar :/
 

Adjuntos

  • second error.png
    second error.png
    36,3 KB · Visitas: 4


1
Me Gusta
1
Temas

Dword

Curioso
Registrado
31 May 2020
Temas
1
Mensajes
7
Mejores respuestas
0
Para mi funciona bien, Ver el archivo adjunto 78


C++:
#include <windows.h>
#include <cstdint>

uintptr_t uBase = (uintptr_t)GetModuleHandle(nullptr);//Conversion de HANDLE a uintptr_t

void Hack()
{
    while (1)
    {
        uintptr_t direccion = *(uintptr_t*)(uBase + 0x000F32F8);
        if (direccion)
        {
            *(int*)(uBase + 0x14C) = 261337;
        }
    }
}

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID pReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hack, nullptr, 0, 0);
        break;
    }

    return TRUE;
}
Gracias me funcionó ^^ Consulta : Cómo hago para agregar más offset's ? Ejemplo: 0x14C, 0x5T9, 0x7UC
 
  • Like
Reacciones : ZwClose


2
Me Gusta
1
Temas

ZwClose

0xD3ADB33F
Registrado
31 May 2020
Temas
1
Mensajes
6
Mejores respuestas
0
Para mi funciona bien, Ver el archivo adjunto 78


C++:
#include <windows.h>
#include <cstdint>

uintptr_t uBase = (uintptr_t)GetModuleHandle(nullptr);//Conversion de HANDLE a uintptr_t

void Hack()
{
    while (1)
    {
        uintptr_t direccion = *(uintptr_t*)(uBase + 0x000F32F8);
        if (direccion)
        {
            *(int*)(uBase + 0x14C) = 261337;
        }
    }
}

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID pReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hack, nullptr, 0, 0);
        break;
    }

    return TRUE;
}

Hay varias formas, aqui te las dejo. (aclarar que no son todas, hay mejores ya las iras aprendiendo cuando le dediques mas tiempo)

C++:
/*No Recomendada*/
uintptr_t uBase = (uintptr_t)GetModuleHandle(nullptr);
auto pSpeedHack = *(float)*(*(uintptr_t*)(uBase + 0xD3ADB33F)+0x3C)+0x5B);//etc...

/*Algo tediosa pero es rapida...*/
uintptr_t uBase = (uintptr_t)GetModuleHandle(nullptr);
uintptr_t pLocalPlayer = reinterpret_cast<uintptr_t*>(*uBase+0xD3ADB33F);
int pHealth = *reinterpret_cast<int*>(*pLocalPlayer+0x26);

/*No recomendada del todo, es algo lenta y no es buena practica almacenar offsets
en std::vectors pero es sencilla y portable*/

//funcion
uintptr_t FindDMAAddy(uintptr_t ptr, std::vector<unsigned int> offsets)//Creditos GuidedHacking - Rake
{
    uintptr_t addr = ptr;
    for (unsigned int i = 0; i < offsets.size() ; ++i)
    {
        addr = *(uintptr_t*)addr;
        addr += offsets[i];
    }
    return addr;
}

//Se usa de la sigiente forma ->
uintptr_t uBase = (uintptr_t)GetModuleHandle(nullptr);
FindDMAAddy(uBase + 0xD3ADB33F, {0x0, 0x26, 0xB33F});
 


1
Me Gusta
1
Temas

Dword

Curioso
Registrado
31 May 2020
Temas
1
Mensajes
7
Mejores respuestas
0
Puedes hacerme un ejemplo agregando offsets con el code que trabajaste más arriba? ^^
 


2
Me Gusta
1
Temas

ZwClose

0xD3ADB33F
Registrado
31 May 2020
Temas
1
Mensajes
6
Mejores respuestas
0
Puedes hacerme un ejemplo agregando offsets con el code que trabajaste más arriba? ^^
Estan agreados, 0xD3ADB33F es la address y lo demas 0x26 etc son los offsets.
PS: Son 3 formas diferentes.
 

Adjuntos

  • Screenshot_1.png
    Screenshot_1.png
    36,9 KB · Visitas: 3


1
Me Gusta
1
Temas

Dword

Curioso
Registrado
31 May 2020
Temas
1
Mensajes
7
Mejores respuestas
0
No sé porque motivo en el counter strike 1.6 me crashea al inyectar la dll, y en el assaulCube anda perfecto.