Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.08.2008, 15:05 Titel: Mal ganz "platt" gefragt... |
|
|
... gibt es einen Weg mit dem man einen selbstdefinierten Speicherbereich mit anderen Programmen teilen kann?
Gerade im Umgang mit DLLs wäre sowas sehr... angenehm ... alles mögliche per Value zu übergeben find ich irgendwie nervig (auch wenn es wahrscheinlich die "hohe Kunst" ist).
Aber vor allem könnte ich mir dir Kommunikation zwischen zwei parallel-laufenden Programmen so viel effektiver vorstellen.
Bei FB ists ja so das man einen 4byte großen Adressraum zur Verfügung hat und im Prinzip nicht "ausbrechen" kann. (ich hoffe ich hab mich jetzt nicht zu unglücklich ausgedrückt.)
Dennoch gibt es anscheinend Programme die auf den Speicherinhalt anderer Programme zugriff nehmen können!!
Diverse Hack-Tools beobachten den Speicherbereich eines beliebigen Programmes und können ihn sogar aktiv verändern.
Nun möchte ich ja gar nichts hacken sondern 2 programme von sich aus so auslegen das sie sich über einen gemeinsamen speicherbereich miteinander unterhalten können und dürfen!!
Danke schon mal für die Mühe bis hier hin
Gruß Chris |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 27.08.2008, 15:32 Titel: Re: Mal ganz "platt" gefragt... |
|
|
OneCypher hat Folgendes geschrieben: | ... gibt es einen Weg mit dem man einen selbstdefinierten Speicherbereich mit anderen Programmen teilen kann? |
Ja das gibt es und nennt sich Shared Memory unter UNIX/Linux und stellt ein Teilkonzept von der sog. System V IPC dar.
Wichtig: Um Shared Memory sinnvoll nutzen zu können, musst Du Dich auch mit Grundkonzepte wie Semaphoren und Mutex sowie generell kritischen Abschnitten (critical section) auseinandersetzen.
Generell ist Parallelprogrammierung relativ anspruchsvoll und stellte daher während meines Informatikstudiums sogar ein eigenes Fach dar! _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 27.08.2008, 15:34 Titel: |
|
|
Gut, unter Linux hat dreael es gerade erklärt. Unter DOS--- Wie willst Du unter DOS zwei Programme parallel laufen lassen?
Höchstens geht das unter Multitasking-Umgebungen. Unter Windows kannst Du natürlich Nachrichten zwischen zwei Prozessen verschicken und darin Werte oder Pointer auf die jeweiligen Speicherbereiche übergeben. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 27.08.2008, 15:44 Titel: |
|
|
(Ich wollte mal gesagt haben, dass ein Programm und dessen Module sich unter Windows einen Speicherbereich teilen.)
Deswegen kann man ganz einfach und schnell in einem Modul (DLL bspw.) einen Speicherbereich allozieren, und das Hauptprogramm kann es bearbeiten und sogar dealloziieren... |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.08.2008, 16:23 Titel: |
|
|
@Elektronix: Unter DOS kann man immerhin ein weiteres Programm aus dem Hauptprogramm herraus starten. Dann wartet das Hauptprogramm bis das 2. programm beendet ist.
Wäre auch nicht schlecht wenn das 2. Programm dann auf den Speicher des Hauptprogrammes zugreifen könnte...
@dreal: hmm.. Mutex ?.. hört sich nach multithreading an .. innerhalb von FB hab ich mich damit sogar schon beschäftig.. also mit der Synchronisation von mehreren Threads die auf gemeinsamen speicher zugreifen.
Ich arbeite die Meiste zeit unter Linux, bin aber auch oft in der Windows-Welt. Sind alle Vorgehen was "Gemeinsamen-Speicher" angeht immer OS-Spezifisch?
@28398: Unter Windows hab ich zu Anfangs mal versucht einen Pointer an eine Funktion innerhalb einer DLL zu übergeben. Windows dankte mir das mit dem Absturz des Programmes Daher dachte ich das Windows das genauso abschottet.
Wie funktioniert es generell die Speicherinhalte anderer Programme zu überwache bzw auszulesen? .. Hoffe doch das dies kein "illegales" Thema ist! |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.08.2008, 16:45 Titel: |
|
|
PS: Was ich schon immer mal loswerden wollte:
Was Microsoft lang nennt, nennt Freebasic Integer *lol* |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 27.08.2008, 16:55 Titel: |
|
|
Zitat: | @Elektronix: Unter DOS kann man immerhin ein weiteres Programm aus dem Hauptprogramm herraus starten. Dann wartet das Hauptprogramm bis das 2. programm beendet ist.
Wäre auch nicht schlecht wenn das 2. Programm dann auf den Speicher des Hauptprogrammes zugreifen könnte... | Ist aber eine ziemlich gefährliche Sache. Wenn nämlich dieses 2. Programm die Daten des Hauptprogrammes ändert, kommt das Hauptprogramm evtl zu falschen Ergebnissen oder stürzt sogar ganz ab.
Zitat: | Sind alle Vorgehen was "Gemeinsamen-Speicher" angeht immer OS-Spezifisch? | Soweit ich weiß ja, weil jedes OS seinen Speicher anders abschottet.
Zitat: |
Was Microsoft lang nennt, nennt Freebasic Integer *lol* |
Die Datenbezeichnungen hat sich unter Windows mehrfach geändert. Früher war ein Integer unter Windows 16Bit breit, seit Win98 sind es 32Bit. Dementsprechend haben sich auch die anderen Datenbreiten verschoben. Ein Long unter WinXP ist glaube ich 64Bit. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.08.2008, 17:04 Titel: |
|
|
Hmm.. wenn ich mich recht erinnere sind auch unter WinXP Pointer genauso groß/lang wie LONG-Variablen. Zumindest werden in den Dokumentationen die ich habe Adressen immer mit LONG-Variablen an die WinAPI übergeben. Und somit wären LONG-Variablen unter WinXP immer noch 32-bittig... vielleicht kommts ja auf den Compiler an...
Aber 64-Bit Pointer gibts definitiv erst ab WinXP 64
Also wenn ich ein 2. Programm aus meinem Hauptprogramm unter DOS aufrufe, dann wird es definitiv kein Programm sein welches mit Absicht das Hauptprogramm durcheinander bringt .. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 27.08.2008, 19:55 Titel: |
|
|
Hi,
unter Windows gibt es noch die Möglichkeit des FileMapping (http://www.freebasic-portal.de/index.php?s=code&id=125), ist eigentlich nichts anderes als Daten statt über die HD über den Speicher auszutauschen. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 27.08.2008, 20:32 Titel: |
|
|
OneCypher hat Folgendes geschrieben: | Ich arbeite die Meiste zeit unter Linux, bin aber auch oft in der Windows-Welt. Sind alle Vorgehen was "Gemeinsamen-Speicher" angeht immer OS-Spezifisch? |
Meines Wissens sind mittlerweilen etliche dieser aus der UNIX-Welt entstandene Konzepte zu sog. POSIX-Standards geworden, an denen sich mittlerweilen viele Betriebssysteme daran halten.
Wie der Wikipedia-Artikel zeigt, ist Windows vom POSIX-Standard noch einiges entfernt, wobei NT-basierte Versionen (NT 4.0, W2K, XP/Server 2003 und Vista/Server 2008) gegenüber 95/98/ME wesentlich besser dastehen. Allerdings stellt Microsoft mit Services for UNIX eine entsprechende Erweiterung bereit. Eine Alternative unter Windows ist Cygwin, welches den Microsoft-Betriebssystemen auch sehr viele UNIX/Linux-Funktionalität beibringt, womit viele Open Source-Projekte auch unter Windows erfolgreich zum Laufen gebracht werden können.
Ebenfalls noch lesenswert an dieser Stelle:
http://de.wikipedia.org/wiki/Linux_Standard_Base
http://de.wikipedia.org/wiki/Unixoid _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 27.08.2008, 21:37 Titel: |
|
|
Ansonsten gibts ja noch Extern. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 28.08.2008, 13:21 Titel: |
|
|
Zitat: | ... womit viele Open Source-Projekte auch unter Windows erfolgreich zum Laufen gebracht werden können. |
OpenSource-Projekte sollten nur aus einem einzigen Grund noch auf Windows portiert werden: Damit zukünftige Linux-Benutzer ihre geliebten Programme mit Namen kennen!
... Ist jedenfalls mal meine Meinung. Desto mehr OSS ich unter Windows einsetze desto leichter fällt der umstieg auf linux.. wer will schon closed-source...
*räusper* .. sorry fürs offtopic...
@28398: Lustig .. dein Nick hat genau die quersumme 30 .. *räusper*
Hm.. Extern ... aus dem Beispiel in der Befehlsreferenz werd ich nich so richtig schlau..
Wieso ruft dort das 2. Modul eine Funktion des 1. Modules auf? .. Bzw wie erkennt das 2. Modul das die Sub "SetFoo" im 1. Modul steht? Irgendwie verwirrend weil dort auch nirgends steht wie das zu compilieren und aufzurufen ist.. |
|
Nach oben |
|
 |
|