AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Suche nach bestimmten Integern im Speicher einer Anwendung!
Thema durchsuchen
Ansicht
Themen-Optionen

Suche nach bestimmten Integern im Speicher einer Anwendung!

Ein Thema von Hedge · begonnen am 10. Jan 2009 · letzter Beitrag vom 10. Jan 2009
Antwort Antwort
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#1

Suche nach bestimmten Integern im Speicher einer Anwendung!

  Alt 10. Jan 2009, 04:28
Ich bastel gerade ein kleines Tool, dass aus dem Speicher einer anderen Anwendung insgesamt 8 Integer (DWORD) ausliest.
Diese haben zwar unterschiedliche Abstände zueinander, dafür bleiben die aber immer gleich.
Somit brauch ich nur die Start-Adresse um alle Variablen auslesen zu können.

Genau da ist der Haken, denn die Start-Adresse ändert sich nach jedem Neustart.
Da es nicht nur für den Eigengebrauch bestimmt ist und die potentielle Nutzerschar meist eher weniger Technik-affin ist, wollte ich nach Ansätzen fragen wie ich rausfinden kann wo die Variablen liegen?
Die Tatsache, dass beim Programmstart alle Variablen auf 0 gesetzt sind, macht die Sache nicht gerade leichter.
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#2

Re: Suche nach bestimmten Integern im Speicher einer Anwendu

  Alt 10. Jan 2009, 06:15
Wird dir wohl nicht übrig bleiben, als im Zweifelsfall den kompletten Programmspeicher durchzuscannen.
Es könnte helfen zu wissen, ob es globale Variablen sind oder welche in einem Objekt (so dass es RTTI gibt), in welcher Sprache das andere Programm überhaupt geschrieben ist (wenn bekannt) und ob es im Userspace läuft.

[Edit] ein t
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Suche nach bestimmten Integern im Speicher einer Anwendu

  Alt 10. Jan 2009, 12:11
der komplette Programmspeicher umfasst direkt nach dem Start 400MB. Also ne ganze Menge Asche. Bisher nutz ich folgenden Code um im Speicher rumzulesen

Delphi-Quellcode:
function LeseSpeicher(adresse,size:integer):integer;
var p : pointer;
    puffer : array[0..1] of DWord;
    BytesRead: DWord;
    ProcessId,ThreadId,HandleWindow : integer;
   begin
        p := ptr(adresse); //Adresse umwandeln:
        ThreadId := GetWindowThreadProcessId(ProgrammHandle,@ProcessId); //ProgrammHandle = globale Variable
        HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
        ReadProcessMemory( HandleWindow, p , @puffer[0], size, BytesRead );
        closehandle(HandleWindow);//close
        LeseSpeicher := Puffer[0];
   end;//von LeseSpeicher
Gibt es da noch schnellere Variante.
Der andere Knackpunkt ist, dass alle Variablen 0 sind beim Start.
Die Variablen können einen Wert von 1 bis 7 annehmen.
Ich könnte den User bitten einen Key zu drücken der die erste Variable auf 7 legt, dann die Zweite auf 6, die Dritte auf 5 usw. aber nach Möglichkeit möchte ich das umgehen.

Das Programm wurde in C++ geschrieben, welcher Compiler weiß ich jedoch nicht.
Globale Variablen kann ich mir auch nicht vorstellen, da es ein großes Programm ist und es ja so leicht schlechten Code gibt.
  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 02:59 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