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 :
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 :
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) :
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 :
Bon, c’est bien beau ça, mais on veux les 3 scanners :
Le brutal est le plus facile : Une double boucle :
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.
Une petite phase d’algo, une !
Et enfin la tracking :
C’est une repris du précédent en changeant le centre :
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 :
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.
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 :
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 /!\
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
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
- Récupérer la couleur d’un pixel sur l’écran.
- Modifier la position de la souris
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
);
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);
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
}
}
(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.
Une petite phase d’algo, une !
Code :
int pToScan=0, pStill=0;
char sens=0;
int curPosX=384,curPosY=512;
bool b=0;
while(pToScan <=1024)
{
for(pStill=0; pStill 0 && curPosX0 && curPosY<1024)
{
pixel = GetPixel(hdc, curPosX, curPosY);
//La suite ICI
}
}
sens++;
pStill = 0;
if(
{
pToScan++;
b= !b;
}
}
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;
}
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
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
}
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);
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 /!\