UnrealSkill-VIP
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Bypass proteção "anti-tampering" ou "anti-cheat"

Ir para baixo

Bypass proteção "anti-tampering" ou "anti-cheat" Empty Bypass proteção "anti-tampering" ou "anti-cheat"

Mensagem por uNreal 19/7/2024, 01:12

O jogo trava quando você tenta alterar um valor de um endereço no Cheat Engine porque o jogo está usando uma técnica de proteção chamada "anti-tampering" ou "anti-cheat". Essa técnica detecta quando alguém está tentando modificar o estado do jogo de forma não autorizada e trava o jogo para evitar que o jogador continue a trapacear.
Existem algumas formas de contornar essa proteção, mas é importante notar que elas podem ser complexas e requerem conhecimento avançado de programação e engenharia reversa. Aqui vão algumas sugestões:
  1. Encontre o endereço correto: Certifique-se de que você está alterando o endereço correto. Use o Cheat Engine para encontrar o endereço que você deseja alterar e certifique-se de que ele é o correto.
  2. Use uma técnica de escrita mais segura: Em vez de usar a função
    Código:
    WriteProcessMemory
    do Cheat Engine, tente usar uma técnica de escrita mais segura, como a função
    Código:
    VirtualProtect
    do Windows API. Isso pode ajudar a evitar que o jogo detecte a alteração.
  3. Use um hook: Em vez de alterar o valor diretamente, tente criar um hook para a função que acessa o valor. Isso permite que você altere o valor sem que o jogo detecte a alteração.
  4. Use uma técnica de obfuscação: Tente obfuscar o código que altera o valor para que o jogo não possa detectar a alteração.

Aqui vai um exemplo de código em C++ que cria um hook para a função
Código:
ReadProcessMemory
e altera o valor de um endereço:
Código:
#include <Windows.h>
#include <iostream>

// Função original que vamos hookar
DWORD WINAPI ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesRead);

// Função hookada que vamos criar
DWORD WINAPI MyReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesRead)
{
    // Verificar se o endereço é o que queremos alterar
    if (lpBaseAddress == (LPCVOID)0x12345678) // Endereço que queremos alterar
    {
        // Alterar o valor
        *(DWORD*)lpBuffer = 0x12345678; // Valor que queremos alterar
        return 1; // Retornar sucesso
    }
    else
    {
        // Chamar a função original
        return ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);
    }
}

int main()
{
    // Criar um hook para a função ReadProcessMemory
    HANDLE hModule = GetModuleHandle("kernel32.dll");
    FARPROC pOriginalFunction = GetProcAddress(hModule, "ReadProcessMemory");
    DetourTransactionBegin();
    DetourUpdateThread(GetCurrentThread());
    DetourAttach(&(PVOID&)pOriginalFunction, MyReadProcessMemory);
    DetourTransactionCommit();

    // Fechar o hook quando terminar
    DetourTransactionBegin();
    DetourUpdateThread(GetCurrentThread());
    DetourDetach(&(PVOID&)pOriginalFunction, MyReadProcessMemory);
    DetourTransactionCommit();

    return 0;
}
uNreal
uNreal
ADM
ADM


uNreal gosta desta mensagem

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos