Entwickler-Ecke

Windows API - Offset nutzen, wie?


Iaa_1 - Fr 11.07.08 09:36
Titel: Offset nutzen, wie?
Hi leute ich habe folgendes Problem:
Ich möchte in einem Prozess die Adrese mit einer bestimmten Value überschreiben.
Soweit geht alles jedoch nun kommt das Problem:
Für den Rest den ich vorhabe muss ich Offset anwenden, nur wie?
Dies ist mein jetziger Source fürs Überschreiben:

Delphi-Quelltext
1:
2:
buffer^:=Chr($2E4);
WriteProcessMemory(whandle,ptr($139D728),buffer,1,write);


Quelltext
1:
2:
3:
Offset= 2E4
Adresse= 139D728
Value= 0

aber wie mache ich das dann?
(Habe mal anstatt 0 für die Value dort mal den Offset eingegeben: geht nicht.)


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Fr 11.07.2008 um 09:59
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Tilman - Fr 11.07.08 16:17

Öhm... wandle Offset und Adresse in integer um und addiere sie einfach? Muss aber zugeben dass ich nicht ganz durchsteige was da gemacht werden soll.


Delphi-Quelltext
1:
2:
zahl := integer(adresse);
adresse := pointer(zahl);


Iaa_1 - Fr 11.07.08 16:30

das verstehe ich nicht,wie umwandeln und wie dann addieren?


Tilman - Fr 11.07.08 16:37


Delphi-Quelltext
1:
2:
buffer^:=Chr($2E4);
WriteProcessMemory(whandle,ptr($2E4+$139D728),buffer,1,write);


Aber mir kommt das komisch vor sag ich gleich.


Iaa_1 - Fr 11.07.08 16:43


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:
procedure TForm1.Recoil(Sender: TObject);
var
fenster, whandle, prozess, thread:integer;
buffer:pchar;
write:cardinal;
begin
fenster:=FindWindow(nil'WarRock');
timer1.enabled:=false;
If fenster=0 then showmessage('Das Spiel ist nicht gestartet!')
else begin
timer4.enabled:=true;
thread:=GetWindowThreadProcessId(fenster,@prozess);
whandle:=OpenProcess(PROCESS_ALL_ACCESS,False,prozess);
GetMem(buffer,1);
buffer^:=Chr($2DC);
WriteProcessMemory(whandle,ptr($2DC+$139D728),buffer,1,write);
buffer^:=Chr($2E0);
WriteProcessMemory(whandle,ptr($2E0+$139D728),buffer,1,write);
buffer^:=Chr($2E4);
WriteProcessMemory(whandle,ptr($2E4+$139D728),buffer,1,write);
FreeMem(buffer);
closehandle(whandle);
end;
end;
end.


also das geht schonmal nicht... :(


Tilman - Fr 11.07.08 16:46

Du hast hier hardgecodete Adressen - wo hast du die her? Normalerweise werden Speicheradressen von Windows dynamisch vergeben. Sie stimmen also bei einem aufruf des Programms - un im nächsten nicht mehr.


F34r0fTh3D4rk - Fr 11.07.08 16:50

Und cheaten in Multiplayerspielen wird auch nicht gerne gesehen.

mfg


Iaa_1 - Fr 11.07.08 16:51

die adressen stammen von dir^^ (die umgerechneten)


Tilman - Fr 11.07.08 16:53

user profile iconIaa_1 hat folgendes geschrieben:
die adressen stammen von dir^^ (die umgerechneten)


Jaja, sehr witzig ^^
$139D728 mein ich. Woher kommt das.


Iaa_1 - Fr 11.07.08 16:55

ach das, das habe ich in einer Liste gefunden:
Die Liste wird immer geupdatet und die nutze ich eigentlich sonst auch und da gings (bei Values freezen ohne offset).


Iaa_1 - Sa 12.07.08 20:19

weiss es sonst keiner?:(


Xentar - Sa 12.07.08 21:52

Google meint, dass WarRock ein Onlinespiel sei.. und das was du vorhast, verstößt sicher gegen die AGBs...

Kann ein Mod bitte hier den Thread schließen?


elundril - So 13.07.08 04:34

**auf anraten zensiert**

hey, tino, gausi oder sonstwer vom mod-team, könnt ihr bitte die IP-Adresse an PunkBuster bzw an K2 weiterleiten damit der typ gesperrt wird?

lg


ZeitGeist87 - So 13.07.08 04:46

Elundril..nicht sehr konstruktiv..geht auch in einem anderen Tonfall..


elundril - So 13.07.08 04:48

gehts denn überhaupt konstruktiv? und mein tonfall könnte schlimmer sein, dürfte eigentlich sogar, immerhin hab ich wegen solchen leuten zum spielen aufgehört!

//edit: sry, du hast recht. ich werd meinen beitrag zensieren. Da is die aufgestaute wut gegen hacker wohl etwas durchgekommen. tut mir leid.


ZeitGeist87 - So 13.07.08 04:56

Ja, geht es!

Warum und weshalb du aufgehört hast sind deine persönlichen Gründe, und klar ist Cheaten/Botten etc. wirklich nicht schön.
Aber erklär ihm das doch per PN ;-)


F34r0fTh3D4rk - So 13.07.08 12:10

Die IP-Adresse wird da aber auch nicht viel bringen ;)

mfg


Iaa_1 - Mo 14.07.08 14:07

oh man -.-
aber ihr wisst das net das game warrock gemeint ist?
und ja cheaten ist doof ...


elundril - Mo 14.07.08 14:38

dann verrat uns mal was du mit deinem programm vor hast? und ich kenn nur ein programm das warrock heißt...


Fabian E. - Mo 14.07.08 14:50

user profile iconIaa_1 hat folgendes geschrieben:

aber ihr wisst das net das game warrock gemeint ist?


user profile iconIaa_1 hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Recoil(Sender: TObject);
[...]
fenster:=FindWindow(nil'WarRock');
timer1.enabled:=false;
If fenster=0 then showmessage('Das Spiel ist nicht gestartet!')
[...]


Achso :roll:


elundril - Mo 14.07.08 14:53

user profile iconFabian E. hat folgendes geschrieben:
user profile iconIaa_1 hat folgendes geschrieben:

aber ihr wisst das net das game warrock gemeint ist?


user profile iconIaa_1 hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Recoil(Sender: TObject);
[...]
fenster:=FindWindow(nil'WarRock');
timer1.enabled:=false;
If fenster=0 then showmessage('Das Spiel ist nicht gestartet!')
[...]


Achso :roll:


:rofl: :rofl:

muhahaha, owned!


Narses - Mo 14.07.08 15:34

Moin!

Ich denke, hier ist nix Konstruktives mehr zu erwarten, deshalb mache ich mal zu. ;)

cu
Narses