AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Unicode-Text per ReadProcessMemory auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Unicode-Text per ReadProcessMemory auslesen

Ein Thema von infY2k7 · begonnen am 17. Aug 2008 · letzter Beitrag vom 18. Aug 2008
Antwort Antwort
infY2k7

Registriert seit: 21. Mai 2008
23 Beiträge
 
#1

Unicode-Text per ReadProcessMemory auslesen

  Alt 17. Aug 2008, 17:34
Hi Leutz. Ich bins mal wieder, mit einem readprocessmemory-Problem, was auch sonst
Folgendes: So liest man für gewöhnlich normale Zahlen wie z.B. 139687 aus dem Speicher:
Delphi-Quellcode:
var p : pointer;
      BytesRead: DWord;
      HandleWindow:longint;

begin
PID:=0;
Wnd := FindWindow(nil,Pchar(windowname));//windowname wurde vorher definiert
GetWindowThreadProcessId(Wnd, @PID);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
     ReadProcessMemory(HandleWindow,adresse,@ausgabe,4,BytesRead);//adresse auch vorher definiert
end;
Nunja, nun brauch ich nen Unicode-Text aus dem Speicher. Nach stundenlangem googlen stellte ich fest, das ich so ziemlich der einzige Mensch auf dieser Welt mit diesem Problem bin!
Im Bsp. oben ist ausgabe vom typ dword(für normale Zahlen eben)
Wie lese ich nun Unicode aus? Sicher müsste ausgabe ein anderer Typ sein, die Frage ist welcher und wie groß müsste er sein, wie müsste ich die ReadProcessMemory abändern usw...

Danke im Vorraus, mfg infY
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Unicode-Text per ReadProcessMemory auslesen

  Alt 17. Aug 2008, 17:55
ReadProcessMemory interessiert nicht was die Bytes an der betreffenden Adresse bedeuten. Und im Speicher stehen nur Zahlen. Die Interpretation musst du schon machen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
infY2k7

Registriert seit: 21. Mai 2008
23 Beiträge
 
#3

Re: Unicode-Text per ReadProcessMemory auslesen

  Alt 18. Aug 2008, 11:56
Na.. man kann im Speicher auch Text auslesen! Oder brauch ich dafür ne andere Funktion?? o.O
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Unicode-Text per ReadProcessMemory auslesen

  Alt 18. Aug 2008, 12:06
Hast du es nicht verstanden?

ReadProcessMemory liest dir einfach die Bytes der Adresse aus, die du übergeben hast.

Wie diese Bytes zu interpretieren sind (z.B. als unicode text) weiß und interessiert ReadProcessMemory nicht.

Was du mit den erhaltenen Bytes anstellst, ist deine Sache.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Unicode-Text per ReadProcessMemory auslesen

  Alt 18. Aug 2008, 12:26
Noch mal, im Speicher stehen nur Zahlen bzw. Werte von Zahlen. Zum Beispiel in Hexadezimalschreibweise:
Code:
6F 62 6A 0D
Das liest du mit ReadProcessMemory aus und nichts anderes. Ob diese vier Byte nun einen Integerwert repräsentieren oder vier ASCII Zeichen codieren, das entscheidet die Software.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
infY2k7

Registriert seit: 21. Mai 2008
23 Beiträge
 
#6

Re: Unicode-Text per ReadProcessMemory auslesen

  Alt 18. Aug 2008, 17:25
Ah ok habs anders interpretiert vorhin. Ja die Frage ist nur, wie mach ich aus dem ganzem ein Unicode-String?
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: Unicode-Text per ReadProcessMemory auslesen

  Alt 18. Aug 2008, 18:53
Delphi-Quellcode:
var
  buf: array of char;
ws: widestring;
x: char;
begin
  addr := start;
  repeat
   Readprocessmemory(addr,@x)
   inc(addr,2);
  until x = #0;

  setlength(buf, addr-start);

  ReadprocessMemory(@buf, addr-start);

  ws := PWideChar(buf);
end;
pseudocode (bzw besser word einlesen)

der 1. Teil schaut nach der Länge des widestrings (#0 als word = ende)
der zweite liest dann das ganze in einen Buffer
und am schluss hast du das als widestring
  Mit Zitat antworten Zitat
infY2k7

Registriert seit: 21. Mai 2008
23 Beiträge
 
#8

Re: Unicode-Text per ReadProcessMemory auslesen

  Alt 18. Aug 2008, 19:53
ty, ma schaun ob ichs hinkrieg!
  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 17:55 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