AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text im RAM finden?

Ein Thema von Karlson · begonnen am 9. Nov 2006 · letzter Beitrag vom 9. Nov 2006
Antwort Antwort
Karlson

Registriert seit: 12. Apr 2004
92 Beiträge
 
#1

Text im RAM finden?

  Alt 9. Nov 2006, 19:54
Moin,

Für ein kleines persönliches Hilfstool versuche ich auf den in der Adressleiste des Opera stehenden Text zuzugreifen und diesen auszulesen.

Mein erster Ansatz war das Handle der Adressleiste zu finden, und dieses mit GetText auszulesen. Leider ist das bei Opera scheinbar nicht möglich - Leider sind lediglich OperaWindowClass Fenster zu finden.

Mein zweiter Ansatz wäre jetzt den Text aus dem RAM auszulesen. Da das Tool ohnehin nur auf meinem PC verwendet wird, stehen die Chancen wohl ganz gut, dass die Adresse nur einmal gesucht werden muss.

Allerdings frage ich mich jetzt wie ich Texte bzw. Buchstaben im Speicher finden kann? Nach welchem Schema wird ein Buchstabe denn in eine Zahl gewandelt? Sprich nach welchem Wert muss ich im RAM suchen wenn ich die Stelle finden will an der "Test" gespeichert wird?

(Ich kenne mich mit der RAM Materie nicht all zu gut aus, daher kann es sein, dass an meinem Ansatz einiges falsch ist!)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#2

Re: Text im RAM finden?

  Alt 9. Nov 2006, 20:00
Du müsstest auf den Speicherbereich einer anderen Anwendung zugreifen. Die Speicherbereiche der einzelnen Anwendungen sind (zum Glück) voneinander abgeschottet. Du müsstest also erst eigenen Code in diese Anwendung einschleusen um auf den Speicherbereich dieser Anwendung zuzugreifen. Wie das geht steht hier unter dem Stichwort dll injection.

Allerdings... Opera hat doch eine Automatisierungsschnittstelle wenn ich mich nicht irre. Guck mal lieber ob du nicht da drüber was reissen kannst. Alles andere ist wohl eher zu aufwändig.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Karlson

Registriert seit: 12. Apr 2004
92 Beiträge
 
#3

Re: Text im RAM finden?

  Alt 9. Nov 2006, 20:14
Moin! Danke für deine Antwort.

Entweder ich blick es nicht ganz, oder wir reden aneinander vorbei.
Meine Idee war folgende: Mit TSearch den RAM von Opera durchsuchen um die Adresse des Eingabefeldes zu erhalten. Die Adresse dann mit ReadProcessMemory auslesen.

Ich habe die Erfahrung gemacht, dass sich die Adressen bei den meisten Programmen auch nach einem Neustart des PCs nicht ändern. Das bedeutet, dass ich die Adresse nur einmal finden müsste um sie auslesen zu können.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Text im RAM finden?

  Alt 9. Nov 2006, 20:22
Darauf würde ich mich nicht verlassen.

Außerdem ist es nunmal einer normalen Anwendung nicht möglich, auf Fremd-RAM zuzugreifen, deine Anwendung befindet sich in einem eigenen, virtuellen Speicherbereich, du kommst nicht in den Speicherbereich anderer Anwendungen rein.

Informier dich lieber mal über Handles.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Text im RAM finden?

  Alt 9. Nov 2006, 20:22
Was wenn sich die Adresse mal ändert?
Versuch mal das Programm von Assarbad EDA(Enable Disable) wenns damit nicht auslesen kannst den Text von Opera, dann viel spaß mit dem Auslesen aus dem Speicher .
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Text im RAM finden?

  Alt 9. Nov 2006, 20:39
Zitat von 3_of_8:
D
Außerdem ist es nunmal einer normalen Anwendung nicht möglich, auf Fremd-RAM zuzugreifen, deine Anwendung befindet sich in einem eigenen, virtuellen Speicherbereich, du kommst nicht in den Speicherbereich anderer Anwendungen rein.
Eigentlich schon mit MSDN-Library durchsuchenVirtualAlloc, MSDN-Library durchsuchenVirtualAllocEx, MSDN-Library durchsuchenVirtualFree, MSDN-Library durchsuchenVirtualProtect, MSDN-Library durchsuchenReadProcessMemory, MSDN-Library durchsuchenWriteProcessMemory, MSDN-Library durchsuchenCreateRemoteThread.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Text im RAM finden?

  Alt 9. Nov 2006, 20:57
