Autor Beitrag
Lhid
ontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 831



BeitragVerfasst: Sa 21.07.07 19:15 
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert


Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Sa 21.07.07 19:24 
Du könntest doch nach den Stellen im Code in denen die Variable verändert wird reagieren:

ausblenden Delphi-Quelltext
1:
2:
inc(i);
ShowMessage('i hat sich verändert');
Lhid Threadstarter
ontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 831



BeitragVerfasst: Sa 21.07.07 19:40 
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert


Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Sa 21.07.07 19:43 
Wenn's zuviel Arbeit ist, dann schreib doch 'ne Prozedur:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure wa; // <-- steht für 'wenig arbeit' ;-)
begin
  ShowMessage('i hat sich verändert');
end;
.
.
.
inc(i); 
wa;
Lhid Threadstarter
ontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 831



BeitragVerfasst: Sa 21.07.07 19:49 
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert


Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 21.07.07 19:49 
Also das ganze über einen Timer zu realisieren ist wohl die schlechteste Lösung. Ich würde das genauso wie user profile iconCalculon machen. Man könnte natürlich auch eine eigene Klasse deklarieren, die Variable als Property nutzen, und dann in der Write-Prozedur darauf reagieren, wobei ich das eher vermeiden würde.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 21.07.07 20:34 
Wenn Du weißt, dass die Variable auf einer eigenen Speicher-Seite steht, kann man das ganze auch über Guard-Pages lösen (vorausgesetzt, man weiß, was man tut ;-) Im Fall einer Guard-Page würdest Du bei jedem Zugriff auf die geschützte Speicherseite eine Low-Level-Exception bekommen, die Du auswerten (UND behandeln) müsstest.

Mit etwas mehr Aufwand könntest Du sogar mehrere Variablen auf die Guard-Page nehmen. Näheres Erklärt Dir uall sicherlich gern :P

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Lhid Threadstarter
ontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 831



BeitragVerfasst: So 22.07.07 14:06 
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert


Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 22.07.07 15:16 
Frag diesbezüglich uall. Ist aber eigentlich auch nur ein Bit bei VirtualProtect. Wie gesagt, uall hat damit mal nen EXE-Schutz geschrieben ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 29.09.07 16:45 
Ich würde VirtualProtect diesbezüglich aber nicht benutzen (dauert zu lange). Debugger machen das über Hardware Breakpoints. Da sollte google helfen. HW BPs kannst du mittels SetContext und den drx registern (dr0-dr7) setzen. insgesamt gibst 4 HW BPs (0-3 wenn ich richtig informiert bin, die andere geben die maske an, (on write, execute, read, byte, word, dword)).
Dann musst du nur noch einen Excpetionahndler installieren (z.b. per Hook auf ntdll.KiUserExceptionDispatcher (hieß glaub ich so oO)

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Sa 29.09.07 17:37 
Titel: Re: Integer während Prozess auf Veränderung überprüfen
Hi,

user profile iconLhid hat folgendes geschrieben:
Dort gibt es einen Integer.
Nun wird dieser Integer von mehreren Sachen beeinflusst.
Und wie kann ich nun überprüfen wann er sich ändert.


Du koenntest den Integer mittels eines Prozeduraufrufs aendern (sprich: Mach 'ne Property mit Setter-Methode draus). Dann weisst Du, dass die einzige Moeglichkeit ihn zu Aendern im Aufruf der Prozedur besteht und brauchst dann nur dort zu ueberpruefen, ob der neue Wert <> dem alten ist.

twm