AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Chat messages aus dem speicher eines programms auslesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Chat messages aus dem speicher eines programms auslesen?

Ein Thema von rhodan · begonnen am 13. Feb 2006 · letzter Beitrag vom 16. Feb 2006
Antwort Antwort
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

Chat messages aus dem speicher eines programms auslesen?

  Alt 13. Feb 2006, 19:41
Hallo

ich hab schon die "spiele trainer" topics durchgesehen, aber was ich möchte ist nicht wirklich dabei.

Zu meinem Projekt/Problem :

Dem Spiel "Freelancer" liegt eine "FLserver.exe" bei mit der jeder seinen eigenen server betreiben kann. Dieser wird dann von meinem PC aus gehosted.
Ich möchte nun ein programm schreiben welches alle Chatnachrichten loggt (und in eine txt speichert), daher alles was auf meinem server von spielern geschrieben wird.

Ich hab mir schon Tsearch, MemHack und Co. angesehen, was mich aber nicht viel weiterbringt da ich dort nur den speicher den der Freelancer server benutzt nach bestimmten werten durchsehen kann.

Ein solches programm (zum Chat logging) existiert bereits, ich möchte allerdings mein eigenes schreiben bzw. wissen wie die es gemacht haben, des lern effekts wegen

was ich bis jetzt weiss ist der memory start: $00400000, und das ende: $02968000

Hab den speicher schon mal in the txt gespeichert, dann ingame auf dem server was geschrieben und wieder den speicher des Servers gespeichert, die beiden files verglichen, aber es hat sich nix geändert

Im prinzip soll also aus dem Speicher des Servers nur die nachrichten gelesen werden und gespeichert werden in einer txt, es soll ja nix verändert werden.

Wie kann ich rausbekommen wo die nachrichten im speicher sind/erscheinen und diese stelle ständig überwachen/loggen ?

Dies ist das erste mal das ich mit dem speicher eines programms arbeite, sorry für (eventuelle) nooby fragen, hab mich wirklich schon umgesehen, konnte aber nix finden was mir hilft.

ach und...chats loggen könnte ich natürlich nur auf meinem server, in meinem speicher, nicht auf anderen Servern

Für eventuelle Hilfe bin ich im voraus dankbar,

Grüße aus Hamburg,

Rhodan
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#2

Re: Chat messages aus dem speicher eines programms auslesen?

  Alt 14. Feb 2006, 20:10
hmm, ich hab jetzt soweit die addressen der nachrichten im speicher gefunden wie es aussieht.

Wüsste vielleicht jemand wie ich die in ein memo z.B bekomme so das ich sie dann als txt speichern kann?

ich bin schon über ReadProcessMemory und TMemoryStream.Create gestolpert wo ich mir dachte das die vielleicht nützlich sein können. aber wie ich die adressen (nachrichten) in einem stream bekomme, bzw. diesen dann ins memo ist mir ein rätsel

hat jemand einen tip?

thx
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Chat messages aus dem speicher eines programms auslesen?

  Alt 14. Feb 2006, 20:18
Moin Rhodan,

mit ReadProcessMemory wird es schon gehen.
Wie hast Du denn die Adresse ermittel?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#4

Re: Chat messages aus dem speicher eines programms auslesen?

  Alt 15. Feb 2006, 01:06
naja.....

wenn ich ganz ehrlich bin hab ich das andere programm mit dem chat logging auch möglich ist disassembliert. die adressen sind immer gleich. zumindest HOFFE ich das die stimmen, bzw das ich damit arbeiten kann...hier ein bsp:

Delphi-Quellcode:
br.s loc_0_148D4
loc_0_14888:
ldarg.0
ldfld class [mscorlib]System.IO.StreamWriter FLAntiCheat.MainForm::chatStream
call value class [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now()
stloc.s 0x27
ldloca.s 0x27
call class System.String [mscorlib]System.DateTime::ToString()
ldstr ":pri"
call class System.String [mscorlib]System.String::Concat(class System.String, class System.String)
callvirt void [mscorlib]System.IO.TextWriter::Write(class System.String)
br.s loc_0_148D4
loc_0_148AD:
ldarg.0
ldfld class [mscorlib]System.IO.StreamWriter FLAntiCheat.MainForm::chatStream
call value class [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now()
stloc.s 0x27
ldloca.s 0x27
call class System.String [mscorlib]System.DateTime::ToString()
ldstr ":grp"
call class System.String [mscorlib]System.String::Concat(class System.String, class System.String)
callvirt void [mscorlib]System.IO.TextWriter::Write(class System.String)
br.s loc_0_148D4
loc_0_148D2:
ldc.i4.0
stloc.2
loc_0_148D4:
ldloc.2
brfalse unk_0_15392
ldarg.2
naja, das ist das was vom code bzw. der adresse noch übrig ist :-/ das ist ein beispiel für den Privat (pri) und Group (grp) Chanel in dem man in Freelancer messages schicken kann.

sieht für mich nach assembler oder ähnlichem hier aus.
"loc_0_148D4" könnte ne position darstellen oder? zumindest dachte ich mir das.

gruß

rhodan

PS: sry, als delphi code habe ich das nur der übersichtlichkeit halber dargestellt.
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#5

Re: Chat messages aus dem speicher eines programms auslesen?

  Alt 16. Feb 2006, 18:01
hmm, ok die addressen haben sich als falsch herausgestellt. ich hab die nachrichten jetzt selbst gefunden.
ich hab im spiel etwas geschrieben, dies mit dem UTF converter ( http://www.macchiato.com/unicode/convert.html ) convertiert und mit TSearch in dem server memory gesucht...nun ja..gefunden hab ich sie zwar, nur erscheint der chatstring immer an anderen stellen. ReadProcessmemory hab ich mir angeguckt und ich denke auch soweit verstanden.

Aber wie kann ich sicherstellen das mein programm die richtigen addressen finded um sie auszulesen?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Chat messages aus dem speicher eines programms auslesen?

  Alt 16. Feb 2006, 20:19
Moin Rhodan,

das Problem wird sein, dass Du die Stelle herausbekommen musst, an der die Adresse des jeweiligen Strings gespeichert wird.
Im Gegensatz, z.B., zu einem Integerwert der, aller Voraussicht nach, wohl immer an der gleichen Stelle zu finden sein dürfte, wird bei einem String der Speicher, u.U., immer wieder neu zugewiesen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 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