Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konfigurations - Parameter in Exe-Datei ablegen (https://www.delphipraxis.net/57597-konfigurations-parameter-exe-datei-ablegen.html)

meisteralex 23. Nov 2005 21:06


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

ErazerZ 23. Nov 2005 21:14

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:
const
  sTest = '123456789012345678901234567890'; // 30 Strings
Edit:
Code beispiel zu möglichkeit 1)
"server":
Delphi-Quellcode:
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.
Editor:
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.

raffo 23. Nov 2005 21:22

Re: Konfigurations - Parameter in Exe-Datei ablegen
 
Hier gibts auch noch nen Code Beispiel zu Möglichkeit 1)
http://www.dsdt.info/tipps/?id=645

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.

supermuckl 23. Nov 2005 21:24

Re: Konfigurations - Parameter in Exe-Datei ablegen
 
Zitat:

// 30 Strings
30 chars!

ErazerZ 23. Nov 2005 21:25

Re: Konfigurations - Parameter in Exe-Datei ablegen
 
Zitat:

Zitat von supermuckl
Zitat:

// 30 Strings
30 chars!

:oops:

meisteralex 24. Nov 2005 12:38

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 ?

NicoDE 24. Nov 2005 12:52

Re: Konfigurations - Parameter in Exe-Datei ablegen
 
Zitat:

Zitat von raffo
Hier gibts auch noch nen Code Beispiel zu Möglichkeit 1)
http://www.dsdt.info/tipps/?id=645

Ist ziemlich unpraktisch, da die Größe der Exe im Quellcode steht (beißt sich die Katze in den Schwanz).

Ein allgemeiner Weg wird hier beschrieben:
(funktioniert auch, wenn das Programm nachträglich komprimiert wird)
http://www.delphipraxis.net/internal...=387636#387636

ErazerZ 24. Nov 2005 14:01

Re: Konfigurations - Parameter in Exe-Datei ablegen
 
Zitat:

Zitat von meisteralex
wow ihr habts ja echt drauf
kann mir jemand die methode mit der resorcen- datei noch mal näher erklären ?

ja, hier ist ein beispiel von Aphex,
Link
Zitat:

No fixed offsets
No maxium length for settings
No overlay/EOF data
No special requirements for packing


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 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