hugox93
Membre Banni
- 2 Nov. 2010
- 123
- 0
- 441
- 30
Bonjour A Toutes Et A Tous!
Ceci est un tutoriel sur le jeu légèrement plus grand qu'un simple piratage informatique. Vous pouvez vous attendre à trouver de la valeur en mémoire que le pointeur et ensuite trouver un hack pour la programmation en C + +. J'espère que je pourrais offrir aux débutants ici une bonne base pour pirater d'autres jeux et l'écriture de leurs propres hacks.
Sans AutoIt: P est aussi le seul de la première partie. Dans la deuxième partie on pourra encore s'attendre à des autres techniques. Mais en temps voulu: P
# Contenu:
[ - ] Besoins & Programmes [ - ] adresse trouvée [ - ] Pointeur trouve [ - ] Programmation Hack [ - ] Postface [ - ]
Besoins & Programme Exigences:
-Une expérience de base dans le traitement des programmes de recherche en mémoire
-Une expérience de base dans le traitement des débogueurs
-Connaissance de base de l'ASM
-C + + / Visual C + + connaissances
-Compréhension de l'homme
Programme:
-Solitaire
-Cheat Engine
-Visual Studio 2005 ou supérieur
En tant que victime de ce jeu, je suppose le solitaire. Que chacun devrait avoir sur son ordinateur et il est assez simple. Et répond à toutes nos exigences.
[ - ] Adresse trouvée
Quand nous commençons parfois le solitaire. Nous pouvons voir à droite en bas, même un tableau de bord et un affichage de l'heure. Lorsque nous nous couchons maintenant comme l'as, nous obtenons des points et le temps commence à courir. Je vais traiter dans ce tutoriel, seul le nombre de points. Après ce tutoriel, vous devriez être capable de pirater le temps indépendant: P Maintenant nous ouvrons cheat engine, sélectionnez le sol.exe Processus Sortez et préparez. Nous changement comme un reclus et faire quelques points. Ensuite, nous passons rapidement à la CE et la recherche de la valeur est inférieure. Nous devons nous dépêcher, bien sûr, parce que les points dans le temps sont moins. Ensuite, nous avons juste à attendre que les points chutent à 0 et que vous cherchez à 0 Mais qu'est ce que nos yeux y voit? Il semble que nous valorisons pas plus longtemps. CE n'a rien trouvé. Mais ne désespérez pas! La solution est assez simple. Si nous regardons les options de scan de la mémoire, nous avons choisi 32 bits là. Ce qui est dans la plupart des cas que juste et approprié. Mais le problème, nous avons maintenant le CE ne trouve rien. Nous avons donc sélectionnez " Tous "à partir. Ainsi, l'ensemble du stockage en cours de numérisation! Alors nous allons maintenant faire comme un reclus, quelques cartes pour faire des points, changer à nouveau prochainement à la CE et de la recherche pour le score! Puis attendre à nouveau jusqu'à ce que le point 0 et que vous cherchez pour 0! Ensuite, nous devrions avoir une adresse. Avec un double nous atteignons maintenant notre liste d'adresses. Si nous changeons la métrique, telles que 100, nous avons aussi un ermite 100 points. trouver des pointeurs , mais notre travail n'est pas encore terminée. Si nous voulons maintenant redémarrer solitaire, nous ne pouvions plus utiliser cette adresse. Parce qu'ils sont rétifs changements. Pour nous, traitons ici avec un pointeur vers un pointeur. Je ne sais pas si il y a plusieurs pointeurs. Souvent, vous devez passer par 2-3 ou même 4 adresses que nous arrivions à notre valeur. Nous devons trouver le pointeur de la base. C'est dans la plupart des cas faciles. Nous avons maintenant deux options. Le premier pointeur est le scanner, nous avons utilisé. Il scanne la mémoire et recherche automatiquement le pointeur. Dans certains cas, il serait utile, mais peut dans certaines circonstances aussi durée assez longue. Mais ici, nous n'apprenons rien oui. Nous le faisons à la main afin que nous clic droit sur l'adresse et sélectionnez " Découvrez ce accéder à cette adresse " Cela va ouvrir le débogueur et voir ce que nous à cette adresse accède. , nous voyons:
Code PHP:
mov eax , [ EDI + 30 ]
Cela signifie qu'il va chercher la valeur est dans l'EDI 30 et il se déplace dans eax!
Nous avons donc besoin de savoir ce que l'adresse a édité. Avec un double clic sur la ligne pour ouvrir le " Extra Info "fenêtre. Et nous voyons là l'EDI inclut la valeur 000AB640. Maintenant, nous devons savoir ce que l'adresse a EDI. Nous examinons donc pour cette valeur. Il est important que nous avons mis le crochet dans la recherche de nouvelles HEX. Depuis notre valeur en hexadécimal est oui. Maintenant nous voyons qu'il ya trois adresses. Dont l'un est vert. Cela signifie que cette adresse est le pointeur de la base. Maintenant, nous devons ajouter que l'adresse de pointeur. Nous avons maintenant de cliquer sur Ajouter une adresse manuellement. Cela va ouvrir une fenêtre popup et ensuite nous avons mis un poignard dans le pointeur. . Ensuite, nous donner l'adresse ci-dessous à l'adresse du pointeur 01007170 C'est pas encore! Nous nous souvenons de l'instruction mov.
Code PHP:
mov eax , [ EDI + 30 ]
Il est donc ajoute encore 30. Il nous faut donc entrer comme une 30e compensée Avec un clic sur OK, nous allons ajouter l'adresse. Et maintenant notre pointeur. [ - ] Programme Hack est si naturellement il ya toujours stupide de changer par la cheatengine solitaire. Alors écrivons un petit hack pour cela. maintenant je suis en utilisant Visual Studio 2005. Aussi, j'ai utilisé MFC pour faire l'interface graphique. Vous pouvez également prendre une nouvelle version de Visual Studio. Mais s'il vous plaît noter, qui n'a pas de MFC Kosntelose version Express. Cela signifie que vous ne pouvez pas faire l'interface graphique que j'ai fait. Il ya suffisamment d'autres libs GUI, mais comme je le disais, je suis maintenant ici allusion seulement aux MFC. Comment vous faites il avec d'autres interfaces graphiques doivent trouver leurs propres: P Donc, nous d'abord créer un dialogue. . Va à sa sur Fichier -> Nouveau -> Projet -> MFC -> application MFC -je appeler mon projet "Solitaire Hack" . Dans les paramètres, nous vous proposons repose sur la boîte de dialogue: Et faire le check-in des contrôles ActiveX ! loin Ensuite, cliquez sur nous sur Terminer. Nous allons à la vue des ressources et ajouter un champ de texte statique, notre dialogue, une boîte d'édition et deux boutons. Le champ statique que nous appelons en " score de l'ordre ". Et les boutons " lecture "et" l'écriture ". Maintenant nous faites un clic droit sur le champ d'édition et cliquez sur Ajouter une variable. Ensuite, un pop-up s'ouvre avec l'assistant. Quand nous choisissons la valeur bonne catégorie. Le type de variable est CString. Et comme le nom de la variable que nous donnons m_Value un. Ensuite, nous avons un clic droit sur le " Read " bouton et cliquez sur " gestionnaire d'événements, ajouter ". ouvre alors l'assistant, et nous choisissons (s'il n'est pas déjà sélectionné automatiquement) BN_CLICKED sortir et ajouter le gestionnaire d'événements . C'est ce que nous faisons et puis de nouveau pour la " Ecrire "bouton. Puis nous allons à vue de classe. Il nous voyons les classes que notre projet a. CAboutDlg est la classe de la boîte de dialogue À propos. La boîte de dialogue À propos sera généré automatiquement. CSolitärHackApp est la classe d'application. Quel est inintéressant pour nous. CSolitärHackDlg est la classe de notre Dilaog nous avons créé. Si on clique sur elle que nous voyons là-dessous toutes les fonctions qui sont dans la classe et aussi les variables membres. Nous clic droit sur la classe -> Ajouter -> Fonction Ajouter. Cela va ouvrir notre célèbre assistant. Comme nous écrivons type de retour void. Puisque la fonction ne rien renvoyer. Comme le nom que nous donnons m_lesen et ajouter la fonction. La même chose que nous faisons maintenant et encore ajouter la fonction m_schreiben ajouté. Alors maintenant, assez joué. Programme d 'ici nous allons faire. Comment aller dans la fenêtre de code et devrait maintenant se présenter comme l'ont:
Code PHP:
nulle CSolitärHackDlg : OnBnClickedButton1 ()
{
/ / TODO:. Fügen Sie hier für die Ihren Kontrollbehandlungscode Benachrichtigung ein
}
nulle CSolitärHackDlg : OnBnClickedButton2 ()
{
/ / TODO: Fügen Sie hier für die Ihren Kontrollbehandlungscode Benachrichtigung ein.
}
CSolitärHackDlg vide : m_lesen ( vide )
{
}
vide CSolitärHackDlg : m_schreiben ( vide )
{
}
Maintenant que nous appelons le OnBnClickedButton1 function () fonctionnent sur le m_lesen
Code PHP:
nulle CSolitärHackDlg : OnBnClickedButton1 ()
{
/ / TODO: Fügen Sie hier für die Ihren Kontrollbehandlungscode Benachrichtigung ein.
m_lesen ();
}
Et quand nous m_schreiben OnBnClickedButton2 appel de fonction () fonction.
Code PHP:
nulle CSolitärHackDlg : OnBnClickedButton2 ()
{
/ / TODO:. Fügen Sie hier für die Ihren Kontrollbehandlungscode Benachrichtigung ein
m_schreiben ()
}
Alors maintenant, quand vous appuyez sur le bouton Lire, appelé le m_lesen () et si vous poussez le bouton, la lettre est m_schreiben () est appelée. Qu'avons-nous besoin? Nous devons une fois de plus obtenir le handle de fenêtre. Ensuite, nous avons besoin de la ProcessID. Nous avons aussi besoin de calculer l'adresse du pointeur et d'obtenir la valeur. Afin d'obtenir le handle de la fenêtre, nous devons d'abord créer deux variables. Pour cela nous allons voir la classe et double-cliquez sur le CSoliträHackDlg classe. On se retrouve donc dans l'entête SolitärHackDlg. Si nous défiler vers le bas pour nous voir et notre m_lesen 2 () et m_schreiben (). Sous il nous posons sur les deux variables. Une fois un CWnd et un HWND.
Code PHP:
CWnd * pwnd ,
HWND hWnd ;
CWnd est une classe de MFC. Ce que nous devons nous prendre à la poignée de Windo. HWND et nous avons besoin pour obtenir le ProcessID tué. Ainsi donc, cela devrait ressembler à ceci:
Code PHP:
...
...
public:
m_lesen vide ( vide );
nulle m_schreiben ( vide );
cwnd * pwnd ,
HWND hWnd ;
Puis nous retournons dans notre m_lesen () fonction.
Afin de nous apporter la poignée que nous écrivons:
Code PHP:
pwnd = CWnd :: FindWindowExW ( nulle , nulle , nulle , _T ( "Solitär" ))
Maintenant que nous avons stocké dans la variable pwnd la poignée de solitaire.
Nous avons encore la poignée pour obtenir la variable HWND, avec le geschiet:
Code PHP:
hWnd = HWND ( pwnd -> GetSafeHwnd ());
Pour tous les cas vous devriez également - afin de faciliter le débogage plus tard, - faire une requête de sorte que, si nous pouvons être sûrs que la fenêtre a été trouvée.
Code PHP:
if ( pwnd = CWnd :: FindWindowExW ( nulle , nulle , nulle , _T ( "Solitär" ))) {
HWND = HWND ( pwnd -> GetSafeHwnd ()); } else {
AfxMessageBox ( _T ( "Fenster nicht gefunden!" ) );
}
Si la fenêtre DSA n'est pas trouvé aujourd'hui, nous obtenons un popup avec le message " Windows ne peut pas être trouvé . " Alors nous allons regarder les variables. Nous en avons besoin dans une variable pour le pointeur d'adresse de base contient. Ensuite, nous avons besoin d'un pour l'offset et un spectacle pour l'adresse à laquelle le pointeur. Notre valeur comprend. Puisque nous sommes directement en valeur, mais nous avons aussi besoin d'une adresse. Ensuite, nous avons besoin d'une variable dans le processus comprend une poignée et l'ID du processus à quoi il ressemble alors.
Code PHP:
unsigned long address1 = 0x01007170 ;
unsigned long décalage = 0x30 ;
unsigned long address2 ;
int value ;
DWORD numBytesRead ;
POIGNÉE hProc ;
DWORD procid ;
Maintenant nous obtenir l'ID de processus:
Code PHP:
GetWindowThreadProcessId ( hWnd , & procid );
et la poignée:
Code PHP:
hProc = OpenProcess ( PROCESS_ALL_ACCESS , FAUX , procid );
Maintenant, nous lisons la valeur à partir d'address1 address2 est et l'écrire po
Code PHP:
ReadProcessMemory ( hProc ( LPCVOID ) address1 , & address2 , sizeof ( longs ) & numBytesRead );
Maintenant nous avons notre nouveau stand address2 adresse. Mais nous avons encore besoin de calculer le décalage!
Code PHP:
address2 = address2 + décalage ;
Maintenant nous avons notre adresse définitive. Et maintenant, ils peuvent lire et écrire la valeur de la valeur.
SIZE="2"]Code PHP:
ReadProcessMemory ( hProc ( LPCVOID ) address2 , & la valeur , sizeof (int), & numBytesRead );
Maintenant nous avons la valeur de la nouvelle adresse, ce qui inclut le score actuel de la valeur en elle. Nous nous souvenons de notre champ d'édition, ce que nous avons créée. Et la variable que nous avons attribué à ce domaine. Maintenant, nous devons écrire le contenu de valeur dans m_Value.
Code PHP:
m_Value . Format ( _T ( "% i" ), la valeur );
Ainsi, le champ d'édition sera également mise à jour est une, même
Code PHP:
UpdateData ( fausse );
fin et un
Code PHP:
UpdateData ( vraie );
au début.
Et un
Code PHP:
CloseHandle ( hProc );
. Donc le tout. Nous avons terminé notre fonction de lecture. Là encore, dans son ensemble:
Code PHP:
nulle CSolitärHackDlg : m_lesen ( vide )
{
if ( PWND = CWnd :: FindWindowExW ( NULL , NULL , NULL , _T ( "Solitär" ))) {
HWND = HWND ( PWND -> GetSafeHwnd ()); } else {
AfxMessageBox ( _T ( "Fenster nicht gefunden!" ));
}
UpdateData ( vraie );
unsigned long address1 = 0x01007170 ,
unsigned long décalage = 0x30 ;
address2 unsigned long ,
int value ;
numBytesRead DWORD ;
hProc HANDLE ,
DWORD
( LPCVOID ) address1 , & address2 , sizeof ( longs ) & numBytesRead )
address2 = address2 + décalage ;
ReadProcessMemory ( hProc ( LPCVOID ) address2 , & la valeur , sizeof (int), & numBytesRead )
m_Value . Format ( _T ( "% s" ), la valeur );
UpdateData ( fausse );
CloseHandle ( hProc );
}
Maintenant nous avons besoin d'une fonction d'écriture.
Nous pouvons en fait de copier quoi que ce soit de la fonction de lecture. Le ReadProcessMemory dernière nous n'avons pas besoin, car nous ne voulons pas de lire l'état actuel. Au lieu de cela, il arrive un point de WriteProcessMemory.
Nous devons obtenir notre entrée. Donc, si vous avez maintenant ce qui entre dans le champ d'édition qui est écrit dans le m_Value. m_Value est une variable CString, nous devons d'abord se convertir à une variable de type int et écrire en valeur. C'est ce que nous faisons avec:
Code PHP:
valeur = _wtoi ( m_Value );
_wtoi rend notre CString une variable de type int et est écrit à la valeur int. Ensuite, nous avons de relier la valeur de ce qui est écrit dans la mémoire. C'est ce que nous faisons avec:
Code PHP:
WriteProcessMemory ( hProc , ( LPVOID ) address2 , & la valeur , sizeof ( valeur ), NULL );
Et là encore tout le code source de la fonction:
Code PHP:
nulle CSolitärHackDlg : m_schreiben ( vide )
{ if (
PWND = CWnd :: FindWindowExW ( NULL , NULL , NULL , _T ( "Solitär" ))) {
HWND = HWND ( PWND -> GetSafeHwnd ()); } else {
AfxMessageBox ( _T ( "Fenster nicht gefunden!" ));
}
unsigned address1 à long = 0x01007170 ,
unsigned long décalage = 0x30 ;
address2 unsigned long ,
int value ;
numBytesRead DWORD ;
hProc HANDLE ,
DWORD
( LPCVOID ) address1 , & address2 , sizeof ( longues )
Ensuite, nous kompelieren notre premier projet en tant que debug (flèche verte sur Kompelieren): Ensuite, nous commençons Solitaire - si elle n'est plus ouverte - et de commencer notre hack et appuyez sur Lire. Ensuite, nous avons prescrit quelques cartes pour faire des points et appuyez de nouveau à lire. Ensuite, la valeur devrait changer dans la boîte d'édition. Puis nous écrivons notre propre valeur dans la boîte d'édition et d'écriture de presse. Puis cette valeur doit se retirer en tant que loi recluse. Si cela fonctionne, nous changeons le débogage et la libération de Kompelieren nouveau. Maintenant nous avons un produit fini hacker solitaire! Félicitations: P [ - ] Épilogue Ouf, c'était probablement ma plus longue tutoriel à ce jour. J'espère que vous a que les bases de hacks du moteur triche pointeurs et la programmation montré. Je le ferai si je serais ravi, n'ont pas encore d'écrire une deuxième partie où je vais discuter de certains autres techniques: P J'espère que vous êtes tombé. Si vous trouvez des erreurs, vous pouvez le signaler. «Seuls les humains et font de ce bug connu m: P
PS: J'ai mis 3heures à realiser ce tuto.. Je vous pris de bien vouloir mettre un grand merci pour tout le travail fourni et ceux qui auront trouvé ca utile!
Pour toi mais :bye::bye: :lol: :) 
:rolling:

