AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MemoryStream ausführen

Ein Thema von traudl · begonnen am 15. Nov 2006 · letzter Beitrag vom 15. Nov 2006
Antwort Antwort
traudl

Registriert seit: 22. Jun 2004
Ort: Lauterach
37 Beiträge
 
Delphi 7 Enterprise
 
#1

MemoryStream ausführen

  Alt 15. Nov 2006, 10:01
Hallo DPler,
ich weiß mal wieder nicht weiter. Folgendes Problem: Ich habe eine Anwendung geschrieben mit der ich eine EXE datei in eine DB (AbsolutDB) einfügen kann und die zur Laufzeit mit einer RunProgram.exe aus der DB ausgelesen, auf Festplatte gespeichert, ausgeführt und danach wieder gelöscht wird.
Das ist der Punkt.... ich muss die Datei auf der Festplatte speichern. Kann man die Datei nicht aus der DB in den Speicher laden und dort ausführen ?? Oder gibt es eine andere Möglichkeit ???
Der Grund: die EXE Dateien werden von unseren Admins mit AutoIt geschrieben und compiliert. Jetzt wurde aber eine Datei decompiliert und der Code lag im Klartext vor. Darin war auch ein DomainAdmin Passwort ....

Delphi-Quellcode:
procedure TMainFrm.qryAutoItAfterRefresh(DataSet: TDataSet);
var i: Double;
    ExecuteFile: string;
    str: TMemoryStream;
begin
      str:= TMemoryStream.Create;
      //ExecuteFile:= usrTemp + '\' + qryAutoIt.FieldByName('name').AsString; // so mach ich es im Moment
      //TBlobField(DataSet.FieldByName('file')).SaveToFile(ExecuteFile);
      TBlobField(DataSet.FieldByName('file')).SaveToStream(str);
      Str.Position = 0;
      if str.Size = 0 then
        exit;
      {hier möchte ich den Stream ausführen}

      {ShellExecute(Handle,'open',  // so mach ich es im Moment
                    PChar(ExecuteFile) , PChar(''),
                    nil,SW_SHOWMINNOACTIVE);}

end;
Hoffentlich habt ihr irgenwelche ideen und könnt mir weiterhelfen.

Danke

Liebe Grüße aus dem Allgäu

Udo

[edit=SirThornberry]Buchstabendreher im Titel korrigiert - Mfg, SirThornberry[/edit]
Udo Kinscherf
Ich versuche mein Bestes, aber im Moment reichts noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: MeomryStream ausführen

  Alt 15. Nov 2006, 10:09
Es gibt die Möglichkeit (seit NT glaub ich) Dateien direkt aus dem Speicher auszuführen. Allerdings brauchst du dazu einen andere Anwendung die du startest und der du dann den neuen Code unterschiebst. Also irgend eine Anwendung musst du immer starten.
Aber letztendlich ist das der falsche Ansatz. Passwörter gehören generell nicht fest in Programme codiert. Und wenn es jemand schafft das Programm von der Festplatte zu decompilieren dann hat der jenige auch nicht viel mehr Aufwand es aus dem Speicher auszulesen. (zumal im Speicher in der Regel das ganze nicht mal veschlüsselt vorliegt zu dem Zeitpunkt wo es benötigt wird).
Desweiteren wird dadurch das Speichermanangement ausgehebelt wenn alles direkt aus dem Ram ausgeführt wird weil dann die ganze Anwendung in den Speicher geladen wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
traudl

Registriert seit: 22. Jun 2004
Ort: Lauterach
37 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: MeomryStream ausführen

  Alt 15. Nov 2006, 10:29
Danke für deine schnelle Antwort. Wenn ich eine Anwendung brauche die ich vorher starten muss funktioniert es eh nicht. Die Dateien die compiliert werden sind exe-dateien. Die Dateigrößen sind auch maximal 1,5 MB. Es sind kleine Tools, die bei Bedarf erstellt und ausgeführt werden. z.B. um einen Virus (wenn es mal wieder einer geschafft hat) per Loginscript zu killen (die Anwendung bereitstellen, dei ihn killt). Und dazu braucht man unter Umständen erhöhte Rechte...
Hättest du ene andere Lösung für mich?
Udo Kinscherf
Ich versuche mein Bestes, aber im Moment reichts noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: MeomryStream ausführen

  Alt 15. Nov 2006, 10:52
warum geht es nicht wenn man vorher eine andere Anwendung starten muss? Wegen einem Antivirenprogramm was dann Alarm meldet? Ansonsten hab ich es Testweiste gemacht das ich Notepad starte und dann diesem prozess den neuen Code unterjubel. Somit liefen die Anwendungen aus dem speicher heraus als Notepad.exe

Eine vielleicht bessere Lösung wäre einfach über die Registry die Anwendungen als Service einzutragen und zu starten. Die Anwendungen können sich ja dann auch selbst wieder austragen. Oder du schreibst einen Service der die Anwendung nach Login auf dem Nutzerdesktop anzeigt (oder einen neuen Desktop dafür aufmachen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
traudl

Registriert seit: 22. Jun 2004
Ort: Lauterach
37 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: MeomryStream ausführen

  Alt 15. Nov 2006, 11:35
Hört sich plausibel an, ich hab aber keine Ahnung wie das geht.. Sorry hast du ein kleines Beispiel für mich ??
Wie ich in den Stream lade weiß ich nur wie ich an einen Prozess übergeben soll ist mir ein Rätsel
Udo Kinscherf
Ich versuche mein Bestes, aber im Moment reichts noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: MeomryStream ausführen

  Alt 15. Nov 2006, 11:54
bei luckie auf der HP gibt es da eine Datei namens "inmemexe.zip" worin ein Beispielprojekt enthalten ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: MeomryStream ausführen

  Alt 15. Nov 2006, 12:06
Zitat von traudl:
Hättest du ene andere Lösung für mich?
Wie wäre es denn mit VB-Scripts, die vom Windows Scripting Host ausgeführt werden??
Man kann diese Script auch verschlüsseln, damit der Sourcecode nicht direkt auslesbar ist.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: MeomryStream ausführen

  Alt 15. Nov 2006, 12:12
Zitat von shmia:
Zitat von traudl:
Hättest du ene andere Lösung für mich?
Wie wäre es denn mit VB-Scripts, die vom Windows Scripting Host ausgeführt werden??
Man kann diese Script auch verschlüsseln, damit der Sourcecode nicht direkt auslesbar ist.
Wenn derzeit das Problem bestand das eine Exe decompiliert wurde, wird ein verschlüsseltes VB-Script kein größeres Hinternis sein.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
traudl

Registriert seit: 22. Jun 2004
Ort: Lauterach
37 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: MemoryStream ausführen

  Alt 15. Nov 2006, 13:32
und wenn ich den Source des Scripts in die DB hinterlege und zur laufzeit den Source mit der compiler exe ausführe ??
Wäre das besser ?
Also den Source in den Mem als Stream dann die au3.exe aufrufen und den stream übergeben. Ich hab aber immer noch das Problem das die au3.exe einen dateinamen zum compilieren will.
Udo Kinscherf
Ich versuche mein Bestes, aber im Moment reichts noch nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:16 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