Speicherzugriff auf flyff

Online-tutorials.net Forenübersicht/C++ / C#/Speicherzugriff auf flyff

Antworten Neues Thema Bottom Seite 1 

Autor | Nachricht      nächster / vorheriger Thread

Melan
Einsteiger

avatar

Registriert seit: 09.2007
Beiträge:3

Speicherzugriff auf flyff
Huhu,
ich habe die tutorials gemacht und wollte dann
versuchen in flyff werte auszulesen z.b. die aktuellen Hp
flyff ist sowas ähnliches wie wow
hier der code:

Code:


#include <windows.h> 
#include <iostream> 

using namespace std; 

typedef unsigned int uint; 

void GetMemMinMax(void); 
void ScanMem(DWORD start, DWORD end); 

HANDLE hproc; 
DWORD procid; 

int main(void) 

    HWND hWnd; 

    hWnd = FindWindow(0,"FLYFF"); 
    if(!hWnd) 
        return 0; 

    GetWindowThreadProcessId(hWnd, &procid); 
    hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid); 
    GetMemMinMax(); 
    CloseHandle(hproc);//<-- Wichtig! 
    return 0; 


void GetMemMinMax(void) 

    MEMORY_BASIC_INFORMATION mbi; 
    unsigned int adress = 0x400000; 
    do 
    { 
        VirtualQueryEx( 
                        hproc, 
                        (void*)adress, 
                        &mbi, 
                        sizeof(MEMORY_BASIC_INFORMATION) 
                    ); 

        if((mbi.State == MEM_COMMIT)&& 
           (mbi.Protect == PAGE_READWRITE)&& 
           (mbi.Type == MEM_PRIVATE)) 
        { 
            uint start = (uint)mbi.BaseAddress; 
            uint end = (uint)mbi.BaseAddress+mbi.RegionSize; 

            cout << "Bereich: " << 
                            hex << start << " - " << 
                            hex << end; 

            ScanMem(start,end); 
        } 

        adress += mbi.RegionSize; 
    } while(adress < 0x80000000); 



void ScanMem(DWORD start, DWORD end) 

    cout << " Bereich wird gescannt... "; 
    DWORD read = 0; 
    int buffer = 0; 
    for(start;start<end;start++) 
    { 
        ReadProcessMemory( 
                            hproc, 
                            (void*)start, 
                            &buffer, 
                            sizeof(int), 
                            &read 
                        ); 
        if(buffer == 15) 
        { 
            cout << "Wert an " << hex << start << " gefunden!"; 
            char choice; 
            cout << "Abbrechen? [j,n]"; 
            cin >> choice; 
            if(choice == 'j') 
                return; 
        } 
    } 



das problem ist es bleibt nur so 2 sekunden offen und dann schlisst sich das programm ohne das etwas da steht
wäre echt nett für die Hilfe
vielen dank

Dieser Beitrag wurde zuletzt am 25.10.2007 22:02 von Simon Hecht editiert.



25.10.2007 16:41Profil >> Zitat >> IP gespeichert 
Keywords:speicherzugriff hp und so

Simon Hecht
Online-tutorials.net Administrator

avatar

Registriert seit: 01.1970
Wohnort:Dornbirn
Beiträge:1177

C++, Fenster schließt sich
Hallo Melan,

Dein Programm schließt sich sofort weil es fertig ist.

Code:


cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
cin.get(); 



vor return 0; in der main Funktion sollte das Programm offen halten. Wenn es offen bleibt kannst du nachschauen was nicht in Ordnung ist, bei if(!hWnd) solltest du allerdings noch eine Fehlermeldung zurückgeben, und ebenfalls wie oben mit cin.get() einen Tastendruck abfragen damit das Programm nicht geschlossen wird.

Ich hoffe das hilft dir weiter.

Gruß,
Simon
-------------------

http://www.online-tutorials.net/wiki/funktionsname

Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials



25.10.2007 22:01Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:C++, Fenster schließt sich

Melan
Einsteiger

avatar

Registriert seit: 09.2007
Beiträge:3


vielen dank jetz gehts.
Dann noch 2 fragen.
buffer ist der Wert für den gesucht wird sehe ich das richtig?
Wie kann ich das bewerkstelligen das ich z.b. machen kann
if (HP<50) then food. also food weiß ich aber Hp<50
muss ich dann die addresse auf der der wert der hp gefunden wurde
mit 50 vergleichen oder wie komm ich von der addresse
auf den wert, der auf dieser addresse liegt?
danke

26.10.2007 06:54Profil >> Zitat >> IP gespeichert 

Simon Hecht
Online-tutorials.net Administrator

avatar

Registriert seit: 01.1970
Wohnort:Dornbirn
Beiträge:1177

Speicherzugriff, Trainer
Ja buffer ist der Wert, der gefunden wurde. Allerdings wird es je nach Speicherbedarf des Programms viele Werte finden. Darum gehst du so vor:

Im Spiel holst du dir deine Lebenspunktanzahl, du fragst buffer nach dem Wert ab. -> du findest einige Adressen die du dir in einer Liste merkst.

Jetzt gehst du wieder in das Spiel und änderst die Lebenspunktanzahl -> du durchsuchst die Adressen nochmal nach dem wert und filterst damit die Adressen die sich wieder geändert haben.

Das machst du so lange bis du nur noch eine Adresse hast. Normalerweise reicht ein durchgang.

Die Adresse kannst du jetzt verändern: char *adresse = start;
*adresse = 15; //neuer wert

Ich hoffe das hilft dir, tut mir leid das ich erst jetzt antworte.
-------------------

http://www.online-tutorials.net/wiki/funktionsname

Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials

Firefox - besser durch das Web!



15.11.2007 11:25Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:Speicherzugriff, Trainer
                   nächster / vorheriger Thread

Antworten Neues Thema Top Seite 1