Ir para conteúdo
Faça parte da equipe! (2024) ×

[Source & Tutorial] Anti - Debugger


anonimo555
 Compartilhar

Posts Recomendados

Bom muitos que eu conheço que possuem servidores de jogos online se preocupam muito com a segurança do mesmo, Anti-Cheater, Anti - UDP Flood.

Aposto que todos gostariam de evitar isso facilmente, oquê vou tentar ensinar hoje é a criar uma DLL Anti - Debugger, ja vou dizendo que existem Plugins para debuggers que burlam muitos tipos de técnicas, porém nesse tutorial vou colocar só o básico, se você quiser inovar no código use o Google e sua criatividade para criar novas técnicas.

 

Primeiramente, para seguir esse tutorial você deve ter um conhecimento básico em C++, um conhecimento no nível que você possa criar uma DLL Hook.

 

ferramentas necessárias para o tutorial :

 

Uma IDE C++ ou só um compilador ;

Um cérebro ( o mais importante de todos ).

 

----------------------------------------------------------------------------------------

 

Vamos começar ...

 

Bom vamos ao principio , o esqueleto básico de uma DLL :

 

É necessário se cadastrar para acessar o conteúdo.

 

Bom, não vou explicar tudo que vou postar, por esse motivo avisei que necessita de um pouco de conhecimento em montagem de DLL, mais primeiramente ao compilar esta Source, a função DllMain vai ser o Entry Point do programa, ou seja, por onde começa a execução dela, óbvio, ao ser injetada por algum processo.

 

Quando a DLL é injetada à algum processo, sempre tem uma razão, ou seja, o Processo injetou a DLL xxx pela razão numero 1 ( DLL_PROCESS_ATTACH ), se caso a razão for 1 ... tem essa condição no código :

 

É necessário se cadastrar para acessar o conteúdo.

 

Então ao executar o Entry Point da DLL ele vai fazer essa comparação, vai checar se a razão é 1 ( DLL_PROCESS_ATTACH ), caso seja, executara um bloco de código dentro dos { / } .

 

Bom a idéia é monitorar o processo, ou seja, criar um Thread com um while infinito, que checará se algum debugger está ativo, então vamos começar.

 

Primeiramente nós precisamos criar a função para detectar um debugger, uma bem básica, ai está ela :

 

É necessário se cadastrar para acessar o conteúdo.

 

Bom primeiramente declaramos o valor de retorno dessa função, como do tipo boolean ( falso ou positivo ), a função vai funcionar desse modo :

 

Se a função IsDebuggerPresent detectar um debugger, o valor de retorno da função será true, caso não detecte o valor retornado será false .

 

E Agora vamos criar outra função que terá o objetivo de fechar o jogo, ela será somente chamada quando um debugger for encontrado :

 

É necessário se cadastrar para acessar o conteúdo.

 

A idéia da função CloseGame é a seguinte :

 

Obter o Exit Code através da função GetExitCodeProcess, a função GetExitCodeProcess recebe dois parâmetros, primeiro a Handle do Processo, que caso a DLL ja esteja injetada em algum processo, podemos usar a função GetCurrentProcess, que retornará a handle, segundo parâmetro pede o ponteiro para uma váriavel que receberá o ExitCode, então nesse caso, apontamos para nossa váriavel criada ExitCode do tipo DWORD ( unsigned long ).

 

E Depois chamamos a função ExitProcess que necessita do ExitCode para funcionar, então como já pegamos o ExitCode apenas colocamos o primeiro e único parâmetro dela apontando para nossa váriavel ExitCode.

 

Logo após a execução desse bloco de instruções o jogo será fechado, então nossa função já está pronta, vamos continuar .

 

Agora vamos criar a função com um while infinito, que chamará a função DebuggerOn, se o valor retornado é positivo executamos a função CloseGame, segue o código :

 

É necessário se cadastrar para acessar o conteúdo.

 

Ok, criamos a função agora está tudo certo, só falta iniciar a função MainThread, vamos criar um Thread caso a razão seja 1 ( DLL_PROCESS_ATTACH ), apenas adicione esse bloco de código dentro do if que está localizado na função DllMain :

 

 

É necessário se cadastrar para acessar o conteúdo.

 

Bom então está completo, compile seu projete e injete-o em seu executável, pode ser jogo ou aplicativo normal, você poderá adicionar novos métodos de detectar um debugger.

 

Source Completa :

 

É necessário se cadastrar para acessar o conteúdo.

 

Espero estar ajudando, desculpe por erros de escrita, ou se não expliquei direito.

 

Créditos : Somente eu.

 

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.