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://www.cheat-gam3.com/tutoriel/tuto-creer-un-cheat-de-z-163096/ )
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 :
<dll><convention><nouveau nom de la dll><cpp><def>
<dll> Ancien nom de la dll originale
<txt> l'export.txt creer juste avant
<convention> Convention d'appel des fonctions
<nouveau nom de la dll> donc le nom (sdl.dll)
<cpp>nom du fichier .cpp generer
<def>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
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
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
Si quelqu un peut me dire pourquoi la syntaxe d'origine ne fonctionne pas ça m'interesse
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 ;)
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://www.cheat-gam3.com/tutoriel/tuto-creer-un-cheat-de-z-163096/ )
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 :
<dll><convention><nouveau nom de la dll><cpp><def>
<dll> Ancien nom de la dll originale
<txt> l'export.txt creer juste avant
<convention> Convention d'appel des fonctions
<nouveau nom de la dll> donc le nom (sdl.dll)
<cpp>nom du fichier .cpp generer
<def>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
Code:
#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
Code:
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
Code:
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
Code:
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 ;)
Attachments
Last edited: