Ich möchte mit C (oder C++) direkt in
den Speicher schreiben. Also auch
in den Speicherbereich eines anderen
Programms. Gibt es da eine Möglichkeit?
–Jan Vornberger
Ich möchte mit C (oder C++) direkt in
den Speicher schreiben. Also auch
in den Speicherbereich eines anderen
Programms. Gibt es da eine Möglichkeit?
–Jan Vornberger
Hi Jan,
dies ist keine Frage der Programmiersprache, sondern des Betriebssystems.
Unter UNIX/LINUX: Keine Chance bei Speicherbereichen, welche andere Programme alloziert haben.
Dito Windows NT (Allgemeine Schutzverletzung …) Das Betriebssystem beendet sofort einen Task, welcher „in fremden Wassern fischt“.
Unter DOS war das kein Problem:
Mit dem Makro
#define MK_FP(seg,ofs) ((void far *) ((unsigned long) (seg)[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Jan,
dies ist keine Frage der
Programmiersprache, sondern des
Betriebssystems.Unter UNIX/LINUX: Keine Chance bei
Speicherbereichen, welche andere
Programme alloziert haben.
Dito Windows NT (Allgemeine
Schutzverletzung …) Das Betriebssystem
beendet sofort einen Task, welcher „in
fremden Wassern fischt“.
stimmt nicht: unter windows nt arbeitet
man über file mappings, die memory
sharing zwischen separaten prozessen
ermöglichen.
Unter DOS war das kein Problem:
Mit dem Makro
#define MK_FP(seg,ofs) ((void far *)
((unsigned long) (seg)
stimmt nicht: unter windows nt arbeitet
man über file mappings, die memory
sharing zwischen separaten prozessen
ermöglichen.
So, macht man dies? Jeder? Immer? Dies ist also quasi der Standart? Alle Prozesse teilen sich allen Speicher? Na, dann habe ich natürlich nichts gesagt!
Gruß
Ted
stimmt nicht: unter windows nt arbeitet
man über file mappings, die memory
sharing zwischen separaten prozessen
ermöglichen.So, macht man dies? Jeder? Immer? Dies
ist also quasi der Standart? Alle
Prozesse teilen sich allen Speicher? Na,
dann habe ich natürlich nichts gesagt!
grins, lach, prust.
Natürlich können andere Programme auf den Speicher anderer Programme zugreifen, aber nur in den Speicherbereich, der auch dafür vorgesehen ist. Der Vorvorredner fragte jedoch, ob man auf jede beliebige Speicheradresse zugreifen kann und den Inhalt dort verändern kann.
Als Low-Level-Treiber müßte dies möglich sein (irgendjemand muß ja die Hoheit über den Speicher haben). Doch muß dieser „Status“ erst einmal erreicht werden.
Normalsterblichen Programmen sollte diese Möglichkeit immer verboten sein, es sei denn sie tauschen Daten über Shared Memory aus. Doch dann kann man auch nur dort die Daten verändern und nicht z.B. den Programmcode eines anderen Programms (was sowieso ziemlich krank werden kann
)
Gruß
Ted
MfG
Frank
Danke Frank,
Du hast mir die Hoffnung zurückgegeben, daß man hier ohne Pseudo-Direktiven wie
[#pragma Ironie on]
…
[#pragma Ironie off]
auskommt!
Gruß und einen schönen Abend
Ted