<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Cs-Hackers - Tutoriels]]></title>
		<link>https://forum.cs-hackers.com/</link>
		<description><![CDATA[Cs-Hackers - https://forum.cs-hackers.com]]></description>
		<pubDate>Sat, 23 May 2026 08:42:24 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Cours de C Cpp]]></title>
			<link>https://forum.cs-hackers.com/showthread.php?tid=5742</link>
			<pubDate>Tue, 19 May 2020 08:09:59 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.cs-hackers.com/member.php?action=profile&uid=58610">xddj</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.cs-hackers.com/showthread.php?tid=5742</guid>
			<description><![CDATA[Voici un cours pour ceux qui désireraient apprendre le C/c++<br />
<a href="https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/le-debut-du-voyage/" target="_blank" rel="noopener" class="mycode_url">https://zestedesavoir.com/tutoriels/822/...du-voyage/</a>]]></description>
			<content:encoded><![CDATA[Voici un cours pour ceux qui désireraient apprendre le C/c++<br />
<a href="https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/le-debut-du-voyage/" target="_blank" rel="noopener" class="mycode_url">https://zestedesavoir.com/tutoriels/822/...du-voyage/</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[+1000 Tutoriel sur le hacking en général]]></title>
			<link>https://forum.cs-hackers.com/showthread.php?tid=5317</link>
			<pubDate>Mon, 05 Aug 2019 15:55:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.cs-hackers.com/member.php?action=profile&uid=62055">PixelHeart</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.cs-hackers.com/showthread.php?tid=5317</guid>
			<description><![CDATA[J'ai pu voir que beaucoup de monde s'intéresser au milieu du hacking, alors voilà je release un dossier que j'ai sur mon PC depuis un sacré moment qui au départ était un peu " private " puis il a tourner un peu partout alors je vais release ça a mon tour ^^<br />
<br />
Il y a de tous donc du legal et du plus ou moin, je suis en aucun cas responsable de ce que vous en ferais.<br />
<br />
PS : Il n'y a pas de credits étant donner que c'était un " Open Source ".<br />
<br />
<br />
<a href="https://www.virustotal.com/gui/file/5213a77d8f1314316399e624220278f104dab32ca6893651fb17ae044d998b91/detection" target="_blank" rel="noopener" class="mycode_url">https://www.virustotal.com/gui/file/5213.../detection</a><br /><!-- start: postbit_attachments_attachment -->
<div style="background-color: #161616;padding: 5px 10px;">
	
<br /><!-- start: attachment_icon -->
<img src="https://forum.cs-hackers.com/images/attachtypes/zip.png" title="Rar" border="0" alt=".rar" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a class="attachembed" href="attachment.php?aid=774" target="_blank" title="">TutoHack.rar</a><br><i> (Taille : 2.74 Mo / Téléchargements : 152)</i> </div>
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[J'ai pu voir que beaucoup de monde s'intéresser au milieu du hacking, alors voilà je release un dossier que j'ai sur mon PC depuis un sacré moment qui au départ était un peu " private " puis il a tourner un peu partout alors je vais release ça a mon tour ^^<br />
<br />
Il y a de tous donc du legal et du plus ou moin, je suis en aucun cas responsable de ce que vous en ferais.<br />
<br />
PS : Il n'y a pas de credits étant donner que c'était un " Open Source ".<br />
<br />
<br />
<a href="https://www.virustotal.com/gui/file/5213a77d8f1314316399e624220278f104dab32ca6893651fb17ae044d998b91/detection" target="_blank" rel="noopener" class="mycode_url">https://www.virustotal.com/gui/file/5213.../detection</a><br /><!-- start: postbit_attachments_attachment -->
<div style="background-color: #161616;padding: 5px 10px;">
	
<br /><!-- start: attachment_icon -->
<img src="https://forum.cs-hackers.com/images/attachtypes/zip.png" title="Rar" border="0" alt=".rar" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a class="attachembed" href="attachment.php?aid=774" target="_blank" title="">TutoHack.rar</a><br><i> (Taille : 2.74 Mo / Téléchargements : 152)</i> </div>
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[LANGAGE C] - Apprendre ce langage série vidéos !]]></title>
			<link>https://forum.cs-hackers.com/showthread.php?tid=3059</link>
			<pubDate>Fri, 28 Jul 2017 08:51:01 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.cs-hackers.com/member.php?action=profile&uid=55015">m4dzfr1337</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.cs-hackers.com/showthread.php?tid=3059</guid>
			<description><![CDATA[Bonjour, souhaitez vous apprendre le langage C, python, java, C++, php, html5, css3, architecture système ? hacking !!! ?<br />
allez faire un tour sur la chaine YouTube FormationVidéo !<br />
<br />
Ceci est un playlist :  <iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/90hGCMC3Chc" frameborder="0" allowfullscreen="true"></iframe>]]></description>
			<content:encoded><![CDATA[Bonjour, souhaitez vous apprendre le langage C, python, java, C++, php, html5, css3, architecture système ? hacking !!! ?<br />
allez faire un tour sur la chaine YouTube FormationVidéo !<br />
<br />
Ceci est un playlist :  <iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/90hGCMC3Chc" frameborder="0" allowfullscreen="true"></iframe>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Tutoriel Introduction cheat externe et Trouver les offsets localplayer entityplayer.]]></title>
			<link>https://forum.cs-hackers.com/showthread.php?tid=2992</link>
			<pubDate>Sat, 15 Jul 2017 22:59:09 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.cs-hackers.com/member.php?action=profile&uid=1">UzGz</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.cs-hackers.com/showthread.php?tid=2992</guid>
			<description><![CDATA[<span style="color: #99ffff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Petite introduction pour les débutants:</span></span></span><br />
<span style="color: #99ffff;" class="mycode_color">Les cheats externes sont des logiciels qui seront lancés en même temps que le jeu mais qui ne s'injectent pas dans le jeu.</span><br />
<span style="color: #99ffff;" class="mycode_color">Ils utilisent deux fonctions principales : <span style="font-weight: bold;" class="mycode_b">readprocessmemory </span>et <span style="font-weight: bold;" class="mycode_b">writeprocessmemory </span>que l'on écrira sous la forme de <span style="font-weight: bold;" class="mycode_b">rpm </span>et <span style="font-weight: bold;" class="mycode_b">wpm</span>.</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Ces deux fonctions permettent de faire à peu près tout ce que vous voulez, c'est à dire récupérer des données et/ou modifier des données dans le jeu. Exemple: vie, position, arme en main, angle de vue, tir, etc.. mais attention cependant ! De base le rpm n'est pas détecté par VAC le wpm non plus mais seulement si correctement utilisé. Si vous utiliser un wpm pour écrire dans une section "interdite" de modification dans le jeu (forcer une variables sv_cheats, section .text, ...) alors VAC vous détectera instantanément. </span><br />
<span style="color: #99ffff;" class="mycode_color">Il y a aussi toutes les variables qui sont calculées coté serveur, qui reste impossible à modifier (point de vie, position du joueur local, ...) donc pas de cheat d'invincibilité ou noclip <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" /></span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Ensuite c'est bien beau d'avoir du rpm et du wpm mais encore faut-il savoir où lire et où écrire n'est-ce pas ? Pour cela il nous faut trouver des adresses et offset. Un offset représente une adresse dans la mémoire du jeu en référence à une adresse de base. Par exemple l'adresse de la variable maison :</span><br />
<span style="color: #99ffff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">maison = route+numero</span>, l'adresse de base est <span style="font-weight: bold;" class="mycode_b">route </span>et l'offset est <span style="font-weight: bold;" class="mycode_b">numero.</span> Et le tout nous permet d'atteindre l'adresse de <span style="font-weight: bold;" class="mycode_b">maison</span> et donc de connaitre sa valeur ou de la modifier.</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Dans cs:go on récupère en général deux adresses de bases, les modules engine.dll et client.dll, ces deux adresses peuvent ensuite être combinées à d'autres puis encore d'autres et ainsi de suite pour atteindre la valeur de la variable que l'on cherche.</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Exemple de structure de lecture de mémoire dans cs:go (en utilisant les offsets <span style="font-style: italic;" class="mycode_i">localplayer = information du joueur local </span>et <span style="font-style: italic;" class="mycode_i">health = point de vie</span>)</span><br />
<span style="color: #99ffff;" class="mycode_color">Mes points de vie = (client.dll+localplayer)+health</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Et là vous me direz youpi on peut s'y mettre mais il nous faut trouver la valeur de ces offsets ! Les offsets de manière général sont représentés sous leur forme hexadécimal</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color"><span style="text-decoration: underline;" class="mycode_u">vb.net</span></span><br />
<span style="color: #99ffff;" class="mycode_color">dwLocalPlayer = &amp;HAAFFFC</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color"><span style="text-decoration: underline;" class="mycode_u">c++</span><br />
dwLocalPlayer = 0xAAFFFC</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Pour les trouver il nous faut faire du reverse engineering, ou bien en français de l'ingénierie inverse. Etudier cs:go pour savoir où est stocké quelle variable, pourquoi inverse ? car on cherche par la fin, on cherche la valeur de la variable final avant de pouvoir retrouver son adresse. Pour cela je vous propose deux logiciels de prédilection CheatEngine qui reste le plus simple de prise en main, et Ollydbg qui permet bien plus mais que je ne détaillerais pas dans ce tutoriel.</span><br />
<br />
Pour commencer, nous allons chercher un offset simple, celui du joueur local (localplayer) et du tableau des données des autres joueurs (entityplayer). Pour trouver l'offset du joueur local nous allons chercher la valeur de nos propres points de vie dont nous connaissons l'offset <br />
m_iHealth = 0xFC<br />
<br />
Les offsets de variables utilisées en réseau, appelées NetVar (networked variables) permettant la transmission des données de joueurs à joueurs, sont retrouvables dans plusieurs dump de csgo, je ne détaillerais pas ici le processus d'obtention de ce dump car de toutes façons les offsets des netvar ne changent jamais (sauf mise a jour modifiant énormément le jeu). Voici une liste complète des netvars du jeu :<br />
<a href="https://raw.githubusercontent.com/denniskupec/csgo/master/NetVar-Dumps/13491.txt" target="_blank" rel="noopener" class="mycode_url">CSGO NETVAR DUMP</a><br />
<br />
Allez on s'y met ! Lancer cs:go, lancer un serveur avec des bots (hors ligne) puis lancer cheat engine, cliquer sur le premier icone en haut à gauche (open process) et choisir csgo.exe puis faire "open" :<br />
<img src="https://i.gyazo.com/08625a4683d256f575ba7d92f5445365.png" loading="lazy"  alt="[Image: 08625a4683d256f575ba7d92f5445365.png]" class="mycode_img" /><br />
<br />
Pour vous faciliter la vie je vous propose ma petite cfg pour être tranquille sur le serveur (sv_cheats activé, bot a l'arret, temps d'un round = 1h, respawn auto des terroristes) vous pouvez vous en servir de bind aussi :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>mp_freezetime 0;mp_roundtime_defuse 60;sv_cheats 1;bot_stop 1;mp_respawn_on_death_t 1;mp_restartgame 1;mp_buyanywhere 1;mp_startmoney 16000</code></div></div><br />
Ensuite la barre de recherche Value sera accessible, comme valeur on cherche "100" puisque l'on a 100 point de vie.<br />
Scan type on cherche "Exact Value" car 100 est la valeur exacte de la variable que l'on cherche.<br />
Value Type on laisse 4 bytes car on cherche un integer qui est un chiffre sans décimal et la taille d'un integer est de 4 bytes.<br />
<br />
Puis on clique sur First Scan, on peut voir en dessous des 3 icones en haut à gauche que cheat engine trouve plusieurs milliers d'adresses. Il nous faut donc affiner notre recherche, et pour ce faire nous allons changer la valeur de la variable que l'on cherche en tapant hurtme 1 dans la console, on se retrouve avec 99 hp on peut donc rentrer 99 dans la case Value puis on effectue une nouvelle recherche avec Next Scan (et pas new scan attention) et hop là on à réduit le nombre d'adresses à une vingtaine seulement.<br />
On peut ensuite répéter ce processus plusieurs fois mais il arrive très rarement qu'on puisse obtenir qu'une seule adresse (tout simplement car une seule et même donnée peut être accessible via différentes adresses, mais une seule nous intéresse).<br />
<img src="https://i.gyazo.com/ae987a947cec8673c7066a08274aaf16.png" loading="lazy"  alt="[Image: ae987a947cec8673c7066a08274aaf16.png]" class="mycode_img" /><br />
<br />
Pour trouver la bonne adresse il suffit de double cliquer sur chacune d'entre elles pour les amener dans la fenêtre du bas. Avec l'expérience on reconnait celles qui seront les bonnes ou pas, toutes les premières de la liste ne sont en général pas les bonnes, on double clique sur les dernières (3XXXXXXX) et cela les rajoutes en bas.<br />
Sur les adresses en bas il suffit d'en sélectionner une et de faire un clique droit -&gt; find out what access this adress (ou F5). Jusqu'a trouver l'adresse ayant dans les instruction l'information ecx+000000FC (0xFC étant l'offset des points de vie, le nombre de 0 précédent un offset n'importe pas, 0xFC = 0x000000FC).<br />
<img src="https://i.gyazo.com/7f9e73ed1592b412293dcef87577896a.png" loading="lazy"  alt="[Image: 7f9e73ed1592b412293dcef87577896a.png]" class="mycode_img" /><br />
<br />
Une fois que vous avez trouvé celle contenant l'offset FC faites un clique droit dessus et selectionner Pointer Scan for this address<br />
<img src="https://i.gyazo.com/3fef3b0dc8c7fd57b784e2f0982da5ce.png" loading="lazy"  alt="[Image: 3fef3b0dc8c7fd57b784e2f0982da5ce.png]" class="mycode_img" /><br />
<br />
Choisissez <span style="font-weight: bold;" class="mycode_b">Max Level : 1 </span>pour chercher uniquement 1 offset et pas plusieurs sur la même adresse comme: <span style="font-weight: bold;" class="mycode_b">address + offset</span> et pas <span style="font-weight: bold;" class="mycode_b">address + offset1 + offset2</span><br />
Le scan nécessite d'enregistrer un fichier, nommer le comme vous désirez (pour ma part je le supprime directement après de toutes manières).<br />
<img src="https://i.gyazo.com/cb9efe8a564dbf00f44d629658e75927.png" loading="lazy"  alt="[Image: cb9efe8a564dbf00f44d629658e75927.png]" class="mycode_img" /><br />
<br />
Une fois le scan terminé vous pouvez avoir plusieurs résultats différents, l’intérêt est de garder uniquement ceux qui ont pour offset 0 = FC<br />
Vous pouvez double cliquer sur chacun d'entre eux pour les amener dans la fenêtre du bas de cheat engine. Dans mon exemple il n'y a que 4 adresses ayant pour offset FC.<br />
<img src="https://i.gyazo.com/a0dc6d3db9f7f91f110c890b1ae3336e.png" loading="lazy"  alt="[Image: a0dc6d3db9f7f91f110c890b1ae3336e.png]" class="mycode_img" /><br />
<br />
Ensuite pour savoir quel est la bonne adresse de base pour localplayer et au passage trouver entityplayer on vient supprimer l'offset FC pour savoir où pointe l'adresse de base. Il y a surement une meilleure méthode mais pour ma part je viens double cliquer sur le pointerscan result, je copie l'adresse "client.dll"+XXXXX, je supprime l'offset en décochant "pointer" et je viens coller l'adresse dans la premiere case "Address" ainsi que dans la description (Entre temps le round s'est relancé est j'ai 78hp <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" />) <br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/gUeIPt8SZ-c" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
On a donc une liste avec dans la <span style="font-weight: bold;" class="mycode_b">description </span>la structure de l'adresse "client.dll"+offset (la description correspond à ce qu'on veut pour désigner une adresse ça peut très bien être "adresselol123", là on s'en sert pour différencier les résultats) et dans "Address" l'adresse où pointe "client.dll"+offset. Pour chaque adresses on va venir faire un clique droit -&gt; <span style="font-weight: bold;" class="mycode_b">browse memory region</span><span style="font-weight: bold;" class="mycode_b"> </span>ou selectionner l'adresse puis <span style="font-weight: bold;" class="mycode_b">ctrl-B.</span><br />
<br />
Localplayer possède une structure similaire à cela :<br />
<img src="https://i.gyazo.com/6d06a8c070858e520c708f513f8edff8.png" loading="lazy"  alt="[Image: 6d06a8c070858e520c708f513f8edff8.png]" class="mycode_img" /><br />
<br />
EntityPlayer possède une structure similaire à cela :<br />
<img src="https://i.gyazo.com/ebb9c33f28ce5f7eac75651127f2acc1.png" loading="lazy"  alt="[Image: ebb9c33f28ce5f7eac75651127f2acc1.png]" class="mycode_img" /><br />
<br />
Les deux autres adresses correspondent en fait à des adresses accessibles via les informations du serveur. Comme on fait tout nos test sur un serveur hors ligne avec des bots, cheatengine nous permet aussi de trouver des pointer (adresse + offset) accessible uniquement lorsque notre machine héberge le serveur. Ces adresses ne fonctionneront pas sur un serveur en ligne, et cela est vite vérifiable en faisant des test avec son cheat <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" /><br />
<br />
Dans notre cas la 1ere et la 2e adresse sont respectivement localplayer et entityplayer. Pour vérifier entityplayer on vient faire <span style="font-weight: bold;" class="mycode_b">bot_add </span>et <span style="font-weight: bold;" class="mycode_b">bot_kick </span>et on voit que des informations se rajoutent et disparaissent en fonction de si on ajoute ou enlève des bots. En voici une petite démonstration (désolé pour la qualité vidéo) :<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/sjNNBMlygjM" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Donc en conclusion dans notre cas localplayer = "client.dll"+00AAFFFC et entityplayer = "client.dll"+04A8C724, avec l'habitude pas la peine de répéter toutes ces étapes, après le pointerscan on reconnait facilement quel est localplayer et entityplayer par rapport à leurs anciennes valeurs. Car oui elles changent, et en général après chaque mise à jour du jeu. Par la suite l'utilisation de Dumper facilite la vie et vient nous donner les valeurs des offsets. Le plus utilisé étant <a href="https://github.com/frk1/hazedumper" target="_blank" rel="noopener" class="mycode_url">HazeDumper</a> qui a la particularité de mettre à jour la liste des offset directement en ligne sur github. Il y a aussi la possibilité de retrouver soi même automatiquement la valeur des offset avec le signature scanning, qui fera l'objet d'un autre tutoriel <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" /> mais dans le principe il est bien de comprendre toutes ces étapes d'adresses + offset.<br />
<br />
Voila c'est la fin de ce premier tuto, personnellement j'ai "appris" la programmation en auto didacte (merci google) donc le tutoriel peut ne pas être parfait ou contenir des erreurs, des modifications auront surement lieu celui ci étant le premier d'une serie de tuto sur la programmation de cheat externes !<br />
Bon courage et à bientôt pour la suite ! <img src="https://forum.cs-hackers.com/images/smilies/newGen/happywide.png" alt="Happywide" title="Happywide" class="smilie smilie_271" />]]></description>
			<content:encoded><![CDATA[<span style="color: #99ffff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Petite introduction pour les débutants:</span></span></span><br />
<span style="color: #99ffff;" class="mycode_color">Les cheats externes sont des logiciels qui seront lancés en même temps que le jeu mais qui ne s'injectent pas dans le jeu.</span><br />
<span style="color: #99ffff;" class="mycode_color">Ils utilisent deux fonctions principales : <span style="font-weight: bold;" class="mycode_b">readprocessmemory </span>et <span style="font-weight: bold;" class="mycode_b">writeprocessmemory </span>que l'on écrira sous la forme de <span style="font-weight: bold;" class="mycode_b">rpm </span>et <span style="font-weight: bold;" class="mycode_b">wpm</span>.</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Ces deux fonctions permettent de faire à peu près tout ce que vous voulez, c'est à dire récupérer des données et/ou modifier des données dans le jeu. Exemple: vie, position, arme en main, angle de vue, tir, etc.. mais attention cependant ! De base le rpm n'est pas détecté par VAC le wpm non plus mais seulement si correctement utilisé. Si vous utiliser un wpm pour écrire dans une section "interdite" de modification dans le jeu (forcer une variables sv_cheats, section .text, ...) alors VAC vous détectera instantanément. </span><br />
<span style="color: #99ffff;" class="mycode_color">Il y a aussi toutes les variables qui sont calculées coté serveur, qui reste impossible à modifier (point de vie, position du joueur local, ...) donc pas de cheat d'invincibilité ou noclip <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" /></span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Ensuite c'est bien beau d'avoir du rpm et du wpm mais encore faut-il savoir où lire et où écrire n'est-ce pas ? Pour cela il nous faut trouver des adresses et offset. Un offset représente une adresse dans la mémoire du jeu en référence à une adresse de base. Par exemple l'adresse de la variable maison :</span><br />
<span style="color: #99ffff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">maison = route+numero</span>, l'adresse de base est <span style="font-weight: bold;" class="mycode_b">route </span>et l'offset est <span style="font-weight: bold;" class="mycode_b">numero.</span> Et le tout nous permet d'atteindre l'adresse de <span style="font-weight: bold;" class="mycode_b">maison</span> et donc de connaitre sa valeur ou de la modifier.</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Dans cs:go on récupère en général deux adresses de bases, les modules engine.dll et client.dll, ces deux adresses peuvent ensuite être combinées à d'autres puis encore d'autres et ainsi de suite pour atteindre la valeur de la variable que l'on cherche.</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Exemple de structure de lecture de mémoire dans cs:go (en utilisant les offsets <span style="font-style: italic;" class="mycode_i">localplayer = information du joueur local </span>et <span style="font-style: italic;" class="mycode_i">health = point de vie</span>)</span><br />
<span style="color: #99ffff;" class="mycode_color">Mes points de vie = (client.dll+localplayer)+health</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Et là vous me direz youpi on peut s'y mettre mais il nous faut trouver la valeur de ces offsets ! Les offsets de manière général sont représentés sous leur forme hexadécimal</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color"><span style="text-decoration: underline;" class="mycode_u">vb.net</span></span><br />
<span style="color: #99ffff;" class="mycode_color">dwLocalPlayer = &amp;HAAFFFC</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color"><span style="text-decoration: underline;" class="mycode_u">c++</span><br />
dwLocalPlayer = 0xAAFFFC</span><br />
<br />
<span style="color: #99ffff;" class="mycode_color">Pour les trouver il nous faut faire du reverse engineering, ou bien en français de l'ingénierie inverse. Etudier cs:go pour savoir où est stocké quelle variable, pourquoi inverse ? car on cherche par la fin, on cherche la valeur de la variable final avant de pouvoir retrouver son adresse. Pour cela je vous propose deux logiciels de prédilection CheatEngine qui reste le plus simple de prise en main, et Ollydbg qui permet bien plus mais que je ne détaillerais pas dans ce tutoriel.</span><br />
<br />
Pour commencer, nous allons chercher un offset simple, celui du joueur local (localplayer) et du tableau des données des autres joueurs (entityplayer). Pour trouver l'offset du joueur local nous allons chercher la valeur de nos propres points de vie dont nous connaissons l'offset <br />
m_iHealth = 0xFC<br />
<br />
Les offsets de variables utilisées en réseau, appelées NetVar (networked variables) permettant la transmission des données de joueurs à joueurs, sont retrouvables dans plusieurs dump de csgo, je ne détaillerais pas ici le processus d'obtention de ce dump car de toutes façons les offsets des netvar ne changent jamais (sauf mise a jour modifiant énormément le jeu). Voici une liste complète des netvars du jeu :<br />
<a href="https://raw.githubusercontent.com/denniskupec/csgo/master/NetVar-Dumps/13491.txt" target="_blank" rel="noopener" class="mycode_url">CSGO NETVAR DUMP</a><br />
<br />
Allez on s'y met ! Lancer cs:go, lancer un serveur avec des bots (hors ligne) puis lancer cheat engine, cliquer sur le premier icone en haut à gauche (open process) et choisir csgo.exe puis faire "open" :<br />
<img src="https://i.gyazo.com/08625a4683d256f575ba7d92f5445365.png" loading="lazy"  alt="[Image: 08625a4683d256f575ba7d92f5445365.png]" class="mycode_img" /><br />
<br />
Pour vous faciliter la vie je vous propose ma petite cfg pour être tranquille sur le serveur (sv_cheats activé, bot a l'arret, temps d'un round = 1h, respawn auto des terroristes) vous pouvez vous en servir de bind aussi :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>mp_freezetime 0;mp_roundtime_defuse 60;sv_cheats 1;bot_stop 1;mp_respawn_on_death_t 1;mp_restartgame 1;mp_buyanywhere 1;mp_startmoney 16000</code></div></div><br />
Ensuite la barre de recherche Value sera accessible, comme valeur on cherche "100" puisque l'on a 100 point de vie.<br />
Scan type on cherche "Exact Value" car 100 est la valeur exacte de la variable que l'on cherche.<br />
Value Type on laisse 4 bytes car on cherche un integer qui est un chiffre sans décimal et la taille d'un integer est de 4 bytes.<br />
<br />
Puis on clique sur First Scan, on peut voir en dessous des 3 icones en haut à gauche que cheat engine trouve plusieurs milliers d'adresses. Il nous faut donc affiner notre recherche, et pour ce faire nous allons changer la valeur de la variable que l'on cherche en tapant hurtme 1 dans la console, on se retrouve avec 99 hp on peut donc rentrer 99 dans la case Value puis on effectue une nouvelle recherche avec Next Scan (et pas new scan attention) et hop là on à réduit le nombre d'adresses à une vingtaine seulement.<br />
On peut ensuite répéter ce processus plusieurs fois mais il arrive très rarement qu'on puisse obtenir qu'une seule adresse (tout simplement car une seule et même donnée peut être accessible via différentes adresses, mais une seule nous intéresse).<br />
<img src="https://i.gyazo.com/ae987a947cec8673c7066a08274aaf16.png" loading="lazy"  alt="[Image: ae987a947cec8673c7066a08274aaf16.png]" class="mycode_img" /><br />
<br />
Pour trouver la bonne adresse il suffit de double cliquer sur chacune d'entre elles pour les amener dans la fenêtre du bas. Avec l'expérience on reconnait celles qui seront les bonnes ou pas, toutes les premières de la liste ne sont en général pas les bonnes, on double clique sur les dernières (3XXXXXXX) et cela les rajoutes en bas.<br />
Sur les adresses en bas il suffit d'en sélectionner une et de faire un clique droit -&gt; find out what access this adress (ou F5). Jusqu'a trouver l'adresse ayant dans les instruction l'information ecx+000000FC (0xFC étant l'offset des points de vie, le nombre de 0 précédent un offset n'importe pas, 0xFC = 0x000000FC).<br />
<img src="https://i.gyazo.com/7f9e73ed1592b412293dcef87577896a.png" loading="lazy"  alt="[Image: 7f9e73ed1592b412293dcef87577896a.png]" class="mycode_img" /><br />
<br />
Une fois que vous avez trouvé celle contenant l'offset FC faites un clique droit dessus et selectionner Pointer Scan for this address<br />
<img src="https://i.gyazo.com/3fef3b0dc8c7fd57b784e2f0982da5ce.png" loading="lazy"  alt="[Image: 3fef3b0dc8c7fd57b784e2f0982da5ce.png]" class="mycode_img" /><br />
<br />
Choisissez <span style="font-weight: bold;" class="mycode_b">Max Level : 1 </span>pour chercher uniquement 1 offset et pas plusieurs sur la même adresse comme: <span style="font-weight: bold;" class="mycode_b">address + offset</span> et pas <span style="font-weight: bold;" class="mycode_b">address + offset1 + offset2</span><br />
Le scan nécessite d'enregistrer un fichier, nommer le comme vous désirez (pour ma part je le supprime directement après de toutes manières).<br />
<img src="https://i.gyazo.com/cb9efe8a564dbf00f44d629658e75927.png" loading="lazy"  alt="[Image: cb9efe8a564dbf00f44d629658e75927.png]" class="mycode_img" /><br />
<br />
Une fois le scan terminé vous pouvez avoir plusieurs résultats différents, l’intérêt est de garder uniquement ceux qui ont pour offset 0 = FC<br />
Vous pouvez double cliquer sur chacun d'entre eux pour les amener dans la fenêtre du bas de cheat engine. Dans mon exemple il n'y a que 4 adresses ayant pour offset FC.<br />
<img src="https://i.gyazo.com/a0dc6d3db9f7f91f110c890b1ae3336e.png" loading="lazy"  alt="[Image: a0dc6d3db9f7f91f110c890b1ae3336e.png]" class="mycode_img" /><br />
<br />
Ensuite pour savoir quel est la bonne adresse de base pour localplayer et au passage trouver entityplayer on vient supprimer l'offset FC pour savoir où pointe l'adresse de base. Il y a surement une meilleure méthode mais pour ma part je viens double cliquer sur le pointerscan result, je copie l'adresse "client.dll"+XXXXX, je supprime l'offset en décochant "pointer" et je viens coller l'adresse dans la premiere case "Address" ainsi que dans la description (Entre temps le round s'est relancé est j'ai 78hp <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" />) <br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/gUeIPt8SZ-c" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
On a donc une liste avec dans la <span style="font-weight: bold;" class="mycode_b">description </span>la structure de l'adresse "client.dll"+offset (la description correspond à ce qu'on veut pour désigner une adresse ça peut très bien être "adresselol123", là on s'en sert pour différencier les résultats) et dans "Address" l'adresse où pointe "client.dll"+offset. Pour chaque adresses on va venir faire un clique droit -&gt; <span style="font-weight: bold;" class="mycode_b">browse memory region</span><span style="font-weight: bold;" class="mycode_b"> </span>ou selectionner l'adresse puis <span style="font-weight: bold;" class="mycode_b">ctrl-B.</span><br />
<br />
Localplayer possède une structure similaire à cela :<br />
<img src="https://i.gyazo.com/6d06a8c070858e520c708f513f8edff8.png" loading="lazy"  alt="[Image: 6d06a8c070858e520c708f513f8edff8.png]" class="mycode_img" /><br />
<br />
EntityPlayer possède une structure similaire à cela :<br />
<img src="https://i.gyazo.com/ebb9c33f28ce5f7eac75651127f2acc1.png" loading="lazy"  alt="[Image: ebb9c33f28ce5f7eac75651127f2acc1.png]" class="mycode_img" /><br />
<br />
Les deux autres adresses correspondent en fait à des adresses accessibles via les informations du serveur. Comme on fait tout nos test sur un serveur hors ligne avec des bots, cheatengine nous permet aussi de trouver des pointer (adresse + offset) accessible uniquement lorsque notre machine héberge le serveur. Ces adresses ne fonctionneront pas sur un serveur en ligne, et cela est vite vérifiable en faisant des test avec son cheat <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" /><br />
<br />
Dans notre cas la 1ere et la 2e adresse sont respectivement localplayer et entityplayer. Pour vérifier entityplayer on vient faire <span style="font-weight: bold;" class="mycode_b">bot_add </span>et <span style="font-weight: bold;" class="mycode_b">bot_kick </span>et on voit que des informations se rajoutent et disparaissent en fonction de si on ajoute ou enlève des bots. En voici une petite démonstration (désolé pour la qualité vidéo) :<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/sjNNBMlygjM" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Donc en conclusion dans notre cas localplayer = "client.dll"+00AAFFFC et entityplayer = "client.dll"+04A8C724, avec l'habitude pas la peine de répéter toutes ces étapes, après le pointerscan on reconnait facilement quel est localplayer et entityplayer par rapport à leurs anciennes valeurs. Car oui elles changent, et en général après chaque mise à jour du jeu. Par la suite l'utilisation de Dumper facilite la vie et vient nous donner les valeurs des offsets. Le plus utilisé étant <a href="https://github.com/frk1/hazedumper" target="_blank" rel="noopener" class="mycode_url">HazeDumper</a> qui a la particularité de mettre à jour la liste des offset directement en ligne sur github. Il y a aussi la possibilité de retrouver soi même automatiquement la valeur des offset avec le signature scanning, qui fera l'objet d'un autre tutoriel <img src="https://forum.cs-hackers.com/images/smilies/newGen/wink.png" alt="Wink" title="Wink" class="smilie smilie_267" /> mais dans le principe il est bien de comprendre toutes ces étapes d'adresses + offset.<br />
<br />
Voila c'est la fin de ce premier tuto, personnellement j'ai "appris" la programmation en auto didacte (merci google) donc le tutoriel peut ne pas être parfait ou contenir des erreurs, des modifications auront surement lieu celui ci étant le premier d'une serie de tuto sur la programmation de cheat externes !<br />
Bon courage et à bientôt pour la suite ! <img src="https://forum.cs-hackers.com/images/smilies/newGen/happywide.png" alt="Happywide" title="Happywide" class="smilie smilie_271" />]]></content:encoded>
		</item>
	</channel>
</rss>