Autor Beitrag
q19
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 09.07.10 14:59 
Hi,

Folgender Sachverhalt:

Ich habe eine Speicheraddresse(Variablenname=Basis1) welches auf eine weitere Addresse verweist (Variablenname=Basis2).
Nun soll diesem Wert (Basis2) ein Offset (hier: 1908) hinzu addiert werden.
Die daraus entstehende Adresse (Variablenname=Result) soll ausgelesen werden.

Mein Quelltext sieht so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
...
var
  Form1: TForm1;
  basis1,basis2,Result:pointer;
  bytes:dword;
  Wert:integer;
  WindowTitle : pansichar;
  WindowName, ThreadID, ProcessID, HandleWindow : integer;

...
Basis1:=ptr($0092969c);

WindowTitle:='...';
WindowName:=findwindow(nil,WindowTitle);
ThreadID:=getwindowthreadprocessid(WindowName,@processid);
HandleWindow:=OpenProcess(Process_all_access,false,processid);
readprocessmemory(handlewindow,Basis1,@Basis2,4,bytes);
closehandle(handlewindow);

Result:=Basis2+1908//----Hier steckt der Wurm!

HandleWindow:=OpenProcess(Process_all_access,false,processid);
readprocessmemory(handlewindow,result,@Wert,4,bytes);
closehandle(handlewindow);

showmessage(inttostr(Wert));



Kann mit bitte jemand weiterhelfen...

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 09.07.10 15:15 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Result := Pointer(UINT_PTR(Basis2) + 1908);

// Oder

Result := Basis2;
Inc(PByte(Result), 1908);


Äusserst unschöner Code.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 09.07.10 15:55 
@delfiphan: so gehts nicht. es geht um nen fremden prozess.

also einfach so machen wie du es schon machst ist es richtig.
check mal deine adressen im debugger. vl einfach ein $1908 statt 1908?
BTW: WArum schließt du dein Handle und öffnest es gleich wieder?
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 09.07.10 16:19 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
@delfiphan: so gehts nicht. es geht um nen fremden prozess.

Er hat einen Pointer und will einen Offset in Bytes hinzuaddieren. Ist doch egal ob es um einen fremden Prozess geht.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 09.07.10 20:57 
ah sry...
einfacher gehts aber wann du die typen deiner variablen auf cardinal änderst. dann kannst ganz leicht addieren

PS: Das nächste mal den Compilerfehler mitschreiben! sonst gibts nen bann