WPM - Cpp - was mache ich falsch...

10/20/2009 16:47 arnibold#1
Hallo,
Ich wollte die Adresse, die für die Lebenspunkte in Risen zuständig ist, nopen. Das Spiel stürzt aber ab, wenn ich z.B. von einer Klippe o.ä. springe. Ich kann die Ursache jedoch nicht finden.

Adresse: 202D9055
Original: 279870601 hex: 0x10AE7C89
Noped: 2425393296 hex: 0x90909090

Code:
[...]
int lebenhackan [4] = {0x90, 0x90, 0x90, 0x90};
[...]
    DWORD prozess;
    GetWindowThreadProcessId(window, &prozess);
    HANDLE handle;
    handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozess);
    DWORD puffer = NULL;
[...]
WriteProcessMemory(handle,(void*)(0x202D9055),&lebenhackan,4,&puffer);

hat sich erledigt ^_^
Thanks an ale die sich diesen sinnlosen Beitrag durchgelsen haben
10/20/2009 17:07 MrSm!th#2
ich bin mir 100%ig sicher dass diese Funktion die die LP abzieht einen Rückgabewert hat (die LP^^) und wenn du einfach die Funktion noppest, dann crasht das game
außerdem wird die LP funktion ja sicher nicht nur einmal aufgerufen, sondern die ganze zeit wenn LP abgezogen werden.
das heißt, dass auch in die funktion ein RET sein muss, um wieder zum spielcode zu kommen
wenn du einfach noppst bleibt das spiel in der genoppten LP funktion hängen

machs doch ein bisschen professioneller indem du einen wert in die LP adresse verschiebst (denn sicherlich wird der funktion der dmg übergeben der gemacht wurde) anstatt den dmg von den LP abziehen zu lassen
oder du noppst nur den teil der die LP verändert aber nicht die ganze funktion
10/20/2009 17:11 arnibold#3
Tja, falsch gedacht, ich hab ein Komma hinter der 90 vergessen xDDD
10/20/2009 17:28 MrSm!th#4
hinter die letzte 90 gehört doch gar kein komma
und mein gedanke war trotzdem richtig ;P
selbst wenn es auf dein spiel vielleicht nicht zutrifft (was eigentlich nicht möglich ist, da ja irgendwo ein RET sein muss ....obwohl^^ wenn du natürlich den nicht überschrieben hast, dann ist das natürlich nicht mehr so unmöglich)
was genau stand denn in der ganzen routine? (also in asm)