AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Virtuelles Laufwerk oder Datei verteckt anlegen und starten
Thema durchsuchen
Ansicht
Themen-Optionen

Virtuelles Laufwerk oder Datei verteckt anlegen und starten

Ein Thema von Riese · begonnen am 18. Mai 2006 · letzter Beitrag vom 19. Mai 2006
Antwort Antwort
Seite 1 von 3  1 23      
Riese

Registriert seit: 17. Nov 2005
16 Beiträge
 
Delphi 5 Standard
 
#1

Virtuelles Laufwerk oder Datei verteckt anlegen und starten

  Alt 18. Mai 2006, 19:24
Hallo!

Ich schreibe gerade einen Download-Manager als Zusatzkomponente für unsere Software.
Ich prüfe, ob auf dem Server eine neue Datei vorhanden ist. Falls ja wird diese runtergeladen.
Und jetzt kommts:
Die heruntergeladene Datei soll direkt mittels ShellExecute etc. aus meiner Applikation gestartet werden. Kein Problem, aber ich möchte die heruntergeladene Datei NICHT auf der Platte ablegen.
Also auch nicht im temp-Ordner. Sie könnte dort nach/während dem Start vom Benutzer kopiert werden und das darf nicht sein.
Meine Idee. Die Datei irgendwie in den Arbeitspeicher (virtuelles (nicht angezeigtes) Laufwerk etc.) kopieren und dort starten.
Geht sowas und wenn ja wie?

Gruß
Riese
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 19:45
Ähem ... okay. Und wie hinderst du den Benutzer es aus dem Speicher zu dumpen?

Unter Umgehung aller höheren OS-APIs kann man das erreichen (ohne Ablegen auf der Platte), ob man damit aber den Benutzer daran hindert etwas zu kopieren, wage ich anzuzweifeln.

Außerdem riecht mir das leicht nach Malware ...

Schonmal dran gedacht den Benutzer mithilfe der Rechte auf die Datei daran zu hindern sie zu kopieren?

Nachtrag: Virtuelle Laufwerke benötigen meistens einen Treiber um zu funktionieren. Die Tatsache, daß dein Laufwerk keinen Laufwerksbuchstaben hat, bedeutet aber lange nicht, daß es nicht zugreifbar ist. Selbst von Win32 aus kann jeder Benutzer sich das Gerät auf einen freien Buchstaben mappen und dann auf die Datei zugreifen.
  Mit Zitat antworten Zitat
Riese

Registriert seit: 17. Nov 2005
16 Beiträge
 
Delphi 5 Standard
 
#3

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 19:55
Danke für Deine schnelle Antwort,
Zitat von Olli:
Ähem ... okay. Und wie hinderst du den Benutzer es aus dem Speicher zu dumpen?
OK, ganz verhindern kann man so was natürlich nicht, aber es dem Otto-Normal-User zumindest verwehren.

Zitat von Olli:
Außerdem riecht mir das leicht nach Malware ...
Riecht es vielleicht, ist es aber nicht.

Zitat von Olli:
Schonmal dran gedacht den Benutzer mithilfe der Rechte auf die Datei daran zu hindern sie zu kopieren?
Dies geht nur unter NTFS (zumindest meines Wissens nach) und viele unserer Kunden haben noch das FAT32 System.

Zitat von Olli:
Nachtrag: Virtuelle Laufwerke benötigen meistens einen Treiber um zu funktionieren.
Ja, leider. Ich möchte auch keinen Treiber programmieren aber ich dachte es gibt vielleicht etwas anderes als ShellExecute bei dem man keine Datei sondern eine Adresse (z.B. MemoryMappedFile) angeben kann.
Naja, vielleicht hat ja noch jemand eine Idee...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 20:07
Zitat von Riese:
Ja, leider. Ich möchte auch keinen Treiber programmieren aber ich dachte es gibt vielleicht etwas anderes als ShellExecute bei dem man keine Datei sondern eine Adresse (z.B. MemoryMappedFile) angeben kann.
Darauf liefe meine andere Idee hinaus. Dabei müßtest du Importe selbst auflösen, den PEB und den TEB vorbereiten usw. usf. ... alles nicht so einfach.

Weswegen willst du es denn überhaupt verhindern? Warum lädst du nicht bspw. eine DLL von dem entfernten Server (unter der Annahme, daß du per FS darauf zugreifst) und hast diese dann eben in deinem Prozess. Die DLL kann doch sicher das gleiche leisten wie eine "normale Anwendung".
  Mit Zitat antworten Zitat
Riese

Registriert seit: 17. Nov 2005
16 Beiträge
 
Delphi 5 Standard
 
#5

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 20:16
Zitat von Olli:
Darauf liefe meine andere Idee hinaus. Dabei müßtest du Importe selbst auflösen, den PEB und den TEB vorbereiten usw. usf. ... alles nicht so einfach.
Oh je, klingt schwierig, ...

Zitat von Olli:
Weswegen willst du es denn überhaupt verhindern? Warum lädst du nicht bspw. eine DLL von dem entfernten Server (unter der Annahme, daß du per FS darauf zugreifst) und hast diese dann eben in deinem Prozess. Die DLL kann doch sicher das gleiche leisten wie eine "normale Anwendung".
Ja, aber die herunterladbare Anwendung ist schon fertig (als exe). Es soll aber nach einem Download nur gestattet sein diese 1 x zu starten. Ein doppelter Start könnte Datenbanken die dabei konvertiert werden zerstören, ...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 20:24
Schwierig schwierig. Ich hätte ja Streams (ADS) vorgeschlagen, aber die gibt's für FAT32 nicht (nur FAT12 und FAT16).

Ich befürchte, daß du wirklich auf jemanden mit einer anderen Idee warten mußt ...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 22:12
Also wenn du das ganze als DLL runterlädst (wie bereits vorgeschlagen) kannst du doch eigentlich erreichen das die Datei nur einmal ausgeführt wird. Du lädst also die DLL herunter und lädst diese mit LoadLibrary. Dann kannst du in der DLL deine eigentliche Funktion ja aufrufen (mit irgendwelchen tollen Parametern)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 22:32
Zitat von Riese:
Ja, aber die herunterladbare Anwendung ist schon fertig (als exe). Es soll aber nach einem Download nur gestattet sein diese 1 x zu starten. Ein doppelter Start könnte Datenbanken die dabei konvertiert werden zerstören, ...
Dafür gibts aber wesentlich einfachere Möglichigkeiten, um den Mehrfachstart zu verhindern.

Zum Beispiel über Semaphoren:

Delphi-Quellcode:
  
var
  SH_Sem : HWND;
  SH_Ins : boolean;

.
.
.

  SH_Sem:=CreateSemaphore(nil,0,1,'ein belibiger eindeutiger Text');
  SH_Ins:=(SH_Sem<>0) and (GetLastError=ERROR_ALREADY_EXISTS);
  If SH_Ins then
  begin
    CloseHandle(SH_Sem);
    exit;
  end;
Das in die .dpr datei rein vor Application.Initialize.

Dann noch die Unit Windows ins Projekt einbinden und fertig ... Damit wird eine Semaphore angelegt, die in der Sitzung einzigartig ist. Beim zweiten start erhählt man dann über GetLastError die Info, dass diese schon exisistiert und man weiß, dass Programm bereits läuft ...

Aber ehrlich. Wenn dein Programm so unsicher ist, dass es bei zweifachen Start die Datenbank zerstört, dann ist irgendwas nicht so recht schön ...
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 22:33
@jim_raynor: Es geht nicht darum zu verhindern das eine Datei merhfach gleichzeitig läuft sondern darum sicherzustellen das ein Programm nur ein einziges mal ausgeführt wird und dann nie wieder.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Virtuelles Laufwerk oder Datei verteckt anlegen und star

  Alt 18. Mai 2006, 22:45
Wie wärs wenn du die Datei einfach verschlüsselst oder zumindest Teile davon dann von deinem Server runterlädst und die Datei erst entschlüsselst und dann startest, nach dem Starten, kann es ja auch dann sofort gelöscht werden.
Dann könnte der Benutzer zwar die Datei kopieren, kann aber nix mit der verschlüsselten Datei anfangen.
Man kann das Spiel ja noch weiter treiben und das Passwort der Verschlüsselung an das derzeitige Sessionkey binden, sprich das Passwort/Verschlüsselung ist nur für diese einmalige Session gültig und wird vom Server zu deinem Programm mitgeteilt, dann brauchst du in deinem Programm das Passwort nicht mitspeichern, usw... der Aufwand ließe natürlich noch weitertreiben aber....naja....

Lg,
jus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz