Offset lade problem in Delphi

06/12/2010 14:33 Sᴡoosh#1
Hallo leute,

habe da ein kleines problem. Ich habe ein programm in delphi geschrieben, welches ein wert an einer addresse verändert. klappt gut. Die addresse hat das format $12345678. Das ganze funktioniert so lange, bis ich diese addresse nicht fest im programm als constant eingespeichert habe, sondern aus einem edit auslesen will (als string halt).

Nun meine Frage : Wie kann ich die addresse $12345678 aus dem Edit auslesen und dannach mit readprocessmemory benutzen? Wenn ich sie mit strtoint(string) auslese, dann verschwindet das $, und ich kriege die hexadezimale addresse als Dezimal addresse.

Wie kann ich den string ''$12345678'' mit readprocessmemory einlesen?

Mir geht es nicht darum, das ich wissen möchte wie readprocessmemory benutzt wird, das weiss ich schon!

Danke.

-298
06/12/2010 15:22 schlurmann#2
Also laut [Only registered and activated users can see links. Click Here To Register...] funktioniert die Umwandlung auch aus dem Hexadezimalsystem. Versuch's mal mit 0x anstatt $, oder poste den gesamten Code.
06/12/2010 15:43 Sᴡoosh#3
Danke für die schnelle Antwort.

Mein problem liegt ja nicht darin, das ich den wert umwandeln will. Es liegt darin, das ich eben diesen Offset Als String gespeichert habe, und diesen dann mit dem $ vorne dran als Cardinal weiterverwenden möchte. Und diese Umwandlung gelingt mir nicht.

Source :

Code:
MaxMPoffset := strtoint(Offsetstr);
MaxMPPointer2 := MaxMPPointer2 +MaxMPoffset;
ReadProcessMemory(Pidhandle, ptr(MaxMPPointer2), @MaxMP, Dbuff, wbuff);
MaxMPPointer2 ist Eine Cardinal addresse in folgender form : $12345678.
Offsetstr ist ''$B03'' als STRING. Wenn ich dann aber strtoint benutze, dann kriege ich den wert in Dezimalschreibweise, aber ich brauche die hexadezimalschreibweise mit dem $ vorne.

Wie kann ich jetzt den String ''$B03'' in ein Cardinal ''$B03'' umwandeln?


Hoffentlich ist jetzt klarer, was ich sagen will :o
06/12/2010 16:35 schlurmann#4
Die strtoint Beschreibung sagt eindeutig, dass auch Hexadezimal-Strings erkannt werden. Kann mir kaum vorstellen dass das bei dir nicht funktioniert.
06/12/2010 16:42 Sᴡoosh#5
Es funktioniert. Jedoch wandelt strtoint in eine Dezimal addresse um, ohne das $[addresse].
06/12/2010 16:57 HardCore.1337#6
Es gibt eine Funktion die IntToHex heißt.
Vlt. hilft die das weiter.
06/12/2010 17:34 schlurmann#7
Quote:
Originally Posted by 2981611 View Post
Es funktioniert. Jedoch wandelt strtoint in eine Dezimal addresse um, ohne das $[addresse].
Das ist ReadProcessMemory doch egal in welchem Zahlensystem die Adresse vorliegt, das ist nur eine Frage der Repräsentation.
06/12/2010 17:35 HardCore.1337#8
Naja, aber er hat recht. Ohne dem $ geht es nicht.
06/12/2010 17:54 Sᴡoosh#9
Ja, und das ist genau mein problem :(

Danke trotzdem für die vielen Antworten.
06/12/2010 17:57 HardCore.1337#10
Ich weiß gar nicht wie ich das immer hin bekommen habe. :(
Ich habe glaube nur den Integerwert in einen Pointer umgewandelt.
Aber sicher bin ich mir nicht.
06/12/2010 18:00 Sᴡoosh#11
Schade, denn ich wollte den benutzern meines bots die möglichkeit geben, ihre eigenen Addressen und offsets eintragen zu können. Muss mir wohl was anderes überlegen :(
06/12/2010 18:55 schlurmann#12
Da du dein Problem immer noch nicht ausreichend beschrieben hast wird dir hier wohl eher weniger jemand helfen.

Wenn du aus $12345 auf 74565 (das ist der Dezimalwert) stimmt doch alles. Wo ist dein Problem?
06/18/2010 20:59 Sᴡoosh#13
@ Hardcore.1337

Weisst du denn noch (in etwa) wie du das zustande gebracht hast?
06/18/2010 21:42 HardCore.1337#14
hast du ICQ oder so?
Da helf ich dir mal.
06/18/2010 21:43 Sᴡoosh#15
Quote:
Originally Posted by phrenesis View Post
stellst du dich extra so blöd an oder kommt es mir nur so vor?
Ehhh....

Ich kann Eine addresse mit Write/readprocessmemory nur benutzen, wenn ein ''$'' vorne an die addresse rangestellt ist. Das heisst, ich kann keine reinen Dezimalen addressen die ich mit strtoint() umgewandelt habe, benutzen.

Wiso stelle ich mich zu blöd an?