OK, es geht vielleicht doch, aber es ist halt sehr umständlich.

In etwa so, als würdest du um eine Katze von einem Apfel zu pflücken den Baum fällen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Karlson

Registriert seit: 12. Apr 2004
92 Beiträge
 
#8

Re: Text im RAM finden?

  Alt 9. Nov 2006, 21:17
Zitat von 3_of_8:
Darauf würde ich mich nicht verlassen.

Außerdem ist es nunmal einer normalen Anwendung nicht möglich, auf Fremd-RAM zuzugreifen, deine Anwendung befindet sich in einem eigenen, virtuellen Speicherbereich, du kommst nicht in den Speicherbereich anderer Anwendungen rein.

Informier dich lieber mal über Handles.
Also man kann durchaus auf Fremd-RAM zugreifen. Habe ich auch schon ein paar Mal gemacht. Kompliziert oder schwierig ist das eigentlich überhaupt nicht. Es wird nur extrem schwierig (zu schwierig für mich) wenn ASM Code injeziert werden muss (in dem Fall kann ich die RAM-Lösung abhaken, das ist mir nämlich etwas zu kompliziert ) Bei vielen Programmen kann man via TSearch aber eine absolute Adresse finden, die auf dem Computer auf dem die Adresse gefunden hat nicht ändert. (z.B. bei dem Computerspiel Virtual Tennis).

Über Handles brauche ich mich nicht kundig machen, wie du siehst wäre das mein erster Lösungsweg gewesen (sicherlich der sauberste und einfachste), leider funktioniert es so wie gesagt nicht.

Eigentlich frage ich mich nur wie z.B. das Wort "Test" im Speicher abgelegt wird. Also mit z.B. unter 1001010101010101 oder was weiss ich was, damit ich nach dem Wert einfach mal suchen kann!

Zitat:
Zitat von 3_of_8:
OK, es geht vielleicht doch, aber es ist halt sehr umständlich.

In etwa so, als würdest du um eine Katze von einem Apfel zu pflücken den Baum fällen.
Ich glaub da ist was schiefgelaufen
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Text im RAM finden?

  Alt 9. Nov 2006, 21:30
Zitat von Karlson:
Zitat von 3_of_8:
Darauf würde ich mich nicht verlassen.

Außerdem ist es nunmal einer normalen Anwendung nicht möglich, auf Fremd-RAM zuzugreifen, deine Anwendung befindet sich in einem eigenen, virtuellen Speicherbereich, du kommst nicht in den Speicherbereich anderer Anwendungen rein.

Informier dich lieber mal über Handles.
Also man kann durchaus auf Fremd-RAM zugreifen. Habe ich auch schon ein paar Mal gemacht. Kompliziert oder schwierig ist das eigentlich überhaupt nicht. Es wird nur extrem schwierig (zu schwierig für mich) wenn ASM Code injeziert werden muss, weil die Werte entweder
Allerdings habe ich bisher nur mit Boolean-Variablen im RAM gearbeitet und nicht mit Strings.

Und über Handles brauche ich mich nicht kundig machen, wie du siehst wäre das mein erster Lösungsweg gewesen (sicherlich der sauberste und einfachste), leider funktioniert es so wie gesagt nicht.

Eigentlich frage ich mich nur wie z.B. das Wort "Test" im Speicher abgelegt wird. Also mit z.B. unter 1001010101010101 oder was weiss ich was, damit ich nach dem Wert einfach mal suchen kann!
Schau dir mal die Units von Aphex (afxCodeHook) oder uall (uallHook, uallCollection), madshi (ohne Source, madCodeHook) an. Die Unit von Aphex hat gleich InjectString, InjectMemory, InjectLibrary funktion, aber zum suchen wirds einwenig aufwendiger glaub ich. Vielleicht, bekomme die Daten Sektion von der Exe Datei, oder alle Sektionen, und durchlaufe sie im Speicher (TImageDosHeader, TImageNtHeaders, ..).
  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 01:11 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