Bild aus fremden Speicher manipulieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Bild aus fremden Speicher manipulieren

Beitrag von Lambda »

Angenommen ich habe ein Spiel erstellt in dem Bilder gezeichnet werden. Jetzt erstelle ich eine DLL die aus dem Speicher des Spiels ein bestimmtes Bild herraus sucht, es durch StartDrawing und ein paar Zeichungen manipuliert. Das Spiel zeichnet dabei zwar immer das selbe Bild, aber der Inhalt des Bildes wird geändert.

Als Erkennungsmerkmal könnte ich lediglich die größe angeben. Eine Adresse kann dabei nicht vom Spiel zur DLL übemittelt werden.

Jemand eine Idee?
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Bild aus fremden Speicher manipulieren

Beitrag von Frabbing »

Wenn die Dll vom Spiel geladen wird, sollte es da doch keine Probleme geben. Wenn das Spiel von dir geschrieben wurde.

Eine Dll, die einen fremden Prozess durchsuchen möchte, hat es schwerer. Das wird nur über virtuellen Speicher gehen. In dem Fall riecht das Ganze allerdings etwas faul, gibt halt einen Grund, warum das unter modernen Windows nicht ohne Weiteres möglich ist. Willst du das Titelbild ersetzen oder sowas in der Art? Bei sowas helfe ich nicht weiter. Also hau mal erst ein paar mehr Infos raus.
Gruß, Frank
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: Bild aus fremden Speicher manipulieren

Beitrag von Lambda »

Es soll eine Erweiterung für den "Game Maker" sein. Also gibt es nicht sonderlich viele Informationen die er von sich preis geben kann.(WindowHandle)
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Bild aus fremden Speicher manipulieren

Beitrag von Frabbing »

Dann würde ich so vorgehen, dass ich den Prozesshandle ermittle (EnumProcesses oder Process32First/Next) und dann den Speicher des Prozesses mit VirtualAllocEx stückchenweise anfordere und durchsuche.
Gruß, Frank
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Bild aus fremden Speicher manipulieren

Beitrag von Thorium »

Frabbing hat geschrieben:Dann würde ich so vorgehen, dass ich den Prozesshandle ermittle (EnumProcesses oder Process32First/Next) und dann den Speicher des Prozesses mit VirtualAllocEx stückchenweise anfordere und durchsuche.
Mit VirtualAllocEx kann man Speicher in fremden Prozessen allozieren aber nicht auslesen. Dazu gibt es ReadProcessMemory und WriteProcessMemory. Das kann man sich aber sparen indem man die DLL in den Prozess des Spiels injiziert. Dadurch läuft der eigene Code dann im Kontext des Spielprozesses und man kann den Speicher mittels Pointern verarbeiten.

Um ein bestimmtes Bild zu finden, würde ich einen Hook installieren in eine API, die eben dieses Bild übergeben bekommt oder zurückgibt. Bei Spielen normalerweise per DX oder OGL Hook machbar. Wie man im Detail an das Bild kommt kann man am besten mit nrm Debugger wie OllyDbg abklären, dafür gibts kein allgemeingültiges Rezept.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten