pointer problem



  • hallo ich hab ein verständnis problem. möchte gerne einen wert aus einer adresse bekommen, nur weis ich leider nicht genau wie ich das machen soll.

    also ich hab eine dll geschrieben, mit der ich dann ein wert aus einem prozess lesen will, indem ich sie injeziere.. das funktioniert zwar, doch nur mit "einfachen" adressen ohne pointer.

    zb

    float x = *(float*)(0x00123456); // das funktioniert!
    

    hier zu dem was nicht funktionieren will. so mach ich es gerade:

    unsigned long a;
            float x = 0;
    
    	ReadProcessMemory( hGW, (void*)0x00123456, &a, sizeof(a), 0 );
    	ReadProcessMemory( hGW, (void*)(a + 0x18), &a, sizeof(a), 0 );
    	ReadProcessMemory( hGW, (void*)(a + 0x8), &a, sizeof(a), 0 );
    	ReadProcessMemory( hGW, (void*)(a + 0xe8), &a, sizeof(a), 0 );
    	ReadProcessMemory( hGW, (void*)(a + target * 0x4), &a, sizeof(a), 0 );
    	ReadProcessMemory( hGW, (void*)(a + 0x78), &x, sizeof(x), 0 );
    

    das hab ich nun so versuch zu lösen:

    float x = *(float*)((((((0x00123456) + 0x18) + 0x8) + 0xE8) + target * 0x4) +0x78);
    

    geht nur leider nicht, was mach ich falsch? bzw. wie kann ich das lösen?



  • float x = *(float*)((((((0x00123456) + 0x18) + 0x8) + 0xE8) + target * 0x4) +0x78);
    

    Die Werte sollen ja nicht zur Addresse 0x00123456 addiert werden, sondern zu der Addresse, zu der der Pointer zeigt oder? Dazu brauchst du erst den Wert an der Addresse und dann kannst du erst die einzelnen Offsets addieren. Du musst erst nach (float*) casten und dann die offsets addieren


Anmelden zum Antworten