![]() |
Unicode-Text per ReadProcessMemory auslesen
Hi Leutz. Ich bins mal wieder, mit einem readprocessmemory-Problem, was auch sonst :lol:
Folgendes: So liest man für gewöhnlich normale Zahlen wie z.B. 139687 aus dem Speicher:
Delphi-Quellcode:
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!
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; 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 |
Re: Unicode-Text per ReadProcessMemory auslesen
ReadProcessMemory interessiert nicht was die Bytes an der betreffenden Adresse bedeuten. Und im Speicher stehen nur Zahlen. Die Interpretation musst du schon machen.
|
Re: Unicode-Text per ReadProcessMemory auslesen
Na.. man kann im Speicher auch Text auslesen! Oder brauch ich dafür ne andere Funktion?? o.O
|
Re: Unicode-Text per ReadProcessMemory auslesen
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. |
Re: Unicode-Text per ReadProcessMemory auslesen
Noch mal, im Speicher stehen nur Zahlen bzw. Werte von Zahlen. Zum Beispiel in Hexadezimalschreibweise:
Code:
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.
6F 62 6A 0D
|
Re: Unicode-Text per ReadProcessMemory auslesen
Ah ok habs anders interpretiert vorhin. Ja die Frage ist nur, wie mach ich aus dem ganzem ein Unicode-String?
|
Re: Unicode-Text per ReadProcessMemory auslesen
Delphi-Quellcode:
pseudocode :) (bzw besser word einlesen)
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; 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 |
Re: Unicode-Text per ReadProcessMemory auslesen
ty, ma schaun ob ichs hinkrieg!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz