AGB  ·  Datenschutz  ·  Impressum  







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

Speicher Adresse überwachen?

Ein Thema von 4dk2 · begonnen am 8. Apr 2016 · letzter Beitrag vom 11. Apr 2016
Antwort Antwort
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#1

Speicher Adresse überwachen?

  Alt 8. Apr 2016, 10:36
Delphi-Version: 5
Hallo,
ist es evtl. möglich die Speicheradresse bei dem folgenden Beispiel die Schreibzugriffe oder vielleicht sogar Lesezugriffe zu überwachen?
Ohne Wert auf die dadurch sinkende Performance zu legen

Klar ich kann mir den Wert merken und an geeigneter Stelle vergleichen, aber geht das auch anders?

Ich denke mal mit den Delphi Boardmitteln geht es nicht. aber vielleicht mit FastMM und Co?

Delphi-Quellcode:
var
  Form1: TForm1;
  IntWert1:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i1,i2:integer;
    p:PInteger;
begin
  //init:
  IntWert1:=100;

  p:=@IntWert1;

  //ab hier die Adresse überwachen?
  p^:= 123456;
  IntWert1 := 654321;
  
  i1:=p^;
  i2:=IntWert1;

end;

wünsche euch eine schönes Wochenende
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#2

AW: Speicher Adresse überwachen?

  Alt 8. Apr 2016, 10:54
Debugger > Bei Google suchenDatenhaltepunkt
Ob das auch auf Lesen reagiert ... k.A.

PS: F5 = Codehaltepunkt




Oder MSDN-Library durchsuchenVirtualProtect und dann auf die Exception reagieren.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Apr 2016 um 10:59 Uhr)
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#3

AW: Speicher Adresse überwachen?

  Alt 8. Apr 2016, 11:00
, ne ich das Programm. Im Programm darauf reagieren.
  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

AW: Speicher Adresse überwachen?

  Alt 8. Apr 2016, 12:04
Was er mit VirtualProtect meint ist, dass du das PAGE_GUARD übergeben kannst.
Dadurch wird eine Exception ausgelöst sobald jmd auf die Page zugreift. Problem ist allerdings dass du damit mehr als nur eine Variable überwachst sondern eben direkt die ganze Page (meistens 4KB).

Ansonsten gibt es soweit ich weiß keine Möglichkeit sowas festzustellen.
Hatte auch mal danach gesucht, aber nichts gefunden.
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 Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Speicher Adresse überwachen?

  Alt 8. Apr 2016, 12:23
Also der Ansatz über die Exceptions ist schonmal richtig. Fangen kannst du diese am besten, indem du einen eigenen Top-Level Exception-Handler mit MSDN-Library durchsuchenAddVectoredExceptionHandler registrierst.

PAGE_GUARD ist allerdings denkbar ungünstig (EXTREM unperformant), weil es halt die komplette Page betrifft.

Als Alternative kannst du im betroffenen (oder allen) Thread mit MSDN-Library durchsuchenSetThreadContext die Debug Register entsprechend setzen, um einen "Hardware Breakpoint" zu aktivieren. Diese Hardware Breakpoints können je nach Wunsch durch Read, Write oder Execute getriggert werden. Nachteile gibt es allerdings auch: Du kannst maximal 4 HWBPs pro Thread setzen und die "Länge" des Breakpoints erstreckt sich nur bis maximal 4 Byte (evtl. 8 Byte unter 64-Bit, da bin ich mir grade nicht mehr sicher).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Speicher Adresse überwachen?

  Alt 8. Apr 2016, 12:38
Eine Variable überwachen macht man idR nicht. Wenn hat man eine Eigenschaft und wenn sich diese ändert feuert man einen Event.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 07:25 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