Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 07:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Tutorial] Gamehacking Howto I [Ger]

Discussion on [Tutorial] Gamehacking Howto I [Ger] within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
[Tutorial] Gamehacking Howto I [Ger]

Gamehacking Howto I

Das ist ein etwas größeres Tutorial über Gamehacking. Euch erwartet hier das finden eines Wertes im Speicher, das finden des Pointers und anschließend das Programmieren eines Hacks dafür in C++. Ich hoffe das ich den Anfängern hier eine gute Basis bieten kann andere Spiele zu hacken und eigene Hacks zu schreiben. Ohne AutoIt :P Außerdem ist das erst der erste Teil. Im zweiten Teil werden noch einige andere Techniken erwarten. Aber das zu gegebener Zeit :P




#Inhalt:
[-]Voraussetzungen & Programme
[-]Adresse finden
[-]Pointer finden
[-]Hack Programmieren
[-]Nachwort



[-]Voraussetzungen & Programme


Voraussetzungen:
  • Grundlegende Erfahrung im Umgang mit Memory Search Programmen
  • Grundlegende Erfahrung im Umgang mit Debuggern
  • Grundlegende ASM Kenntnisse
  • C++ / Visual C++ Kenntnisse
  • Menschenverstand


Programme:
  • Solitär
  • Visual Studio 2005 oder höher

Als Opferspiel nehme ich dieses mal Solitär. Das sollte jeder auf seinem Rechner haben und es ist recht simpel. Und erfüllt auch alle unsere Ansprüche




[-]Adresse finden


Als erstes starten wir mal Solitär.


Wir sehen unten Rechts einmal eine Punkteanzeige und eine Zeitanzeige. Wenn wir nun z.B. das Ass oben hinlegen, bekommen wir Punkte und die Zeit fängt an zu laufen.


Ich werde mich in diesem Tutorial nur mit der Punktezahl befassen. Nach diesem Tutorial solltet ihr in der Lage sein die Zeit selbstständig zu hacken :P

Nun öffnen wir CheatEngine, wählen als Process sol.exe aus und machen uns bereit. Wir wechseln in Solitär und machen ein paar Punkte. Dann wechseln wir schnell in CE und suchen nach dem Wert der unten steht. Wir müssen uns natürlich beeilen, weil die Punkte mit der Zeit ja weniger werden.





Dann warten wir einfach ab bis die Punkte auf 0 gefallen sind und suchen nach 0. Aber was sehen unsere Augen da? Es wir kein Wert mehr angezeigt. CE hat nichts gefunden.



Aber nichts verzagen! Die Lösung ist recht simpel. Wenn wir uns die Memory Scan Options anschauen, haben wir dort 32 Bit gewählt.

Was in den meisten Fällen ja auch richtig ist. Aber wir haben nun das Problem das CE nichts findet. Also wählen wir "All" aus. Somit wird der ganze Speicher Bereich gescannt!

Also wechseln wir nun in Solitär, verschieben ein paar Karten um Punkte zu machen, wechseln wieder schnell in CE und suchen nach dem Punktestand!
Dann warten wir wieder bis die Punkte auf 0 sind und suchen nach 0!
Dann sollten wir dort 1 Adresse stehen haben. Mit einem Doppelklick gelangt diese nun in unsere Adressen Liste.



Wenn wir nun den Wert verändern, z.B. auf 100 haben wir auch in Solitär 100 Punkte.


Pointer finden

Aber unser Werk ist noch nicht vollendet. Wenn wir jetzt Solitär neustarten würde, könnten wir diese Adresse nicht mehr benutzten. Weil sie sich stätig ändert. Denn wir haben es hier mit einem Pointer oder auf deutsch mit einem Zeiger zu tun. Wir wissen auch nicht ob es mehrere Zeiger sind. Oftmals muss man über 2-3 oder auch 4 Adressen gehen bis wir zu unserem Wert kommen. Wir müssen also den Base Pointer finden. Das ist in den meisten fällen einfach. Wir haben nun zwei Möglichkeiten. Die erste ist wir benutzten den Pointer scanner. Er scannt automatisch den Speicher ab und sucht nach dem Pointer. In einigen Fällen wohl hilfreich, aber kann unter umständen auch ziemlich lang dauer. Aber dabei lernen wir ja nix. Wir machen es von Hand!


