Zugriff auf den Speicher fremder .NET-Prozesse
-
Hallo,
ich bin gerade am schummeln und suche eine möglichkeit, objekte anderer .net-anwendungen zu auszulesen und zu manipulieren. ich hab's schon mit winapi probiert, hat aber leider nicht ganz funktioniert
gibt's da auch eine einfachere möglichkeit als mit winapi, weil das nämlich unter verwendung der speicherzugriff-tutorials auf http://www.online-tutorials.net/security/tutorials-27.html nicht alle variablen findet???
als erstes benötige ich eine möglichkeit, die adresse eines speziellen objekts in diesem prozess herauszufinden.
bin über jeden vorschlag überglücklich
mfg paulrei
-
Ich schätze mal, unter .NET ist das sowiso nicht so einfach, da sich die Adresse eines Objekts sogar während seiner Lebzeit ändern kann.
Simon
-
Das ist nicht so entscheidend, weil man den Prozess sicher auch pausieren kann, oder? Wenn ich die Adresse herausfinden könnte, wäre das Problem schon gelöst Mein .NET-Programm kann die leider nicht selbst herausfinden, weil es in C# geschrieben ist und nicht die nötige Berechtigung zur Verwendung von unsafe-Blöcken hat.
Gibt es da z.B. eine gute Möglichkeit, diese Adresse der Instanz herauszufinden, wenn man eine Klasse wie diese hat:
public ref class Klasse : public AndereKlasse { public: int eineZahl; }; Klasse ^klasse = gcnew Klasse();
und die Adresse von klasse->eineZahl bereits herausgefunden hat? Eine andere Methode fällt mir nicht ein
-
Wenn Du den Prozess pausieren lassen kannst, dann kannst Du z.B. WinDbg (oder cdb) einfach verwenden um die Adressen zu ermitteln (mittel sos.dll).
Oder natürlich auch indem Du eine Profiler-DLL in den Prozess einschleusst...
-
Funktioniert das auch für .NET?
-
Das funktioniert *nur* für .NET!
-
Was ist eine Profiler-DLL und wo bekommt man sowas her?
EDIT: Bei Wikipedia steht, dass Profiler zur Analyse der Laufzeit bestimmt sind, aber nicht, dass man damit auch die Adresse bestimmter Objekte in .NET-Anwendungen herausfinden kann.
-
Ein älteres Beispiel gibt es hier:
http://msdn.microsoft.com/en-us/magazine/cc301725.aspxSIehe auch:
http://msdn.microsoft.com/en-us/library/bb384493.aspx
-
Danke, hat mir sehr weitergeholfen
Aber geht das auch mit Administratorrechten?
-
Wolltest Du fragen, ob es auch *ohne* Admin-Rechte geht...
MIT Admin-Rechten geht sowas immer
-
Ja, klar, sorry... Ich meinte natürlich ohne.
-
Wenn Du denn Prozess startest geht es AFAIk auch ohne...