|
You last visited: Today at 11:37
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.
12/05/2019, 12:12
|
#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?
|
|
|
12/05/2019, 12:24
|
#2
|
elite*gold: 0
Join Date: Jan 2010
Posts: 8,976
Received Thanks: 3,456
|
Quote:
Originally Posted by PierreDole
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.
|
|
|
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.
|
|
|
12/05/2019, 12:36
|
#4
|
elite*gold: 0
Join Date: Jan 2010
Posts: 8,976
Received Thanks: 3,456
|
Quote:
Originally Posted by PierreDole
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.
|
|
|
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?
|
|
|
12/06/2019, 10:55
|
#6
|
elite*gold: 100
Join Date: Apr 2008
Posts: 860
Received Thanks: 1,487
|
Quote:
Originally Posted by PierreDole
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
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:
|
|
|
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
|
|
|
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...
|
|
|
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.
|
|
|
12/23/2019, 19:33
|
#10
|
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
|
Quote:
Originally Posted by PierreDole
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
|
|
|
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.
|
|
|
 |
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.
|
|