Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahl in RAM schreiben (https://www.delphipraxis.net/152865-zahl-ram-schreiben.html)

Muellermilchtrinker 9. Jul 2010 19:55

Delphi-Version: 2009

Zahl in RAM schreiben
 
Hat jmd. ne Funktion, mit der ich eine Zahl von 0-255 in eine bestimmte RAM-Addresse schreiben kann??? Wäre über jeden Vorschlag dankbar. :lol:

himitsu 9. Jul 2010 20:15

AW: Zahl in RAM schreiben
 
- in eigenen oder fremden Prozess?
- virtueller Arbeitsspeicher eines Prozesses oder physischer RAM des PCs?
- ...

Muellermilchtrinker 9. Jul 2010 20:22

AW: Zahl in RAM schreiben
 
- im fremden prozess

also: ich hab ein spiel (rennspiel) und will da den gang ändern
addresse hab ich schon

jfheins 9. Jul 2010 20:22

AW: Zahl in RAM schreiben
 
Vielleicht hilft das: http://msdn.microsoft.com/en-us/libr...74(VS.85).aspx ;)

Teekeks 9. Jul 2010 20:24

AW: Zahl in RAM schreiben
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1034606)
ich hab ein spiel (rennspiel) und will da den gang ändern

Also... Cheaten?

Muellermilchtrinker 9. Jul 2010 20:37

AW: Zahl in RAM schreiben
 
nein. das automatische getriebe schaltet immer sportlich und darüber haben sich schon viele in der community beschwert. Ich hab mir gedacht ich schreib ein programm, dass hoch/runterschaltet bei einer bestimmten drehzahl. Und die firma erwünscht sogar das modding ... die helfen sogar beim ram addressen suchen :D

am anfang hol ich so ie var um auch auszulesen können:
Delphi-Quellcode:
    WindowName := FindWindow(nil,WindowTitle);
    ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
    HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
    application.ProcessMessages;
in globale variablen
und so will ich was reinschreiben:
Delphi-Quellcode:
    GetMem(buf,1);
    buf^  := Chr($02); // <-- will eine 3 reinschreiben
    WriteProcessMemory(HandleWindow,ptr($599C8A),buf,1,write);
    FreeMem(buf);
klappt aber nicht ... vllt hat jemand ne funktion wär nett ... mit parameter addresse und wert ... wäre nett

himitsu 9. Jul 2010 21:29

AW: Zahl in RAM schreiben
 
PS: [DP]fremden speicher verändern[/DP]

Muellermilchtrinker 10. Jul 2010 10:10

AW: Zahl in RAM schreiben
 
ich hab schon dieses topic gefunden: klick
aber die lösung steht nicht dabei

Mithrandir 10. Jul 2010 10:26

AW: Zahl in RAM schreiben
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1034612)
nein. das automatische getriebe schaltet immer sportlich und darüber haben sich schon viele in der community beschwert.

Seit wann ist wirtschaftliches Fahren in einem Spiel wichtig? :shock:

mkinzler 10. Jul 2010 10:41

AW: Zahl in RAM schreiben
 
Zitat:

Und die firma erwünscht sogar das modding ...
Dann würden sie ein SDK/MDK dafür veröffentlichen

Muellermilchtrinker 10. Jul 2010 11:26

AW: Zahl in RAM schreiben
 
Zitat:

Zitat von Mithrandir (Beitrag 1034631)
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1034612)
nein. das automatische getriebe schaltet immer sportlich und darüber haben sich schon viele in der community beschwert.

Seit wann ist wirtschaftliches Fahren in einem Spiel wichtig? :shock:

In dem Spiel kann man auch frei rumfahren und viele cruisen auch so über die landschaften

Zitat:

Zitat von mkinzler (Beitrag 1034633)
Zitat:

Und die firma erwünscht sogar das modding ...
Dann würden sie ein SDK/MDK dafür veröffentlichen

sie unterstützt es, damit neue autos/strecken ins spiel kommen

JasonDX 10. Jul 2010 11:59

AW: Zahl in RAM schreiben
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1034604)
Hat jmd. ne Funktion, mit der ich eine Zahl von 0-255 in eine bestimmte RAM-Addresse schreiben kann???

Zitat:

Zitat von Muellermilchtrinker (Beitrag 1034606)
ich hab ein spiel (rennspiel) und will da den gang ändern

Ich wäre mir aber nicht so wirklich sicher, ob das tatsächlich so einfach funktioniert. Ist der Gang wirklich nur als Byte gespeichert? Oder als struct mit weiteren Infos, wie bspw. Übersetzungsverhältnis u.ä.? Vllt. sogar als Instanzzeiger?
Zudem würde ich mich auch nicht darauf verlassen, dass es keine Probleme gibt, wenn jetzt einfach mal plötzlich der Gang wechselt. Normalerweise läuft da mehr ab als ein
Delphi-Quellcode:
inc(MeinAuto.gang);
. Wenn der Entwickler das wirklich unterstützt, sollte er bessere Möglichkeiten, bzw. Infos zu besseren Möglichkeiten herausgeben. Zu viel Erfolg würd ich mir jedenfalls von diesem Ansatz nicht erwarten.

Zitat:

Zitat von Muellermilchtrinker (Beitrag 1034612)
und so will ich was reinschreiben:
Delphi-Quellcode:
    GetMem(buf,1);
    buf^  := Chr($02); // <-- will eine 3 reinschreiben
    WriteProcessMemory(HandleWindow,ptr($599C8A),buf,1,write);
    FreeMem(buf);
klappt aber nicht ...

Ich würde das evt. mit nem eigenen Programm vorher debuggen. (D.h. dass du den Wert eines eigenen, eigenständigen Programmes änderst). Damit kannst du wenigstens feststellen, ob deine Funktion oder dein Ansatz nicht funktioniert ;)
(Wobei ich her noch auf die Funktion tippe:
Delphi-Quellcode:
ptr($599C8A)
klingt schon ziemlich nach "funktioniert nicht", da Adressen normalerweise nicht konstant sein sollten ;))

greetz
Mike

Muellermilchtrinker 10. Jul 2010 14:35

AW: Zahl in RAM schreiben
 
die übersetzungen stehen in einer eigenen datei und wenn man mit tsearch den wert ändert, dann ist der gang im spiel auch anders.
Und die Addresse ist im spiel gleich.

Muellermilchtrinker 11. Jul 2010 16:41

AW: Zahl in RAM schreiben
 
push

Muellermilchtrinker 26. Jul 2010 19:34

AW: Zahl in RAM schreiben
 
ich möchte das thema nochmal gerne behandeln.
Es geht darum, eine bestimmte Zahl in eine bestimmte RAM-Addresse zu schreiben.
Wenn jmd. eine Funktion dafür hat oder mir helfen kann, der soll sich bitte helfen.
Und nochmals, dieses Programm dient nicht dazu zu cheaten, sondern einfach als eine Erweiterung zum Spiel. Und das Spiel ist ein Offlinespiel.

Blup 27. Jul 2010 08:36

AW: Zahl in RAM schreiben
 
Im Debugger schaun an welcher Stelle das Problem auftaucht (bzw. die Rückgabewerte nicht passen).
:?: Online-Hilfe benutzen...
Zitat:

Zitat von Online-Hilfe zu OpenProcess
To open a handle to another another local process and obtain full access rights, you must enable the SeDebugPrivilege privilege

:idea: Suche nach "SeDebugPrivilege" im Forum:

http://www.delphipraxis.net/147361-f...ram-laden.html

8-)
Delphi-Quellcode:
EnableProcessPrivilege(true, 'SeDebugPrivilege')


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz