Wie lese ich diesen Pointer aus Oo!?

09/25/2012 04:09 R0bb3lR00t#1
Hey, ich habe folgendes mit CE herausgefunden:
[Only registered and activated users can see links. Click Here To Register...]

Wie gehe ich bitte da vor!? Wie soll ich mit dem String umgehen Oo?
09/25/2012 12:46 Ende!#2
[Only registered and activated users can see links. Click Here To Register...]

Der zurückgegebene HMODULE Wert ist die Basisadresse des Moduls, zu der du dann dein Offset hinzurechnest (den HMODULE typed Wert musst du natürlich erstmal zur irgendetwas casten, womit man anständig rechnen kann).
09/25/2012 15:24 R0bb3lR00t#3
Hey, erstmal vielen Dank für deine Antwort. Ich programmiere mit Visual Basic und bin sozusagen "Eigentümer" über den Prozess.

Also ich kann auf diesen Prozess zugreifen, beispielsweise mit Launcher.MainWindowHandle, da ich den Prozess über mein Programm selber starte.

Ist das der richtige Wert!?

EDIT:
Habs so ausprobiert
Code:
ReadProcessMemory(readHandle, Hex(pClient.MainWindowHandle) + &H17A0C08 + &H6CC, bytes, 24, 0)
kommt aber die Fehlermeldung das eine Number nicht in einen IntPtr umgewandelt werden kann. Als o die Funktion gibt ja einen IntPtr wieder (normal), mit meinen Parametern allerdings ne Number, daher kommt der Fehler. Aber ich wandel den MainWindowHandle doch extra in Hex um Oo?

EDIT2:
Okay, der Fehler taucht bei der Funktion Hex(pClient.MainWindowHandle) auf.. Der bekommt das anscheinend nicht in eine Hex value gewandelt.
09/25/2012 17:59 Ende!#4
Ich ging davon aus, dass du injected arbeitest. Und nein, das Window-Handle ist nicht gemeint. Da ich mich mit VB und dem restlichen .NET-Zeugs rein gar nicht auskenne, kann ich dir nur auflisten, welche Funktionen ich in C/C++ verwenden würde, um an die Basisadresse zu kommen.

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Da du offenkundig noch ein ziemlicher Anfänger bist, könntest du notfalls auch einfach 0x400000 zu deinem Offset addieren (dies ist, wenn ASLR nicht aktiviert ist und die Basisadresse des Executables nicht verändert wurde, die Standard-Basisadresse bei Windows). Falls das nicht funktioniert, kannst du versuchen mittels eines Tools wie LoadPE die Basisadresse zu ermitteln und wenn auch das nicht funktioniert, hat dein Ziel-Programm wohl ASLR aktiviert und du musst zwangsläufig die Basis-Adresse zur Laufzeit ermitteln.
09/25/2012 18:22 R0bb3lR00t#5
In Sachen Peek and Poke bin ich noch n relativer Anfänger ja.

Das mit dem 0x400000(in VB &H400000) habe ich versucht:
Code:
ReadProcessMemory(readHandle, &H400000 + &H204, bytes, 24, rw)
Ich bekomme einen leeren String zurück. Kann es sein das ich das falsch zusammengesetzt habe, denn CE meldet mir ja das der erste Read-Vorgang mit "Launcher+&H1BAF178" + dem Offset &H204 durchgeführt wird.
09/25/2012 19:48 Ende!#6
Code:
&H400000 + &H17A0C08
So meinte ich das. Dein 2. Offset kannst du nicht einfach addieren, du musst den Pointer erst nochmal auslesen und dann nochmal den ausgelesenen Wert + dein 2. Offset auslesen, um an den finalen Wert zu kommen. Das wurde dir in deinem anderen Thread aber auch schon gesagt. :|
09/25/2012 20:36 R0bb3lR00t#7
Ja das habe ich ja verstanden gehabt, nur ich hatte diese Zusammensetzung oben nicht verstanden.. Deshalb..

Thx anyways, ich probier mich mal durch.


EDIT:

Ich habs nun hinbekommen, die BaseAdress bekomme ich ganz einfach über eine Eigenschaft der Process Klasse.

Code:
Dim BaseAdress As Integer = Process.MainModule.BaseAdress
Eigentlich ganz easy wenn man diese Eigenschaft kennt UND man "owner" des Prozesses ist :).

Danke für die Hilfe!