Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Variabel des eigenen Programmes aus dem Arbeitsspeicher (https://www.delphipraxis.net/14449-variabel-des-eigenen-programmes-aus-dem-arbeitsspeicher.html)

SleepyMaster 9. Jan 2004 15:50


Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Hi @all

Wie kann ich den Arbeitsspeicher MEINES Programmes in dem die Variabel stehen auslesen???

Vielen Dank schon ma!

Luckie 9. Jan 2004 15:55

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Wozu? Du kennst die Werte der eigenen Variablen doch.

Minz 9. Jan 2004 15:56

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
:wiejetzt:

SleepyMaster 9. Jan 2004 16:01

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Und wenn das Programm in dem ich das mache nicht wirklich meins ist, sondern ich nur den Code zum auslesen dorthinein "importiert" habe?
Dann kenn ich die Variabel nicht!

Mirilin 9. Jan 2004 16:03

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
:hi:

Zitat:

Wie kann ich den Arbeitsspeicher MEINES Programmes in dem die Variabel stehen auslesen???
und
Zitat:

Und wenn das Programm in dem ich das mache nicht wirklich meins ist
ist für mich ein Widerspruch :wink:

mfg Tobias

SleepyMaster 9. Jan 2004 16:05

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Ich will den Code in ein anderes Programm "importieren" daher hab ich die Rechte als wäre es MEIN Programm!

Luckie 9. Jan 2004 16:05

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Was denn jetzt? Geht es um den Speicher deines eigenen oder dem eines fremden Programmes? An den Speicher eines fremden wist du schwer dran kommen. Such mal bei Google und hier nach "Spiele-Trainer".

Haegar 9. Jan 2004 16:08

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
ich glaub ich habs verstanden :P

vor langer langer zeit schrieb er ein programm, dann hat er ein neues programm geschrieben, wo er nun den QT SEINES alten programms importieren will! und nun will er eben diese variablen des alten programms aus dem arbeitsspeicher auslesen, richtig?

kann zwar nicht direkt helfen, aber vielleicht zum besseren verständniss für andere.

ciao

SleepyMaster 9. Jan 2004 16:08

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Es ist ein fremdes Programm, in das ich meinen Code "importiere", der importierte Code hat also die selben Rechte das fremde Programm (und kann somit dann hoffentlich auch den Arbeitsspeicher auslesen)

Assarbad 9. Jan 2004 16:09

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Wenn du Code injeziert hast, bist du vermutlich mit einer DLL bereits im Prozess-Bereich des Ziels? Wenn das so ist, liest du es einfach durch eine absolute Angabe der Speicheradresse aus. Beim Modifizieren einer Speicherseite muß man sie eventuell vorher entsperren.

SleepyMaster 9. Jan 2004 16:10

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
@Assarbad
Genau :thuimb:

Nur meine Frage:
Wie les ich den jetzt aus?
Einfach mit Pointer???

c113plpbr 9. Jan 2004 16:10

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
also, wenn du nur werte auslesen willst, und diese immer an der gleichen stelle stehen, kannst du das über ReadProcessMemory tun, aber um die stellen im speicher zu finden brauchst du entweder einen guten editor der das kann (z.B. winhex) oder einen guten spieletrainer ...

SleepyMaster 9. Jan 2004 16:12

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
@c113plpbr
Da stehen aber nicht die Variabeln sondern der "Inhalt" der exe

c113plpbr 9. Jan 2004 16:15

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
in gewisser weise steht dort jeder wert den das programm verwendet, unter anderem auch der asm-code der exe ...

Assarbad 9. Jan 2004 16:16

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Naja, wenn du im Prozess drin bist sprichst du eine beliebige Speicherstelle (lesend) mit nem Pointer an. ReadProcessMemory wäre da Overkill. Bist du nicht drin, nimmst du ReadProcessMemory() und das Schreib-Pendant.

Mit VirtualProtect() oder VirtualProtectEx() kannst du bei schreibendem Zugriff (zB für Trainer) mal bequem die Zugriffsmöglichkeiten für die entsprechende Speicherseite erweitern ;)

@c113plpbr: Aber nimm mal an dies sei der Goldwert in irgendeinem Spiel. Dann ist der sicher nicht vorher in der EXE festgelegt, sondern ändert sich wenn die Arbeiter die Mine ausräumen oder wenn man ein neues Spiel lädt etc pp.

SleepyMaster 9. Jan 2004 16:18

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
OK! Das war eigendlich alles was ich wissen wollte! Vielen Dank! ;)

c113plpbr 9. Jan 2004 16:21

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
@assarbad: Es ist eigentlich egal was da steht, hauptsache es steht der wert da, und vorausgesetzt er steht nach jedem neustart des proggys an der selben stelle ... hier nen link zu nem guten trainer mit soße Generic Game Trainer ... reinschauen lohnt sich auf jeden fall!

Assarbad 9. Jan 2004 16:24

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
WinHex kann Prozeßspeicher anderer Prozesse auslesen? Dann liegt da mein Mißverständnis. Aber wir sind uns schon einig, daß ein fulminanter Unterschied zwischen der EXE auf Platte und dem Image im Speicher besteht???

c113plpbr 9. Jan 2004 16:34

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
ich weis in etwa wovon ich rede, denn ich hab schon ein paar spiele-trainer geschrieben, wobei ich zugeben muss, dass ich nen bisschen was natürlich auch vom Generic Game Trainer abgeschaut habe ... aber das is was anderes ... ich schreiben gerade an meinem _eigenen_ trainer ... nur tue ich das schon seit einem halben jahr, und funzen tut er immer noch nicht richtig ...

ich weiß zwar nicht genau was 'fulminant' heißt, aber es besteht ein riesiger unteschied zwischen dem proggi im speicher und der exe ... nur, wenn du suchst, dann findest du auch die betreffende speicherstelle, und kannst den wert dort durchaus ändern und nicht nur auslesen, aber das ist ein anderes thema ...

Assarbad 9. Jan 2004 16:40

Re: Variabel des eigenen Programmes aus dem Arbeitsspeicher
 
Tss tss ... da wäre ich mir nicht so sicher. Du mußt immer den kompletten Prozessspeicher durchforsten, sonst ist es nicht möglich zu sagen ob du die korrekte Stelle hast.

1. Kann es Zufallstreffer geben
2. Kann das Image weit kleiner sein als der vom Programm (für Variablen) benutzte Speicher

Ergo, man kann den Code der EXE nur als Anhaltspunkt nehmen, mehr nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 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