![]() |
MemAlloc einer Appl untersuchen. Mit API Hook?
Hallo Forum,
Ich arbeite mit BCB6 unter WinXP und möchte ein Tool schreiben (ähnlich CodeGuard oder MemoryValidator), welches die Speicher nutzung einer Application erkennt und darstellt. Sinn des ganzen soll nicht sein die bestehenden Tools zu ersetzen oder zu verbessern, sonder ich möchte lediglich verstehen wie es funktioniert. Besonders interessieren mich dabei die C++Objekte die von mir selbst im zu untersuchenden Programm angelegt bzw. fereigegeben werden, weniger interessieren mich die Speichervorgänge von genutzen Drittanbieterkomponenten oder genutzten DLLs. Meine Idee ist es dort einen Hook zu setzen wo die entsprechenden Speicheroperationen vom Betriebssystem durchgeführt werden um dann zu protocollieren wer wann wieviel Speicher allociert bzw. freigegeben hat. Macht man das so? Wenn ja, was muss ich wo und wie hooken? mfg, matmok |
Re: MemAlloc einer Appl untersuchen. Mit API Hook?
Herzlich willkommen in der Delphi-PRAXiS, matmok.
Direkt helfen kann ich dir leider nicht, aber vielleicht hilft dir ein Blick in das Open-Source-Projekt ![]() Freundliche Grüße |
Re: MemAlloc einer Appl untersuchen. Mit API Hook?
Ich hatte auch mal zum testen einfach alle Speicherseiten ermittelt, die das Programm benutzt und zusammenaddiert. Ob das so funktioniert und sinnvoll ist, weis ich nicht. (Ich meine funktionieren tut es, aber ob das Ergebnis sinnvoll ist?)
Mit virtualquery kann man sich ja so durchhangeln. Für eine fremde Anwendung könnte evtl virtualqueryEx reichen oder du injizierst den Code gleich in den Prozess, dann kannst du auch gleich localAlloc oder was auch immer hooken. Beispiel (nur) in Pascal:
Delphi-Quellcode:
function MemoryUse:integer;
var mbi:memory_basic_information; si:system_info; pos:cardinal; begin getsysteminfo(si); pos:=cardinal(si.lpMinimumApplicationAddress); result:=0; while pos<cardinal(si.lpMaximumApplicationAddress) do begin virtualquery(pointer(pos),mbi,sizeof(mbi)); if (mbi.State and mem_commit)>0 then inc(result,mbi.RegionSize); inc(pos,mbi.regionsize); end; end; |
Re: MemAlloc einer Appl untersuchen. Mit API Hook?
Hallo und vielen Dank für die Antworten.
Hatte noch keine Zeit FASTMM zu untersuchen, werde dies aber noch machen. Der zweite Tip ist wahrscheinlich ungeeignet wenn ich die Anzahl und die Namen der generierten Objeckte herausfinden möchte. Wenn ich neues rausegfunden habe werde ich es posten. mfg, matmok |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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