![]() |
Re: Problem mit ProcessMemory
Zitat:
Ändere als erstes mal Deine komische Winzig-Buffersize von 100 zu 4096 (page size) oder 65536 (fsmapsize), ReadProcessMemory ist relativ langsam weil es eine Menge Arbeit auf Kernel-Ebene bedeutet. 4096 ist die übliche Größe einer Speicherseite (memory page), das sind die kleinsten Elemente die jeweils einzeln gemappt werden. Indem du jedes Mal nur 100 Bytes liest, verursachst Du also knapp vierzigfachen Overhead beim Speicherzugriff... Desweiteren ist die Frage, nach was für Strings du suchst. Sind die nullterminiert oder längenbestimmt? Du suchst Dir ja ohne Rücksicht auf Verluste nur Ascii-Zeichen aus dem Speicher. Logisch dass da viel Blech bei rumkommt. |
Re: Problem mit ProcessMemory
Danke für den Tipp mit der Size werden ich noch probieren ;) Mir ist auch wurscht ob ich nur nach Strings durchpflüge. Es funktioniert nun wunderbar auch relativ schnell nachdem ich mal geschaut habe welchen Typ der Speicher hat wo die Zieldaten drin stehen. Es war Private und wenn ich nur diese Betrachte sind es nur noch ca. 25 Offsetberreiche.
Aber nur mal als Zusatzinformation, wie erkenne ich Strings im Speicher? Ich hab gehört sie enden mit #0 aber wie fangen sie an :) Mfg Shadow |
Re: Problem mit ProcessMemory
Du erkennst sie gar nicht. Das mit dem #0 wäre zwar ein Indiz, aber sehr unsicher. Du könntest natrülich mit dem Code durch eine Art Rechtschreibprüfung gehen und dadurch erkennen, wo Textstellen sind. Aber generell ist nix markiert als irgend ein Datentyp. Da stehen immer nur 0 und 1. Was es sein soll, ist eine Frage der Interpretation. Und die gestaltest du als Programmierer. Im ausführbaren Code ist sie aber nicht mehr zu erkennen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 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