![]() |
Konfigurations - Parameter in Exe-Datei ablegen
Guten Abend zusammen, habe mal eine Frage an euch spezialisten:
Viele von euch kennen bestimmt noch das Tool BackOrifice 2000, welches ein Trojaner war und vor 5 Jahren die Runde gemacht hat. Ich muss gestehe, ich fand es damals auch interessant und nun kam mir gerade wieder einen Funktion in den Kopf, die ich von diesem Programm her kannte. Man hatte damals einen Server, nennen wir die Datei serv.exe und einen Konfigurator conf.exe. Wollte man den server konfigurieren, öffnete man den Konfigurator und teilte dem Servver Dinge (wie z.b. seinen Port) mit. Das tolle an der Sache, was mich auch letzendlich interessiert ist, dass der Konfigurator die exe selbst bearbeitet hat. Er hat also nicht ein INI-File bearbeitet, welches Parameter wie port=4444 enthielt, sondern hat direkt die exe - bearbeitet, so, dass man nur die exe-datei brauchte und keinen weiteren Code. Weiß jemand wie sowas zu realisieren ist?, möglichst in delphi (es geht mir dabei lediglich um das parameterschreiben in die exe, nicht um die weitere funktionserkläreung von backorifice) Wäre sehr nett, wenn jemand ein Codebeispiel hätte. Vielen Dank schonmal |
Re: Konfigurations - Parameter in Exe-Datei ablegen
möglichkeit 1)
Daten an Server anhängen, server leißt die vom Dateiende aus (zb. Record, also immer fixe größe) - das funkt leicht, du öffnest im server den server zum lesen und gehst am dateiende - sizeof(Record) - dannach einfach im record füllen .. möglichkeit 2) Daten in der Resource des Servers speichern, also einfach UpdateResource um die einstellungen zu updaten möglichkeit 3) Daten (strings) irgendwo speichern, als consts, und das dann updaten, also nach offsets suchen und den bearbeiten, jedoch muss da genug platz vorhanden sein, zb.
Delphi-Quellcode:
Edit:
const
sTest = '123456789012345678901234567890'; // 30 Strings Code beispiel zu möglichkeit 1) "server":
Delphi-Quellcode:
Editor:
type
TSettings = record TestString1: String[20]; TestString2: String[15]; TestInteger1: Integer; end; var Settings: TSettings; procedure LoadSettings(); var hFile: THandle; BytesRead: Cardinal; begin hFile:= FileOpen(ParamStr(0), fmOpenRead); try SetFilePointer(hFile, GetFileSize(hFile, nil) - sizeof(TSettings), nil, FILE_BEGIN); ReadFile(hFile, Settings, sizeof(Settings), BytesRead, nil); finally CloseHandle(hFile); end; end; begin LoadSettings(); WriteLn('TestString1: ' + Settings.TestString1); WriteLn('TestString2: ' + Settings.TestString2), WriteLn('TestInteger1: ' + IntToStr(Settings.TestInteger1)); end.
Delphi-Quellcode:
type
TSettings = record TestString1: String[20]; TestString2: String[15]; TestInteger1: Integer; end; var Settings: TSettings; procedure WriteSettings(); var fsFile: TFileStream; begin Settings.TestString1 := 'Teeeesttt'; Settings.TestString2 := 'Tessssttt'; Settings.TestInteger1 := 1234; fsFile := TFileStream.Create('application.exe', fmOpenWrite); try fsFile.Position := fsFile.Size; fsFile.WriteBuffer(Settings, sizeof(Settings)); finally fsFile.Free; end; end; begin WriteSettings(); end. |
Re: Konfigurations - Parameter in Exe-Datei ablegen
Hier gibts auch noch nen Code Beispiel zu Möglichkeit 1)
![]() Aber prinzipiell würde davon abraten diese Taktik zu verwenden, denk an die vielen Virenscanner und Firewall die die Änderung der Exe anzeigen und den User bestimmt verunsichern werden. |
Re: Konfigurations - Parameter in Exe-Datei ablegen
Zitat:
|
Re: Konfigurations - Parameter in Exe-Datei ablegen
Zitat:
|
Re: Konfigurations - Parameter in Exe-Datei ablegen
wow ihr habts ja echt drauf
kann mir jemand die methode mit der resorcen- datei noch mal näher erklären ? |
Re: Konfigurations - Parameter in Exe-Datei ablegen
Zitat:
Ein allgemeiner Weg wird hier beschrieben: (funktioniert auch, wenn das Programm nachträglich komprimiert wird) ![]() |
Re: Konfigurations - Parameter in Exe-Datei ablegen
Zitat:
![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 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