Ergebnis 1 bis 4 von 4
  1. #1
    just ir0nic Avatar von ir0n
    Registriert seit
    15.09.2007
    Beiträge
    218

    Standard [Memory] Adressen, Pointer ecetera

    Hi.
    Hab gerade mal wieder Freude am herausfinden von Adressen bekommen und bin deshalb wieder am gleichen Problem, vor dem ich damals stand und weswegen ich damit schleunigst wieder aufgehört habe.

    Ich erkläre das ganze mal an einem Beispiel.

    1. Wir haben ein Spiel, welches eine Klasse für Spieler enthält:
    PHP-Code:
    class CPlayer
    {
    public:
        
    CPlayer(const char *pszName);
        
    void spawn(void);
        
    // ...

    private:
        const 
    char *m_pszName;
        
    int m_iHealth;
        
    Weapon m_Weapon;
        
    Vector m_vecPosition;
    }; 
    2. Wir gehen davon aus, dass 10 Spieler im Spiel sind, denmach gibt es 10 Instanzen der Klasse CPlayer
    3. Wir finden die Adresse der Lebenspunke (Health) heraus (für mich selber und alle anderen Spieler)
    4. Jetzt müssten wir die Basis der untersten (ersten) Instanz herausfinden
    5. Dann noch herausfinden wie groß die Spielerklasse ist (ist ja nicht bekannt, dass da oben ist nur eine Annahme)
    6. Wenn man alles das zusammen hat, kann man loslegen

    So - ab Punkt 4 geht es für mich los, dass ich nicht mehr weiterkomme. Wie zum Teufel komm ich auf Größe der Spielerklasse und wie finde ich heraus, wo die erste Instanz beginnt?
    Wenn man alles zusammen hat, kann man eigentlich ganz einfach fortfahren, richtig?
    PHP-Code:
    unsigned long nBase 0x00002000// natürlich Schwachsinn
    unsigned int iSize 0x7// stimmt das überhaupt so? Meine Annahme: Klasse + 2 Funktionen + 4 Member
    unsigned int iNameOffset 0x3;
    unsigned int iHealthOffset 0x4;
    unsigned int iPlayers 10;

    for (
    unsigned int i 0iPlayersi++)
    {
        
    unsigned long nAddress nBase iSize;
        
    cout << *((const char*)(nAdresse iNameOffset)) << " hat " << *((int)(nAdresse iHealthOffset)) << " Lebenspunkt!" << endl;

    Ich hoffe meine Annahme ist so richtig und jemand kann mir dabei helfen

    Gruß
    Geändert von ir0n (26.07.2009 um 16:12 Uhr)
    F++ - Erweiterung für Free-Hack
    Aktuelle Version: 1.0.0

    Biete
    :: Codinghilfe in C & C++, C#, VB.NET, Python, Java, PHP, (X)HTML, CSS, JavaScript, Bash
    :: Programmerstellung (kleinere, auch Bots oder ähnliches) auf Wunsch (C & C++ ohne GUI!)
    :: Hilfe beim erfolgreichen Aufbau einer Website und deren Weiterführung
    :: Privathack für CS:S (auf Wunsch auch extra Anfertigungen)


    Suche
    :: STEAM Accounts (CS:S - DoD:S - TF2 - L4D)
    :: Bietet was!


    Kontakt / Sonstiges
    :: Private Nachricht (*klick*)
    :: BlackMarket Profil (*klick*)

  2. #2
    W32.Lovgate
    Registriert seit
    01.07.2007
    Beiträge
    354

    Standard

    Code:
        const char *m_pszName;
        int m_iHealth;
        Weapon m_Weapon;
        Vector m_vecPosition;
    
    ein pointer hat immer 4 Bytes
    int hat auch vier bytes
    Weapon hat sizeof(Weapon) bytes
    Vector hat sizeof(Vector) bytes

    Basis: int pointertobasis = (int) &ersteInstanz;

    Das ganze klappt nur wenn du ein Array von der Klasse hast, mal so nebenbei bemerkt.

    Ich hoffe ich konnte dir etwas weiterhelfen.

  3. #3
    just ir0nic Avatar von ir0n
    Registriert seit
    15.09.2007
    Beiträge
    218

    Standard

    Hi.
    Das mit der Basis ist mir klar, nur wie komme ich an die erste Instanz und wo weiß ich, wo sie anfängt? Und wie kriegt man den Array? Ich habe mir so vorgestellt, dass wenn man mehrere Adressen zu Lebenspunkten sucht, dass man dann ein Muster an Adressen erkennt, so dass z.B. die Lebenspunkteadressen immer einen Abstand von z.B. 0x20 haben. Dann wüsste ich, dass eine Klasse 0x20 Groß ist.

    Gruß
    F++ - Erweiterung für Free-Hack
    Aktuelle Version: 1.0.0

    Biete
    :: Codinghilfe in C & C++, C#, VB.NET, Python, Java, PHP, (X)HTML, CSS, JavaScript, Bash
    :: Programmerstellung (kleinere, auch Bots oder ähnliches) auf Wunsch (C & C++ ohne GUI!)
    :: Hilfe beim erfolgreichen Aufbau einer Website und deren Weiterführung
    :: Privathack für CS:S (auf Wunsch auch extra Anfertigungen)


    Suche
    :: STEAM Accounts (CS:S - DoD:S - TF2 - L4D)
    :: Bietet was!


    Kontakt / Sonstiges
    :: Private Nachricht (*klick*)
    :: BlackMarket Profil (*klick*)

  4. #4
    Anfänger
    Registriert seit
    17.03.2009
    Beiträge
    28

    Standard

    das is doch schmarn ...

    der speicher wird ya nicht unbedingt "hintereinander" reserviert ...

    es kann sein das dazwischen riesen große abstände sind usw ...

    wenn ich deine frage jetzt mal genau checken würde, könnte ich dir evtl weiterhelfen...

    was willst du denn eigendlich genau machen jetz?!
    Sometimes someone should search something

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •