![]() |
MemoryStream ausführen
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:
Hoffentlich habt ihr irgenwelche ideen und könnt mir weiterhelfen.
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; Danke Liebe Grüße aus dem Allgäu Udo [edit=SirThornberry]Buchstabendreher im Titel korrigiert - Mfg, SirThornberry[/edit] |
Re: MeomryStream ausführen
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. |
Re: MeomryStream ausführen
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? |
Re: MeomryStream ausführen
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) |
Re: MeomryStream ausführen
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 |
Re: MeomryStream ausführen
bei luckie auf der HP gibt es da eine Datei namens "inmemexe.zip" worin ein Beispielprojekt enthalten ist.
|
Re: MeomryStream ausführen
Zitat:
Man kann diese Script auch verschlüsseln, damit der Sourcecode nicht direkt auslesbar ist. |
Re: MeomryStream ausführen
Zitat:
|
Re: MemoryStream ausführen
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz