Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 11:37

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Speicher auslesen - 1 Prozess, mehrere Fenster

Discussion on Speicher auslesen - 1 Prozess, mehrere Fenster within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2013
Posts: 7
Received Thanks: 0
Speicher auslesen - 1 Prozess, mehrere Fenster

Moin,
hoffe, daß ich hier im richtigen Forum bin. Meine Frage hat nicht direkt etwas mit der Programmierung zu tun, eher mit der Vorbereitung.

Ein Spiel hat einen Launcher, mit dem man mehrere Instanzen des gleichen Spiels starten kann. Ich möchte einige Daten aus dem Spiel auslesen. Bei Spielen mit nur einem Fenster holt sich den Basis-Pointer und gut ist (wenn ich das richtig verstanden habe). Wie sieht es aber aus, wenn man mehrere Instanzen öffnen kann?
PierreDole is offline  
Old 12/05/2019, 12:24   #2



 
Elongate's Avatar
 
elite*gold: 0
The Black Market: 258/0/0
Join Date: Jan 2010
Posts: 8,976
Received Thanks: 3,456
Quote:
Originally Posted by PierreDole View Post
Moin,
hoffe, daß ich hier im richtigen Forum bin. Meine Frage hat nicht direkt etwas mit der Programmierung zu tun, eher mit der Vorbereitung.

Ein Spiel hat einen Launcher, mit dem man mehrere Instanzen des gleichen Spiels starten kann. Ich möchte einige Daten aus dem Spiel auslesen. Bei Spielen mit nur einem Fenster holt sich den Basis-Pointer und gut ist (wenn ich das richtig verstanden habe). Wie sieht es aber aus, wenn man mehrere Instanzen öffnen kann?
Ich gehe mal davon aus das du mit Cheat Engine arbeitest.
Jede Instanz hat eigentlcih sein eigenen Prozess.
Das heißt du suchst erst im einen Prozess und dann im nächsten
oder öffnest 2 mal Cheat Engine.
Normalerweise sucht mal sich aber den Multilevelpointer
damit man nicht immer wieder neu suchen muss.
Elongate is offline  
Old 12/05/2019, 12:33   #3
 
elite*gold: 0
Join Date: Apr 2013
Posts: 7
Received Thanks: 0
Ja, ich werde dafür die CheatEngine benutzen. Habe aber in Speicherauslesen bisher keine Erfahrung gesammelt.
Normalerweise kenne ich das auch so, daß jedes Fenster einen eigenen Prozess hat. Der Task Manager zeigt aber keine weiteren Prozesse an. Nachdem der Launcher gestartet wurde, bleibt es bei dem einen Prozess, egal ob und wie viele Fenster ich öffne.
PierreDole is offline  
Old 12/05/2019, 12:36   #4



 
Elongate's Avatar
 
elite*gold: 0
The Black Market: 258/0/0
Join Date: Jan 2010
Posts: 8,976
Received Thanks: 3,456
Quote:
Originally Posted by PierreDole View Post
Ja, ich werde dafür die CheatEngine benutzen. Habe aber in Speicherauslesen bisher keine Erfahrung gesammelt.
Normalerweise kenne ich das auch so, daß jedes Fenster einen eigenen Prozess hat. Der Task Manager zeigt aber keine weiteren Prozesse an. Nachdem der Launcher gestartet wurde, bleibt es bei dem einen Prozess, egal ob und wie viele Fenster ich öffne.
Kann eigentlich nicht sein, kannst du nicht wählen zwischen Application, Prozess und Fenster?
Zumindest da muss es drin stehen.
Elongate is offline  
Old 12/05/2019, 12:45   #5
 
elite*gold: 0
Join Date: Apr 2013
Posts: 7
Received Thanks: 0
Unter "App" gibt es den einen Eintrag, bzw, wenn ich es aufklappe, dann sind da zwei Einträge, bei denen es immer bleibt. Unter "Hintergrundprozesse" und "Windows-Prozesse" gibt es keine Einträge.

Vielleicht noch als Nachtrag:

Wenn ich in C# die Fenster des Prozesses auslese, dann bekomme ich immer die Daten des zuletzt aktiven Fensters. Das kann der Launcher sein, oder auch ein Spielfenster.
Habe auf Stackoverflow ein Code Snippet gefunden, der das alles aus der user32.dll ausließt. Da bekomme ich sogar jeden aufpoppenden Tool-Tip als "Fenster" zurück. Da sind auch die Spiele-Fenster mit drin.
Von daher, die handler der Fenster habe ich, aber das wird mir beim Auslesen des Speichers nicht wirklich helfen, oder?
PierreDole is offline  
Old 12/06/2019, 10:55   #6
 
elite*gold: 100
Join Date: Apr 2008
Posts: 860
Received Thanks: 1,487
Quote:
Originally Posted by PierreDole View Post
Unter "App" gibt es den einen Eintrag, bzw, wenn ich es aufklappe, dann sind da zwei Einträge, bei denen es immer bleibt. Unter "Hintergrundprozesse" und "Windows-Prozesse" gibt es keine Einträge.
Nimm mal nen richtigen Task-Manager. z.B. Sysinternals Process Explorer. Nicht dieses Windows Spielzeug.


Da muss der Prozess auftauchen. Wenn nicht, führ den Taskmanager mal als Admin aus.

Quote:
Originally Posted by PierreDole View Post
Von daher, die handler der Fenster habe ich, aber das wird mir beim Auslesen des Speichers nicht wirklich helfen, oder?
Vom Window Handle kommst du auch auf das Process Handle, von daher kann das auch schon helfen:
florian0 is offline  
Old 12/06/2019, 13:30   #7
 
elite*gold: 0
Join Date: Apr 2013
Posts: 7
Received Thanks: 0
Hab die ProcessIds ausgelesen.

Code:
[DllImport("user32.dll", SetLastError = true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);

// weiter unten in der foreach-Schleife

     GetWindowThreadProcessId(hWnd, out processId);
     Console.WriteLine("processId: {0}, hWnd.toString(): {1}", processId, hWnd.ToString());
Wie vermutet, es ist nur ein Prozess.

Launcher mit zwei offenen Spielefenstern:
Code:
processId: 16272, hWnd.toString(): 133126
processId: 16272, hWnd.toString(): 68766
processId: 16272, hWnd.toString(): 68734
PierreDole is offline  
Old 12/07/2019, 01:47   #8
 
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
Maybe they share the same process but different thread or sth, u can try to find the value anyway.
Open CE, launch two game instances, (Instance1, Instance2),

Edit: u can add scan tabs in CE if you need to search for two different values

In instance1 change sth and search for the corresponding address,
In instance2, change sth that shouldn't match with Instance1 and find the correct address,

Make pointer scan in the addresses found of instance1 and instance2, compare results to find out the offset of the address from instance1 to instance2.

Ex:
baseAdd = 0x400000 ("game.exe")
Pointer1 scan points to -> 0x400000 + 0x1234 = 0x4001234
Pointer2 scan points to -> 0x400000 + 0x2468 = 0x4002468

Diff: 0x2468 - 0x1234 -> 0x1234
Then instance address = baseAdd + 0x1234 * instanceID (1,2,3...)

This is just a guess, you need to find out the correct offset between game instances if they share the same process, but different window...
elmarcia is offline  
Old 12/22/2019, 13:14   #9
 
elite*gold: 0
Join Date: Apr 2013
Posts: 7
Received Thanks: 0
I made a pointer list of one window, closed the game, restarted it and made another list and compaired the two lists. Just to see if I could find at least one base address. There were 0 pointer left, not a single one.

I got another idea, its also just a guess.
Because the base address must be somewhere in the memory (I think it must), what if I searched the whole memory for a string? The strings I looking for are very unique, f.e. nicknames, so maybe it could be a good try. But I dont know how to search the memory independet to the process.
PierreDole is offline  
Old 12/23/2019, 19:33   #10
 
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
Quote:
Originally Posted by PierreDole View Post
I made a pointer list of one window, closed the game, restarted it and made another list and compaired the two lists. Just to see if I could find at least one base address. There were 0 pointer left, not a single one.

I got another idea, its also just a guess.
Because the base address must be somewhere in the memory (I think it must), what if I searched the whole memory for a string? The strings I looking for are very unique, f.e. nicknames, so maybe it could be a good try. But I dont know how to search the memory independet to the process.
What game r u talking about maybe i could try find sth, i use CE a lot and have some reverse skills
elmarcia is offline  
Old 12/24/2019, 19:12   #11
 
elite*gold: 0
Join Date: Apr 2013
Posts: 7
Received Thanks: 0
My Idea was to make a statistic tool for PokerStars like Jivaro. You have to pay for Jivaro, so I want to do it by myself. But I didnt expect the devs will make it so hard to read the game data. I already started to make it with screen scraping. It works so far (I didnt finish yet) but its not really the best way.
PierreDole is offline  
Reply


Similar Threads Similar Threads
Auslesen von Daten aus Speicher/Prozess
01/01/2015 - Coders Trading - 4 Replies
Hallo, ich habe folgendes Problem. Ich möchte bestimmte Daten aus einem laufenden Prozess auslesen. Das Programm läuft lokal und verarbeitet diese Daten intern bzw. gibt sie als Output (Windows Forms?) teilweise aus. Es handelt sich um eine C# Anwendung und ich habe dafür größtenteils den Quellcode mit allen Funktionen/Bezeichnungen usw... Das ganze ist nicht sicherheitskritisch, man kann sich also nach belieben an dem Programm zu schaffen machen, Injections, Hooks, Pointers auslesen,...
Prozess in einen Prozess injecten
03/30/2014 - General Coding - 3 Replies
ja ich wolte fragen ob man ein prozess in ein prozess injecten kann
Der Prozess kann nicht auf die Datei * zugreifen, weil sie von einem anderen Prozess
05/07/2013 - .NET Languages - 11 Replies
Moin, Ich bekomme immer einen Fehler, wenn ich versuche eine Datei zu bearbeiten und zwar folgenden: Die Meldung ist eig. recht eindeutig aber ich finde den Fehler einfach nicht. In meinen Funktionen wird die Datei auch IMMER geschlossen. Hier die Funktion, bei der der fehler auftritt.
!!! Hilfe Visual Basic / Prozess Auslesen / Value Im Textbox Wieder Geben... Hilfe!!!
12/16/2011 - .NET Languages - 10 Replies
So Hey Liebe Leute... Es Geht Um Visual Basic 2010 So Ich Habe eine Frage... So Meine Frage... Ich Habe Mir Ein Kleines Programm Gecodet..



All times are GMT +1. The time now is 11:39.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.