Posté par : Visiteur - 27-01-2013, 01:55 - Forum : C++
- Réponses (10)
I. Préambule/Licence
Ce tutoriel est sous licence CC-by-sa disponible <a class="bbc_url" href="http://creativecommons.org/licenses/by-sa/2.0/fr/legalcode">ici</a>.
Vous êtes donc libre :
de partager — reproduire, distribuer et communiquer l’œuvre
de remixer — modifier l’œuvre
d’utiliser cette œuvre à des fins commerciales
Selon les conditions suivantes :
Paternité — Vous devez attribuer l’œuvre de la manière indiquée par l’auteur de l’œuvre ou le titulaire des droits (mais pas d’une manière qui suggérerait qu’ils vous soutiennent ou approuvent votre utilisation de l’œuvre).
Partage à l’Identique — Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de distribuer votre création que sous un contrat identique ou similaire à celui-ci.
II. Introduction
Bonjours, dans ce tutoriel, nous allons voir comment créer un « color aimbot ». Il est à but universel, c’est à dire qu’il peut être adapté facilement pour de nombreux jeux, des programmes extérieurs, des macros, tout ce qui vous passe par la tête … Moi, je l’ai codé pour une sorte de Guitare Hero, puis je l’ai adapté pour pleins d’autres choses. Il faut savoir que ce système est relativement lent et vachement gourmand.
Plusieurs pré-requis sont nécessaire pour suivre ce tutoriel qui ne seront pas abordés ici :
Savoir programmer dans un langage
Avoir des connaissances (basiques) sur l’API Windows
Pour approfondir : Avoir des connaissances (avancées) sur l’API Windows
Pour approfondir : Savoir utiliser des threads
Pour cela, nous allons utiliser plusieurs techniques :
Récupérer la couleur d’un pixel sur l’écran.
Modifier la position de la souris
III. Préparer le programme ciblé
Avant tout, il est nécessaire de préparer le programme sur lequel on va chercher à mettre notre Aimbot.
Dans la plupart des programmes, à l’aide d’une impression écran, on peut obtenir la couleur des pixels que l’on recherche, ces pixels vont toujours garder exactement la même couleur.
Dans certains jeux (Par exemple Counter Strike : Source, ou n’importe quel FPS), on ne peut pas chercher de cette manière : la couleur change si l’objet est à la lumière ou à l’ombre, il va falloir mettre un Skin sur la cible pour qu’elle ait une couleur bien spécifique (de préférence un bon gros vert, rouge ou bleu qui sont rarement observable dans le jeu).
Exemple pour Counter Strike : Source : <a class="bbc_url" href="http://games.softpedia.com/get/Cheat-Solutions/Counter-Strike-Source-Supreme-Colored-Models.shtml">http://games.softpedia.com/get/Cheat-Solutions/…</a>
IV. Mais comment scanner les pixels ?
Hé oui, il existe plusieurs manière de scanner, enfin, j’entends par la plusieurs manière de choisir quel pixel on scanne, dans quel ordre on va scanner les pixels.
La bourrin:
On scanne les pixels en partant de celui tout en haut à droite jusqu’à celui tout en bas à gauche. C’est lent en pratique, mais vachement facile à coder.
C’est surement la première méthode à laquelle on pense, c’est la meilleure pour certains softs statiques :
La FPS:
On part du point au centre de l’écran, puis on scanne tous les pixels autour du point au centre. C’est un poil plus dur à coder, puisqu’il faut faire tourner le sens de scan.
Cette technique est bien pour les FPS, puisque la cible à tendance à se placer au centre de l’écran, sur le viseur, si on veut la tuer, mais elle va demander un mouvement particulier de la souris (qui doit partir du centre et pas trop bouger pour pas faire un 180°) :
La tracking :
Le point se déplace, donc on va chercher autour du dernier point détecté afin de trouver vers où il s’est déplacé (à la manière du FPS). Si l’on ne trouve rien, on peut repartir vers un scanner classique.
Cette technique est la plus compliquée à appliquer, puisque elle nécessite un mélange de toutes les techniques précédentes.
V. Couleur exacte ou approchée ?
On peut comparer les couleurs de plusieurs manières :
La manière exacte :
Si la couleur ne change pas, c’est le mieux.
On compare les taux de couleur RGB du pixel, à la valeur de référence, si c’est le même on a gagné, sinon, on continue.
La manière approchée :
On prend le taux de couleur RGB du pixel, si il est proche de la valeur de référence, on a gagné, sinon, on continue à scanner :
On récupère le taux de rouge, et s’il est dans une certaine fourchette de valeur, on continue, de même pour le vert et le bleu.
VI. Scanner
La fonction que l’on va utiliser est la suivante (MSDN powa) :
Code :
COLORREF GetPixel(
__in HDC hdc, //Pour HandleDeviceContext
__in int nXPos,//Position en X
__in int nYPos //Position en Y
);
La fonction renvoie un COLORREF qui contiendra des infos RGB sur notre pixel.
Pour la petite info : Le COLORREF est un double word (32 bits) de type 0x 00 bb vv rr
Le byte de poids fort (à gauche) sont toujours 0×00 (en théorie, mais nous, on va pas respecter cela). Les autres bytes de poids plus faible sont compris entre 0×00 (0) et 0xFF (255) et correspondent au taux de rouge, vert et bleu.
La fonction prends en entré un HandleDeviceContext, je passe l’explication théorique : c’est un identifiant nécessaire pour pouvoir dessiner sur windows. Le mieux est de prendre celui de votre fenêtre mais GetDC(NULL) ou GetDC(HWND_DESKTOP) marche pour la grande majorité des cas.
Sum up :
Code :
HDC hdc = GetDC(HWND_DESKTOP);
COLORREF pixel;
pixel = GetPixel(hdc, 100, 125);
Bon, c’est bien beau ça, mais on veux les 3 scanners :
Le brutal est le plus facile : Une double boucle :
Code :
Int x, y;
for (int x = 0; x < 1024; x++)
{
for (int y = 0; y < 768; y++)
{
Pixel = GetPixel(hdc, x, y);
//La suite ICI
}
}
1024 et 768 sont la résolution de l’écran, mais vous pouvez l’adapter.
(0,0) est le point départ du scan : à adapter en fonction des besoins.
La FPS est déjà un poil plus dur :
Il va falloir stocker dans quel sens on se déplace pour scanner (on tourne), et de combien de pixel il faut continuer de scanner dans la même direction.
C’est une repris du précédent en changeant le centre :
Code :
//hors de la boucle principale : int lastPosX=512, lastPosY=384;
int pToScan=0, pStill=0;
char sens=0;
int curPosX=lastPosX,curPosY=lastPosY;
bool b=0;
while(pToScan <=1024)
{
for(pStill=0; pStill 0 && 0 && curPosY<768)
{
pixel = GetPixel(hdc, curPosX, curPosY);
lastPosX=curPosX;
lastPosY=curPosY;
//La suite ICI
}
}
pStill = 0;
sens++;
if(
{
pToScan++;
b= !b;
}
//merde, on a rien trouvé, on peut repasser en scan normal, ou mettre le dernier point vu au milieu.
if(pixel==0xFF000000)
{
lastPosX=curPosX;
lastPosY=curPosY;
/*
int x, y;
for (int x = 0; x < 1024; x++)
{
for (int y = 0; y < 768; y++)
{
pixel = GetPixel(hdc, x, y);
lastPosX=curPosX;
lastPosY=curPosY;
//La suite ICI
}
}
*/
pixel=0xFF000000;
}
Pixel = 0xFF000000 : Ce cas est IMPOSSIBLE si l’on essaye de récupérer la couleur d’un pixel (voir plus haut), c’est pourquoi on l’utilise pour vérifier si on a trouvé quelque chose, ou pas.
VII. Comparer la couleur
Méthode exacte :
Code :
if(pixel ==(rgb( 255,0,100)) //Taux de rouge(255), de vert(0) et de bleu(100) dans l’ordre
Mais la méthode plus intéressante est la suivante.
Utiliser une plage de valeur de comparaison :
On récupère le taux de Rouge, de vert et de bleu et on les compare : Dans le cas où on veut isoler un objet rouge.
Code :
int rouge = GetRValue(pixel), vert = GetGValue(pixel), bleu = GetBValue(pixel);
if(rouge > 240 && (vert + bleu) < 120) //j’ai fait une somme, mais vous pouvez faire comme vous voulez
{
//La suite ICI
}
VIII. Téléportation
Maintenant, on déplace le curseur, c’est mieux pour faire un aimbot :
en C++ c’est tout con, mais après, ça dépend du langage choisi :
Code :
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);
Attention, cette technique est dès fois impossible si le jeu possède des protections, il faut alors directement envoyer l’évènement à l’API windows à l’aide de « SendInput() ».
IX. Conclusion
Encore une fois, ce n’était pas compliqué. Tout le monde va pouvoir faire du 100% sur Guitare Hero maintenant. Maintenant, faites le color aimbot qui VOUS ressemble. Merci de votre lecture.
<p class="bbc_center">/!\ Ce tutoriel peux contenir des erreurs, contactez l’auteur par MP pour les corrections /!\
std::cout << "eHop External Orange Box Bunnyhop Tool by Lagunka and tflo" << std::endl;
std::cout << "Waiting for hl2.exe..." << std::endl;
worker.Initialize();//Searches for hl2.exe
std::cout << "hl2.exe found. Waiting for game window..." << std::endl;
offset addrs;//Creates a struct object for storing offsets and game name
findGame(addrs);//Searches for a source game window
bhopLoop(addrs);//Main loop for bhopping
std::cout << "Lost game window, now exiting..." << std::endl;//Game was closed
Sleep(2000);
delete [] addrs.gameName;//Free the memory allocated for the dynamic array
return 0;
}
//Reads the process memory to see if the client is on ground
//Because the values can start becoming other than 0 and 1 (3 and 4 for example) some fixes were applied
bool onGround(offset addrs)
{
if(grounded > grmax)//Stores the max value of the address
grmax = grounded;
while(grmax - 1 > grounded)//If max value is more than 1 more of the min value, it lowers it to be 1 more again
grmax -= 1;
ReadProcessMemory(worker.hProcess, (LPVOID)(worker.dwClient+addrs.ON_GROUND), &grounded, sizeof(grounded), 0);//reads the process memory and stores the value to grounded
if(grounded == grmax)
timestart = time(NULL);
else
timestart = 0.0;
return grounded == grmax;//returns true if grounded is at it's max, false if not.
//Function that loops and checks if the user is holding space
void bhopLoop(const offset &addrs)
{
std::cout << "The tool is now active, use the \'delete\' key to toggle through settings\n\nIMPORTANT: Leave this window open while the tool is in use." << std::endl;
int bhop_enable = 1;//bhop enable defaults to perfect
int space = 0;
int button_pressed = 0;//Variable so that button has to be pressed and released to pass
srand(time(NULL));//Seed the random number generator
int interval = 0;
std::cout << "\n\nIf you suffer performance issues, use the 'page up' key to slow the scan time.\n";
std::cout << "Current setting: Perfect Bhop with no delay in scan time" << std::endl;
Posté par : kobz92 - 25-01-2013, 21:27 - Forum : Café
- Réponses (6)
Salut tout le monde, vous vous rappelez surement de la team GSK² connue sur css pour leur nombreux hack serveur et cheat, mais aussi pour leur hack sur un forum non officiel de la gendarmerie, un site d'un député et aussi des menaces de hack sur une émission télévisé.
Je me suis demander qu'es ce qu'il l'aurait est arrivé.
Sachant qu'il y en a 3 qui ont était attraper par la police.
Goru Sécurity Klan ² avait un forum où il faisait payer les gens pour y rentré. Et maintenant depuis c'est fermé... une bonne escrocrie !
Bonjour j'aimerais modifier les couleurs de la console css , mais j'arrive plus pace que au début il y avais un logiciel que j'ai perdu mais sinon c'est toujours possible ?
Bonjour à tous ! ... Est'il possible de créer d'autres hacks ? genre un wallhack externe (indetectable biensur) différent ou on voit les joueurs normaux sans les textures bleues ?.
Ou tout bonnement créer d'autres cheats que le wallhack, speedhack et bunnyJump ?...
Le cheat VIP en devellopement comme toujours, malgré les problèmes auquel je fais fasse j'espère pouvoir sortir une version beta au plus vite
- Nouveauté dans la barre verticale de gauche comme vous avez put le voir un onglet "Tutoriels" qui ne contient rien pour le moment
Je suis entrain de vous confectionner une suite de divers tutos edit video / programmation de cheat / mapping / skinning etc..
Tuto écrit et vidéo !
Pour la dernière petite info, le forum etait innacessible et ce dut a un bug du fichier index.php qui n'était plus accessible a personne.
Tout ca pour dire que tout est revenu a la normale l'erreur n'aura pas duré longtemps
Autre info le forum souffre de léger spammeur/tentative de hack par certains membre, rien de bien méchant mais quand un nouveau post ce fait avec un membre n'ayant que très peu de message au compteur et avec des titre du genre "Full cheat gratuit / free hack undetected vac" merci de faire attention a vous ! Moi et l'équipe des modérateurs supprimons aussi vite que possible mais on ne peut pas être toujours la <img src='http://cs-hackers.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt='' />
Sur ce bonne fin de mois <img src='http://cs-hackers.com/forum/public/style_emoticons/<#EMO_DIR#>/happy.png' class='bbc_emoticon' alt='^_^' />