Wir machen also einen Rechtsklick auf die Adresse und wählen "Find out what access this address"

Dann öffnet sich der Debugger und wir sehen was auf diese Adresse zugreift.


Wir sehen:
PHP Code:
mov eax, [edi+30
Das heißt er holt sich den Wert der in edi+30 steht und verschiebt diesen in eax!
Also müssen wir wissen welche Adresse edi hat. Mit einem doppelklick auf die Zeile öffnet sich das "Extra Info" Fenster.


Und dort sehen wir das EDI den Wert 000AB640 beinhaltet. Jetzt müssen wir nur herausfinden, welche Adresse EDI hat. Also suchen wir nach diesem Wert.
Wichtig ist das wir bei der neuen Suche den Haken bei HEX gesetzt habe. Da unser Wert ja in HEX ist.



Jetzt sehen wir dort 3 Adressen. 1 von denen ist Grün. Das heißt diese Adresse ist der Base Pointer.

Nun müssen wir diese Adresse als Pointer hinzufügen. Wir klicken nun auf Add address manually. Dann öffnet sich ein PopUp und dort machen wir einen Haken bei Pointer.

Dann geben wir die Adresse 01007170 unten bei Address of Pointer ein.
Das war's aber noch nicht! Wir erinnern uns an die mov anweisung.
PHP Code:
mov eax, [edi+30
Da wird also noch +30 addiert. Also müssen wir als Offset 30 eingeben.

Mit einem Klick auf Ok fügen wir die Adresse hinzu. Und haben nun unseren Pointer.




[-]Hack Programmieren


So natürlich ist es doof immer mittels CheatEngine Solitär zu verändern. Also schreiben wir uns einen kleinen hack dafür.

Ich verwende hier jetzt Visual Studio 2005. Außerdem benutzte ich MFC um die GUI zu machen. Ihr könnt auch eine neuere Version von Visual Studio nehmen. Aber beachtet bitte, das die Kosntelose Express Version kein MFC hat. Das heißt ihr könnt die GUI nicht so machen wie ich. Es gibt ja genügend andere GUI libs, aber wie gesagt ich beziehe mich jetzt hier nur auf MFC. Wie ihr es mit anderen GUIs macht müsst ihr selbst herausfinden :P

Also wir erstellen uns erstmal einen Dialog. Dazu geht ihr auf Datei -> Neu -> Projekt -> MFC -> MFC Anwendung.
Ich nenne mein Projekt "Solitär Hack".


Bei den Einstellungen, stellen wir auf Dialogfeld basierend:


Und machen den Haken bei ActiveX-Steuerelemente weg!


Dann klicken wir auf Fertigstellen.

Wir gehen in die Ressourcenansicht und fügen unserem Dialog 1 Static Textfeld, 1 Editfeld und 2 Buttons hinzu.


Das Static Feld benennen wir in "Punktestand" um. Und die Buttons in "Lesen" und "Schreiben".



Nun machen wir einen Rechtsklick auf das Editfeld und klicken auf Variable hinzufügen.


Dann öffnet sich ein Pop-Up mit dem Assistenten. Rechts bei Kategorie wählen wir Value.


Der Variablentyp bleibt CString. Und als Variablennamen geben wir m_Value ein.


Dann machen wir einen Rechtsklick auf den "Lesen" Button und klicken auf "Ereignishandler Hinzufügen".

Dann öffnet sich der Assistent und wir wählen (falls nicht schon automatisch ausgewählt ist) BN_CLICKED aus und fügen den Ereignishandler hinzu.


Das gleiche machen wir dann auch nochmal für den "Schreiben" Button.

Dann gehen wir in die Klassenansicht. Dort sehen wir die Klassen die unser Projekt hat.



CAboutDlg ist die Klasse des About Dialoges. Der About Dialog wird automatisch generiert.
CSolitärHackApp ist die Application Klasse. Die ist für uns uninteressant.
CSolitärHackDlg ist die Klasse von unserem Dilaog den wir erstellt haben. Wenn wir da drauf klicken sehen wir da drunter die ganzen Funktionen die in der Klasse sind und auch die Member Variablen. Wir machen einen Rechtsklick auf die Klasse -> Hinzufügen -> Funktion hinzufügen.


Dann öffnet sich unser altbekannter Assistent. Als Rückgabetyp schreiben wir void. Da die Funktion nichts zurückgeben muss. Als Name geben wir m_lesen ein und fügen die Funktion hinzu. Das selbe machen wir nun nochmal und fügen die Funktion m_schreiben hinzu.


So nun genug gespielt. Jetzt gehts an's programmieren.
Wie gehen in's code Fenster und sollten nun das da stehen haben:

PHP Code:
void CSolitärHackDlg::OnBnClickedButton1()
{
    
// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
}

void CSolitärHackDlg::OnBnClickedButton2()
{
    
// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
}

void CSolitärHackDlg::m_lesen(void)
{
}

void CSolitärHackDlg::m_schreiben(void)
{

Nun rufen wir bei der Funktion OnBnClickedButton1() die funktion m_lesen auf.

PHP Code:
void CSolitärHackDlg::OnBnClickedButton1()
{
    
// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
m_lesen();

Und bei der OnBnClickedButton2 Funktion rufen wir die Funktion m_schreiben() auf.
PHP Code:
void CSolitärHackDlg::OnBnClickedButton2()
{
    
// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
m_schreiben()

So jetzt wird wenn man den Lesen Button drückt, die m_lesen() Funktion aufgerufen und wenn man den Schreiben Button drückt wird die m_schreiben() Funktion aufgerufen.

Was müssen wir machen?
Wir müssen uns einmal den Window Handle holen. Dann brauchen wir die ProcessID. Außerdem wir müssen die Pointer Adresse berechnen und den Wert holen.

Um den Window Handle zu holen müssen wir uns erstmal 2 Variablen anlegen. Dazu gehen wir in die Klassenansicht und machen einen Doppelklick auf die Klasse CSoliträHackDlg. Damit landen wir im SolitärHackDlg Header. Wenn wir runter scrollen sehen wir auch unsere 2 Funktionen m_lesen() und m_schreiben(). Da drunter legen wir uns 2 Variablen an.
Einmal eine CWnd und eine HWND.

PHP Code:
CWnd *pWnd;
HWND hWnd
CWnd ist eine Klasse von MFC. Diese brauchen wir um uns den Windo Handle zu holen. Und HWND brauchen wir um ums die ProcessID zu holen.

So dann sollte es nun so aussehen:
PHP Code:
...
...
public:
    
void m_lesen(void);
    
void m_schreiben(void);
    
CWnd *pWnd;
    
HWND hWnd
Dann gehen wir wieder in unsere m_lesen() Funktion.
Um uns den Handle zu holen schreiben wir:

PHP Code:
pWnd CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär")) 
Nun haben wir in der Variable pWnd den Handle gespeichert von Solitär.
Wir müssen aber noch den Handle in die HWND Variable bekommen, das geschiet mit:
PHP Code:
hWnd HWND(pWnd->GetSafeHwnd()); 
Für alle Fälle sollte man auch - um die Fehlersuche später zu erleichtern - eine if Abfrage machen damit wir sicher gehen können dass, das Fenster gefunden wurde.

PHP Code:
if (pWnd CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär"))) {
        
        
hWnd HWND(pWnd->GetSafeHwnd()); 
        
    }else{
    
AfxMessageBox(_T("Fenster nicht gefunden!"));
    } 
Falls dsa Fenster nun nicht gefunden wird, bekommen wir ein Pop-Up mit der Meldung "Fenster nicht gefunden".

So dann legen wir uns mal die Variablen an. Wir brauchen einmal eine Variable die, die Base Pointer adresse beinhaltet. Dann brauchen wir eine für das Offset und eine für die Adresse auf die der Pointer zeigt. Die unseren Wert beinhaltet. Da wir auch gerad bei Wert sind, dafür brauchen wir auch eine Adresse.

Dann brauchen wir eine Variable die den Process Handle Beinhaltet und eine für die Process Id. Und so sieht es dann aus.

PHP Code:
        unsigned long address1 0x01007170;
    
unsigned long offset 0x30;
    
unsigned long address2 ;
    
int value ;

    
DWORD numBytesRead;
    
HANDLE hProc;
    
DWORD procID
Nun holen wir uns die Process Id:

PHP Code:
GetWindowThreadProcessId(hWnd,&procID); 
und den Handle:
PHP Code:
hProc OpenProcess(PROCESS_ALL_ACCESSFALSEprocID); 
Nun lesen wir den Wert aus den die address1 hat und schreiben es in address2.
PHP Code:
ReadProcessMemory(hProc, (LPCVOID)address1, &address2sizeof(long), &numBytesRead); 
Nun haben wir unsere neue Adresse in address2 stehen. Aber wir müssen noch den Offset dazurechnen!

PHP Code:
address2 address2+offset 
Nun haben wir unsere Entgültige Adresse. Und können diese nun auslesen und den Wert in value schreiben.

PHP Code:
ReadProcessMemory(hProc, (LPCVOID)address2, &valuesizeof(int), &numBytesRead); 
Jetzt haben wir den Wert der neuen Adresse, die den aktuellen Punktestand beinhaltet in value drin.

Wir erinnern uns an unser Editfeld, was wir angelegt haben. Und die Variable die wir diesem Feld zugewiesen haben. Nun müssen wir den inhalt von value in m_value schreiben.

PHP Code:
m_Value.Format(_T("%i"),value); 
Damit das Editfeld auch aktualisiert wird kommt noch ein
PHP Code:
UpdateData(false); 
ans Ende und ein
PHP Code:
UpdateData(true); 
an den Anfang.
Und ein
PHP Code:
CloseHandle(hProc); 
.

So das war's dann. Wir haben unsere Lesen Funktion fertig.

Hier nochmal im ganzen:

PHP Code:
void CSolitärHackDlg::m_lesen(void)
{
    if (
pWnd CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär"))) {
    
        
hWnd HWND(pWnd->GetSafeHwnd()); 
        
    }else{
    
AfxMessageBox(_T("Fenster nicht gefunden!"));
    }
    
UpdateData(true);
    
unsigned long address1 0x01007170;
    
unsigned long offset 0x30;
    
unsigned long address2 ;
    
int value ;
    
DWORD numBytesRead;
    
HANDLE hProc;
    
    
DWORD procID;
    
GetWindowThreadProcessId(hWnd,&procID);

    
hProc OpenProcess(PROCESS_ALL_ACCESSFALSEprocID);

    
ReadProcessMemory(hProc, (LPCVOID)address1, &address2sizeof(long), &numBytesRead);
    
address2 address2+offset ;
    
ReadProcessMemory(hProc, (LPCVOID)address2, &valuesizeof(int), &numBytesRead);

    
m_Value.Format(_T("%i"),value);
    
    
UpdateData(false);
    
    
CloseHandle(hProc);

Jetzt brauchen wir noch eine schreiben Funktion.
Wir können eigentlich alles Kopieren aus der Lesen Funktion. Das Letzte ReadProcessMemory brauchen wir nicht, weil wir ja nicht den Aktuellen Stand lesen wollen. Stattdessen kommt da ein WriteProcessMemory hin.
Außerdem mussen wir uns die Eingabe holen. Also wenn man jetzt was in das Editfeld eingibt, wird das in die m_value geschrieben. m_value ist eine CString Variable und wir müssen diese erst in eine int variable konvertieren und in value schreiben. Das machen wir mit:

PHP Code:
value _wtoi (m_Value); 
_wtoi macht aus unserem CString eine int Variable und diese wird in int value geschrieben.

Dann müssen wir noch das was in value steht in den Speicher schreiben. Das machen wir mit:
PHP Code:
WriteProcessMemory(hProc,(LPVOID)address2,&value,sizeof(value),NULL); 
Und hier nochmal der ganze Quelltext der Funktion:

PHP Code:
void CSolitärHackDlg::m_schreiben(void)
{

    if (
pWnd CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär"))) {
        
        
hWnd HWND(pWnd->GetSafeHwnd()); 
        
    }else{
    
AfxMessageBox(_T("Fenster nicht gefunden!"));
    }

    
unsigned long address1 0x01007170;
    
unsigned long offset 0x30;
    
unsigned long address2 ;
    
int value ;
    
DWORD numBytesRead;
    
HANDLE hProc;
    
    
DWORD procID;
    
UpdateData(true);

    
GetWindowThreadProcessId(hWnd,&procID);

    
hProc OpenProcess(PROCESS_ALL_ACCESSFALSEprocID);

    
ReadProcessMemory(hProc, (LPCVOID)address1, &address2sizeof(long), &numBytesRead);
    
address2 address2+offset ;
    
    
value _wtoi (m_Value);
    
WriteProcessMemory(hProc,(LPVOID)address2,&value,sizeof(value),NULL);
    
    
    
UpdateData(false);
    
    
CloseHandle(hProc);

Dann kompelieren wir unser Projekt erstmal als Debug ( Grüner Pfeil zum Kompelieren):
Dann starten wir Solitär - falls es nicht mehr offen ist - und starten unseren Hack und drücken auf Lesen. Dann verschrieben wir ein paar Karten, machen Punkte und drücken wieder auf Lesen. Dann sollte sich der Wert in der Editbox ändern. Dann schreiben wir unseren eigenen Wert in die Editbox und drücken auf Schreiben. Dann sollte dieser Wert auch in Solitär unten Rechts stehen. Wenn das Funktioniert, ändern wir das Debug in Release und Kompelieren nochmal. Nun haben wir einen Fertigen Solitär Hack! Glückwunsch :P



[-]Nachwort


Puh, das war wohl bisher mein Längstes Tutorial. Ich hoffe es hat euch so die Basics von Cheat Engine , Pointern und Hacks Programmieren gezeigt.
Ich werde wenn ich mal wieder Lust habe, noch einen zweiten Teil schreiben, wo ich auch einige andere Techniken eingehen werde :P

Ich hoffe es hat euch gefallen. Falls ihr Fehler findet, könnt ihr euch melden. Bin ja auch nur ein Mensch und diese machen bekanntlich Fehler :P
Adroxxx is offline  
Thanks
608 Users
Old 03/26/2009, 18:25   #2
 
BlackFog's Avatar
 
elite*gold: 105
Join Date: Mar 2007
Posts: 5,073
Received Thanks: 558
Nettest Tutorial. Aber eine Frage: Warum ist bei dir der Solitär Punktewert nicht statisch ? Bei mir ist er das o_O

Edit:// Nein warte, sind sind doch nicht statisch Oo
BlackFog is offline  
Thanks
7 Users
Old 03/26/2009, 18:44   #3

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
Solitär ist ja jetzt auch ein sehr einfaches Beispiel. Aber nach diesem Prinzip: BP auf die Adresse setzten und schauen was da kommt und dann nach dem Hex Wert suchen, kann man in jedem Spiel vorgehen. Es kann auch sein das wenn man nach dem Hex Wert sucht 5-100 Adressen kommen. Dann muss man halt testen :P Es kann auch sein das man über mehrere Pointer gehen muss dann sieht die Adresse z.B. so aus [0x007100 + 30]+a3]+2CC] oder so ähnlich. Wie gesagt hier ein ganz einfaches Beispeil. Ich werd nochmal einen zweiten Teil machen und vielleicht noch ein kleines Tutorial wo ich mir ein schwieriges Beispiel suche. Wo man dann z.B. über mehrere Pointer gehen muss.
Adroxxx is offline  
Thanks
17 Users
Old 03/26/2009, 22:07   #4
 
Vulcanraven's Avatar
 
elite*gold: 0
Join Date: May 2006
Posts: 7,808
Received Thanks: 4,569
Nettes Tutorial für die Anfänger.
Möchte dazu noch mein kleines Cheat Engine Tutorial anbieten:

Vulcanraven is offline  
Thanks
9 Users
Old 03/27/2009, 14:15   #5
 
DamageBreaker's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 358
Received Thanks: 43
jop nice tut fleißig fleißig mach weiter so
DamageBreaker is offline  
Thanks
4 Users
Old 03/27/2009, 16:18   #6

 
iMer's Avatar
 
elite*gold: 606
Join Date: Apr 2008
Posts: 3,180
Received Thanks: 5,376
nettes tut THX

iMer
iMer is offline  
Thanks
5 Users
Old 03/27/2009, 16:21   #7
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
Gutes tut, allerdings ist MFC bei der Portierung relativ nervig, mach am besten auch mal ein Tut wie man eine Setup Anwendung für MFC Programme mit Visual Studio macht, weil es ist wirklich ätzend wenn die selbst geschriebenen Programme nur auf dem eigenen Rechner laufen.
Bot_interesierter is offline  
Thanks
5 Users
Old 03/27/2009, 17:56   #8
 
elite*gold: 19
Join Date: Aug 2007
Posts: 4,432
Received Thanks: 874
Das selbe müsste mit ArtMoney auch funktionieren. Zumindest bei XP Pinball gehts mit Artmoney. und da ist es um einiges einfacher

aber trotzdem nettes tut!
Rammsteiner is offline  
Thanks
5 Users
Old 03/27/2009, 18:00   #9

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
Quote:
Originally Posted by Bot_interesierter View Post
Gutes tut, allerdings ist MFC bei der Portierung relativ nervig, mach am besten auch mal ein Tut wie man eine Setup Anwendung für MFC Programme mit Visual Studio macht, weil es ist wirklich ätzend wenn die selbst geschriebenen Programme nur auf dem eigenen Rechner laufen.
Hatte bisher eigentlich nie Probleme meine Anwendungen auf anderen PCs zu starten. Probleme hat man nur wenn man das als Debug Kompeliert und dann verschickt. Als Release sollte es eigentlich keine Probleme geben. Falls doch einfach mal MFC als Statische DLL verwenden.

Aber ich kann später noch so ein Tutorial schreiben wie man ein Setup in Visual Studio macht. Ist ja für den ein oder anderen auch sonst Interessant.

Danke für den Tipp.

Quote:
Originally Posted by Rammsteiner View Post
Das selbe müsste mit ArtMoney auch funktionieren. Zumindest bei XP Pinball gehts mit Artmoney. und da ist es um einiges einfacher

aber trotzdem nettes tut!
Das Funktioniert mit jedem Memory Search Programm das AutoHack / Debugger funktionen hat. Man könnte auch wie ich geschrieben habe mit dem Pointer scanner vorgehen, dann sucht CE Automatisch den Pointer. Aber da lernt man ja nix :P
Adroxxx is offline  
Thanks
9 Users
Old 03/27/2009, 19:51   #10
 
USB Schnittstelle's Avatar
 
elite*gold: 100
Join Date: Sep 2005
Posts: 21,433
Received Thanks: 4,764
#sticked
USB Schnittstelle is offline  
Thanks
9 Users
Old 03/28/2009, 02:14   #11

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
Quote:
Originally Posted by Bot_interesierter View Post
Gutes tut, allerdings ist MFC bei der Portierung relativ nervig, mach am besten auch mal ein Tut wie man eine Setup Anwendung für MFC Programme mit Visual Studio macht, weil es ist wirklich ätzend wenn die selbst geschriebenen Programme nur auf dem eigenen Rechner laufen.
Adroxxx is offline  
Old 04/06/2009, 17:32   #12
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
hallo, ich habe eine frage die nur zum teil mit deinem tut zu tun hat. undzwar würde ich gerne den base pointer einer adresse finden.

habe mir den ersten pointer gesucht der leider nicht statisch ist. jetzt bin ich auf diesen pointer und dann wieder auf "what access...." naja im endeffekt findet er dort eine ganze menge, siehe screen. weiß nur nicht wie ich da jetzt weiterverfahren soll.



wäre nett wenn mir da jemand unter die arme greifen könnte.
kknb is offline  
Old 04/07/2009, 15:44   #13

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
Ich würde mir mal das erste oder dritte mov esi / eax ,[eax+2x] anschauen.
Und was für eine Adresse eax da hat und mal nach der Suchen.
Adroxxx is offline  
Old 04/07/2009, 21:42   #14
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
danke für den hinweis, doch leider bin ich so nicht weitergekommen, gibt es irgendwas bestimmtes wodrauf ich achten muss?
kknb is offline  
Old 04/08/2009, 23:27   #15
 
elite*gold: 0
Join Date: Feb 2009
Posts: 107
Received Thanks: 34
ich hab ne frage be mir findet CE immer mehrere adressen eben z.B. 4 kann mir einer sagen wo der fehler liegt habe auf all gestellt und alles aber er findet immer mehrere
PayOrDie is offline  
Reply




All times are GMT +2. The time now is 07:39.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.