Problem mit void* Zeiger



  • Hoi also ich habe eine Funktion die ein void* zurückgibt.
    Diesen Wert welchen die Funktion zurück gibt brauche ich in einer unsigned Variable.

    void* wert = VirtualAllocEx(handle, NULL, 200, MEM_COMMIT , PAGE_EXECUTE_READWRITE );
    unsigned var = wert;
    

    Konvertierung von 'void *' nach 'unsigned int' nicht möglich. 😞

    Wie macht man es richtig?



  • Falls das irgendeinen Sinn hat, was du da machst, dann konvertiere explizit mit reinterpret_cast.

    Mein Vorschlag wäre allerdings: lerne erst mal ein bisschen programmieren, bevor du dich an die WinAPI rantraust.



  • ptr^^ schrieb:

    Diesen Wert welchen die Funktion zurück gibt brauche ich in einer unsigned Variable.

    Bist du dir da sicher?



  • reinterpret_cast funktioniert perfekt danke.

    out schrieb:

    Bist du dir da sicher?

    Ja

    Ich erklär mal kurz was ich genau vor hab eventuell kann man das auch besser lösen:

    VirtualAllocEx reserviert in einem Fremden Prozess Speicher und gibt mir die Adresse zurück wo der Speicher reserviert wurde.

    In dem fremden Prozess gib es eine Stelle die ich Patchen will.

    Dort steht z.b.: 01000FDD call 01000FEE

    Jetzt ersetze ich: call 01000FEE z.b. durch: call 3b0000

    Um den call auf die Adresse 3b0000 machen zu können muss ich berechnen welche Opcodes ich ändern muss und dafür brauche ich den Wert den mir VirtualAllocEx zurückgibt diesen Wert übergebe ich dann an meine Berechnungsfunktion die Funktion erwartet 2 unsigned Werte.

    unsigned CalculateCallAddress( unsigned TJA, unsigned SJA)
    {
      return  (TJA - SJA ) - 5;
    }
    

    unsigned CalculateCallAddress( unsigned TJA, unsigned SJA);

    Gibt mir den passenden Wert zurück den schreibe ich dann nur noch an die Adresse
    1000FDE.

    Ich werd mal noch mehrere Test an verschiedenen Anwendungen durchführen damit ich auch ganz sicher bin das keine Probleme auftreten.



  • Das wird so auf einem 64-Bit System nicht mehr funktionieren. Nimm uintptr_t.



  • _matze schrieb:

    Mein Vorschlag wäre allerdings: lerne erst mal ein bisschen programmieren, bevor du dich an die WinAPI rantraust.

    Naja, ich hab sowas alles irgendwann schon mal gemacht, aber ab und zu vergesse ich dann ein paar Sachen. 😞
    Und dann kommen so dummen Fragen auf ...

    Ich bin auch nur Hobby Programmierer, ich hab also nicht alt so viel damit zu tun.


Anmelden zum Antworten