Benutzer mit den meisten Antworten
Updaten eines Programmes

Frage
-
Hallo Leute,
wenn man eine Anwendung erstelle (gleich welcher Sprache, nehme im Beispiel mal c# und C++),
dann hat diese doch eine Version und Abhängigkeit zu den anderen Dateien und DLL's.
Beim Updaten muss man diese ja austauschen.
Meine Frage wäre nun: ist das einfach so möglich, also wenn ich z.B. eine Exe und eine DLL habe, und die DLL hat eine Verbesserung (aber nur die DLL, die EXE bleibt gleich), die Daten auszutauschen. Denn es wäre Nonsens, vor allem bei Menschen mit weniger guten Netzwerk, beide Komponenten neu herunterzuladen. Also würde man nur die neue DLL downloaden (Windows lädt ja auch nur neue DLL runter, und nicht nochmals das gesamte System) und aktuallisieren.
Kann man dann ein einfach die alte (wenn die EXE nicht läuft) löschen und die DLL austauschen?
Und wenn Ja, stellt das dann nicht ein Sicherheitsrisiko dar. Wie kann man dann die DLL's schützen (abgesehen davon, dass man Sie signiert, und bei jedem Start die Signatur geprüft wird.)
Mit freundlichen Grüßen
Thomas Roskop
(C) Thomas Roskop, 2013
- Verschoben Ciprian Bogdan Dienstag, 18. März 2014 15:47 C++ Frage
Antworten
-
Hallo Thomas Roskop
Ja, man kann die DLL einfach austauschen. Damit die neue DLL mit der alten EXE zusammen arbeitet müssen diese Kompatibel sein. Zur Aktualisierung ist es unter Umständen noch nicht einmal nötig die komplette DLL in einem Update bereit zu stellen. Für die Aktualisierung kann ein deutlich kleineres Aktualisierungspaket reichen, welches nur die Binärdifferenz zwischen alter und neuer DLL enthält.
Inwiefern siehst Du hier ein erhöhtes Sicherheitsrisiko? Ein dritter der die DLL austauschen kann, der kann doch auch gleich die ganze EXE austauschen.Gruß
- Florian
- Als Antwort markiert Ionut DumaModerator Freitag, 11. April 2014 11:59
-
Meine Frage wäre nun: ist das einfach so möglich, also wenn ich z.B. eine Exe und eine DLL habe, und die DLL hat eine Verbesserung (aber nur die DLL, die EXE bleibt gleich), die Daten auszutauschen.
Prinzipiell geht es, es hängt aber von der DLL ab, sprich wie die Funktionen exportiert sind. Bei Decorated/Mangled exports kann es zu Problemen kommen, wenn EXE und DLL nicht mit exakt dem gleichen Compiler / Linker gebaut wurden.Denn es wäre Nonsens, vor allem bei Menschen mit weniger guten Netzwerk, beide Komponenten neu herunterzuladen.
Nun was Nonsens ist, ist immer sehr subjektiv. Ich unterstelle mal Deine DLL wird keine Hunderte Megabyte groß sein. Bei wenigen MB ist so eine DLL selbt mit einer schlechten Verbindung recht schnell geladen....Kann man dann ein einfach die alte (wenn die EXE nicht läuft) löschen und die DLL austauschen?
Ja.Und wenn Ja, stellt das dann nicht ein Sicherheitsrisiko dar. Wie kann man dann die DLL's schützen (abgesehen davon, dass man Sie signiert, und bei jedem Start die Signatur geprüft wird.)
Nun da ich weis nicht ob es ein Sicherheitsrisiko ist. Zu dem Thema kann der Programmierer sich halt komplett austoben...Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.- Als Antwort markiert Ionut DumaModerator Freitag, 11. April 2014 11:59
Alle Antworten
-
Hi Thomas,
Ich habe deine Frage mal in de C++ Foren verschoben, da in deinem Thread als Beispiel C++/C# erwähnt wird.
Viele Grüße,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Thomas Roskop
Ja, man kann die DLL einfach austauschen. Damit die neue DLL mit der alten EXE zusammen arbeitet müssen diese Kompatibel sein. Zur Aktualisierung ist es unter Umständen noch nicht einmal nötig die komplette DLL in einem Update bereit zu stellen. Für die Aktualisierung kann ein deutlich kleineres Aktualisierungspaket reichen, welches nur die Binärdifferenz zwischen alter und neuer DLL enthält.
Inwiefern siehst Du hier ein erhöhtes Sicherheitsrisiko? Ein dritter der die DLL austauschen kann, der kann doch auch gleich die ganze EXE austauschen.Gruß
- Florian
- Als Antwort markiert Ionut DumaModerator Freitag, 11. April 2014 11:59
-
Meine Frage wäre nun: ist das einfach so möglich, also wenn ich z.B. eine Exe und eine DLL habe, und die DLL hat eine Verbesserung (aber nur die DLL, die EXE bleibt gleich), die Daten auszutauschen.
Prinzipiell geht es, es hängt aber von der DLL ab, sprich wie die Funktionen exportiert sind. Bei Decorated/Mangled exports kann es zu Problemen kommen, wenn EXE und DLL nicht mit exakt dem gleichen Compiler / Linker gebaut wurden.Denn es wäre Nonsens, vor allem bei Menschen mit weniger guten Netzwerk, beide Komponenten neu herunterzuladen.
Nun was Nonsens ist, ist immer sehr subjektiv. Ich unterstelle mal Deine DLL wird keine Hunderte Megabyte groß sein. Bei wenigen MB ist so eine DLL selbt mit einer schlechten Verbindung recht schnell geladen....Kann man dann ein einfach die alte (wenn die EXE nicht läuft) löschen und die DLL austauschen?
Ja.Und wenn Ja, stellt das dann nicht ein Sicherheitsrisiko dar. Wie kann man dann die DLL's schützen (abgesehen davon, dass man Sie signiert, und bei jedem Start die Signatur geprüft wird.)
Nun da ich weis nicht ob es ein Sicherheitsrisiko ist. Zu dem Thema kann der Programmierer sich halt komplett austoben...Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.- Als Antwort markiert Ionut DumaModerator Freitag, 11. April 2014 11:59
-
Danke für die Antworte.
Eine kleine weitere Frage hätte ich noch.
Wöllte ich z.B. bestimmte Sicherheitsfunktionen in ebendiese DLL ewinfügen (heißt, dass ich sicher sein muss, dass Sie echt ist), dann kann ich doch den Inhalt mit einem zB. RSA Schlüssel signieren, den öffentlichen in mitgeben und damit kann dann die Signatur überprüft werde.
(C) 2014 Thomas Roskop
-
Korrekt, durch signieren der DLL kann man sicherstellen das diese nicht verändert wurde. Außerdem kann man über die Prüfung der Signatur feststellen, dass diese aus einer Vertrauenswürdigen Quelle stammt.
Beides kann man über ein Zertifikat lösen mit dem deine DLL (sowohl die aktuelle als auch eine zukünftige) signiert wird. Deine Exe müsste diese Signatur dann prüfen oder es muss Alternativ sichergestellt werden das nur signierter Code ausgeführt werden darf.
- Florian
- Bearbeitet Florian Haupt Freitag, 21. März 2014 13:17
-
Hallo Thomas,
Wenn Dir die Antworten geholfen haben, dann bitte markiere diese als Antwort.
Danke und Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Thomas,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Wenn nicht, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.Danke und viele Grüße,
IonutIonut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.