Sign in to follow this  
mdperdu

Creation d'une DLL-Proxy pour Cheat / hack

2 posts in this topic

Infos :

Ceci est l'adaptation en partie du tuto de Thiesius de Elitepvp

Sur la creation d'un cheat sous forme de dll

 

 

Let's go .....

 

Pour ce Tuto je continue d'utiliser Rumerstrike

(déjà utiliser pour ce tuto --> http://over-game.eu/apprentissage-de-creation-de-hacks-bots-et-tools/41739-tuto-creer-un-cheat-de-z.html )

 

1] THEORIE

 

Le principe de la DLL-proxy est de se placer entre le programme cible

(jeu , logiciel ect ...) et la vrai DLL

Le programme charge la dll et dans celle ci il y a notre code en plus d'un pont

vers les fonctions de la vrai dll

 

Pour Romustrike j'ai opté pour la SDL.DLL (pour plus tard je veux bidouiller les fonctions graphiques)

 

 

Je ne maitrise pas encore tres bien les meandres du C++ il y a certaine partie (comme celle ci ) qui vont etre tres .... light ;)

 

Pour creer le la dll il nous faut toutes les infos de l'originale

Pour les exports on utilise un wrapper qui vas faire ca pour nous

( en piece jointe )

 

2] CREATION DE LA DLL-PROXY

 

Copiez dans votre repertoire de travail la dll qui se trouve dans le jeu

Monrep\SDL.dll

 

Etape 1:

On recupere la liste des export grace a visual studio

Demarer/Tout les programmes/Microsoft Visual Studio xxxx/Visual Studio Tools/Visual Studio Command Prompt (xxxx).

(ouverture d'une console Dos)

 

Etape 2:

Changer de repertoire pour arriver dans votre repertoire de travail

Tapez la commande suivante :

DUMPBIN /EXPORTS SDL.dll > EXPORTS.txt

 

Par curiosité regardez dans le fichier exports.txt vous avez toutes les fonction de la dll ;)

 

 

Etape 3:

Renommer la dll originale ex : SDL_.DLL

 

 

 

Etape 4:

On est pret pour utiliser le wrapper . La syntaxe est la suivante :

Ancien nom de la dll originale

l'export.txt creer juste avant

Convention d'appel des fonctions

donc le nom (sdl.dll)

nom du fichier .cpp generer

nom du fichier .def generer

 

La commande : wrappit.exe SDL.dll EXPORTS.txt __stdcall SDL_.dll sdl.cpp Exports_Def.def

 

(perso sa fini en erreur il ne trouve pas le fichier sdl.cpp.obj mais ca ne gene pas )

 

Etape 5:

Le repertoire contient 2 nouveaux fichier : SDL.cpp and Exports_Def.def

 

Felicitation le squelette de la DLL est cree ;)

 

3] CREATION DU CHEAT/HACK/MENU

 

1] Le projet

 

Dans visual studio (express fonctionne aussi) creer une dll vide et ajoutez le code source SDL.cpp

Faite un clic droit sur votre projet et propriétés

Proprietes de configuration>general>Jeu de caracteres>caractere multioctet

 

Proprietes de configuration>Editeur de liens>entrée>Fichier de definition de module> Entrez : Exports_Def.def

 

Sauvez et fermez

 

>
#include <windows.h>
#pragma pack(1)


HINSTANCE hLThis = 0;
HINSTANCE hL = 0;
FARPROC p[202] = {0};

BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID)
{
if (reason == DLL_PROCESS_ATTACH)
	{
	hLThis = hInst;
	hL = LoadLibrary("SDL_.dll");
	if (!hL) return false;


	p[0] = GetProcAddress(hL,"SDL_AddTimer");
	p[1] = GetProcAddress(hL,"SDL_AllocRW");
	p[2] = GetProcAddress(hL,"SDL_AudioDriverName");
	p[3] = GetProcAddress(hL,"SDL_AudioInit");
	p[4] = GetProcAddress(hL,"SDL_AudioQuit");
	p[5] = GetProcAddress(hL,"SDL_BuildAudioCVT");
	p[6] = GetProcAddress(hL,"SDL_CDClose");
	p[7] = GetProcAddress(hL,"SDL_CDEject");
	p[8] = GetProcAddress(hL,"SDL_CDName");
	p[9] = GetProcAddress(hL,"SDL_CDNumDrives");
	p[10] = GetProcAddress(hL,"SDL_CDOpen");
	p[11] = GetProcAddress(hL,"SDL_CDPause");
	p[12] = GetProcAddress(hL,"SDL_CDPlay");
	p[13] = GetProcAddress(hL,"SDL_CDPlayTracks");

 

le source généré charge la dll d origine et récupère toutes les adresses de fonction pour pouvoir faire le pont correctement

 

C'est a cet endroit qu on vas creer un autre thread pour activer notre cheat

 

je ne connais pas encore bien cette partie (la creation du thread et les attibut de securité)

 

Dans le principe c est assez claire

Si la dll d origine est bien chargée on creer le thread qui commence

par la routine declarer dans le createthread

ici CheatMain

 

 

>
void CheatMain()
{
Sleep(10000); // 10 seconde d'attente
CommandComm(); // Creation de la console
SetConsoleTitleA("Proxy-dll v0.01"); // Change le titre de la console
Menu(); // affiche le menu .help 
CommandHandler(); // la gestion des commandes 
}

 

C est l'initialisation du cheat

La pause de 10 secondes est la pour eviter une détection du jeux apparemment dans le sujet initial

 

CommandComm() creer la console

Menu() affiche les commandes dispo

CommandHandler() c est la boucle principal qui attend les commandes

 

>
void CommandHandler()   // la boucle principale qui vas attendre les commandes
{
while(true) // Ma boucle principale
{
	char chCommand[255]={0}; // Ma variable qui vas stocké les commandes claviers

	scanf("%s", &chCommand); // Attente l'entré clavier et stock le resultat dans chCommand (maxi 254 caracteres .... ca vas la pire de commande passe  )
    // pour les pro du C++ la ligne d origine c est scanf_s("%s%*c", &chCommand);  mais sa fait planter le prog , j ai tester plusieur syntaxe sans resultats
	// visual c++ emet un warning avec les scanf mais ca passe pour ce que j en fait


	if (strcmp ( chCommand , ".Cmd01" ) == 0) // si la chaine contenu dans chCommand est eqale a .Cmd01 alors j execute les commandes dans les accolades
	{

		printf_s("Message recu OK: .Cmd01 ");
		printf_s("\nEnter Command: ");
	}

	if (strcmp ( chCommand , ".Cmd02" ) == 0) // idem dessus
	{
           printf_s("Message recu OK: .Cmd02 ");
		printf_s("\nEnter Command: ");

	}

	if (strcmp ( chCommand , ".Help" ) == 0) // idem dessus
	{
		printf_s("\n");
		Menu(); // appel du menu d'affichage de la liste des commandes
	}
}
}

 

 

 

Si quelqu un peut me dire pourquoi la syntaxe d'origine ne fonctionne pas ça m'interesse

 

>scanf_s("%s%*c", &chCommand);

 

Vous compilez tout ca et c'est bon !!!

Copiez la dll dans le repertoire du jeux sous le nom SDL.dll

 

Lancez romustrike et au bout de 10 secondes la console s ouvre ;)

 

ci-joint le projet et le wrapper ;)

 

prochaine étape le cheat par lui meme , peut etre un menu dans le jeux ;)

 

Infos sup :

 

J'ai volontairement reduit le tuto d'origine a cette partie pour l'instant

Je n ai pas encore tester le reste .

 

pour l export des fonction il y a des truc pas mal ici :

 

http://sourcesecure.net/2011/03/dll-redirection-tutorial/

http://www.codeguru.com/cpp/g-m/directx/directx8/article.php/c11453/Intercept-Calls-to-DirectX-with-a-Proxy-DLL.htm

 

et le sujet sur le quel je m appuis

 

http://www.elit******.com/forum/kal-hacks-bots-cheats-exploits/486196-tutorial-creating-simple-dll-cheat-hack.html

 

Fichier joint

Free - Envoyez vos documents

Edited by mdperdu
Maj du lien

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this