Variablen Realtime überwachen

02/14/2012 16:21 theredvex#1
Moin Moin,

Ich habe da mal eine kleine Frage an die Community, ist es möglich in C++ eine Variable realtime zu überwachen?

Ich war schon drauf und dran einen extra Thread in meiner DLL zu erstellen, der mit einem Timer versehrt ist und alle X Sekunden die Variable checkt. Problem ist daran nur, dass es höchstwahrscheinlich zu einem Bufferoverflow führen wird.

Hat da jemand eine Idee?
02/14/2012 16:36 .Infinite#2
Wieso sollte das zu einem Bufferoverflow führen?
02/14/2012 17:10 xNopex#3
Quote:
Wieso sollte das zu einem Bufferoverflow führen?
Weil der Puffer nur maximal zwei Werte auf einmal speichern kann, also das Betriebssystem, wenn es einen Thread erstellt nur virtuelle Klasse kompiliert und wenn dann der Linker ne Exception wirft, kann es passieren, dass im Thread Pool manchmal der GC einfach die alten Werte löscht, deswegen muss man das Array also die Struktur einfach Threadsafe machen am besten mit nem Monitor, aber dann geht halt die Parallelität flöten.

Liebe Grüße
02/14/2012 17:22 link#4
Was meinst du mit überwachen und wofür?
Du kannst die Variable doch jederzeit ansprechen und den Inhalt auswerten.

Ich weiß zwar nicht, was du erreichen möchtest, aber evtl. könntest du auch mit Exceptions (z.B. über Memory Protections oder Breakpoints) arbeiten, sodass du die Kontrolle erhältst, wenn auf deine Variable zugegriffen wird.

PS:
Ich raff leider auch nicht wirklich, weshalb das zu einem Bufferoverflow führt..

Quote:
Weil der Puffer nur maximal zwei Werte auf einmal speichern kann, also das Betriebssystem, wenn es einen Thread erstellt nur virtuelle Klasse kompiliert und wenn dann der Linker ne Exception wirft, kann es passieren, dass im Thread Pool manchmal der GC einfach die alten Werte löscht, deswegen muss man das Array also die Struktur einfach Threadsafe machen am besten mit nem Monitor, aber dann geht halt die Parallelität flöten.
Welcher Puffer? Was genau meinst du mit virtueller Klasse und was hat der Linker mit der Ausführung zu tun?
02/14/2012 17:25 theredvex#5
ich versuche mal mein ziel zu erklären.
ich habe eine codecave in einem Programm erstellt die für meine dll eine String (der normal nur auf dem Bildschirm gezeigt wird) abfängt, speichert und den gewohnten Lauf wiederherstellt . diese gespeicherte Variable will ich an einen Server senden der die wiederum in MySQL einspeist. die codecave also das speichern der Variable basiert auf ASM. deshalb kann ich ja leider nicht eigene c++ Funktionen nutzen und muss die Variable separat überwachen

Alles Klar Thema beendet. habe es jetzt mit einem Timer gemacht.
Was ich aber noch nicht ganz verstehe ist, wenn ich von meiner CodeCave eine Addresse von einem UNICODE-String bekomm wie kann ich diese dann auslesen?
02/18/2012 18:28 xNopex#6
Quote:
Welcher Puffer? Was genau meinst du mit virtueller Klasse und was hat der Linker mit der Ausführung zu tun?
Das sollte witzig sein.. Aber scheinbar decken sich der Humor des Forums und mein Humor nicht unbedingt.

EDIT: Sry fürs ausgraben...
02/18/2012 20:04 link#7
hehe, mit der Ironie im Internet ist das so 'ne Sache :)
Ich hab jetzt echt gedacht, du würdest das ernst meinen und dass mir da irgendwas entgangen ist :P
Naja, meine Scherze kommen auch nicht immer rüber/an.. ([Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...])