Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Servergenerator (https://www.delphipraxis.net/54662-servergenerator.html)

storm1988 9. Okt 2005 11:39


Servergenerator
 
Hi

Ich hab in Delphi einen Server gecodet bei dem ich den Port von der exe beliebig verändern will. Jetzt wollt ich frage ob es möglich ist, einen Art Generator zu coden mit dem ich die exe mit dem gewünschten Port erstellen kann :?: :?:

GuenterS 9. Okt 2005 12:30

Re: Servergenerator
 
Warum willst Du unbedingt eine exe Datei erstellen?

Wäre es nicht zweckmäßiger den Port und die anderen Einstellungssachen in eine Konfigurationsdatei wie IniFile oder Registry zu speichern und von dort zu lesen?

ripper8472 9. Okt 2005 12:41

Re: Servergenerator
 
spontan sehe ich hier parallelen zu trojanerservern... die haengen ihre daten auch an die exen an oder schreiben sie direkt in die exe hinein.

Tubos 9. Okt 2005 12:43

Re: Servergenerator
 
Zitat:

Wäre es nicht zweckmäßiger den Port und die anderen Einstellungssachen in eine Konfigurationsdatei wie IniFile oder Registry zu speichern und von dort zu lesen?
Alles in einer EXE zu haben kann sehr komfortabel sein.

GuenterS 9. Okt 2005 12:51

Re: Servergenerator
 
Zitat:

Zitat von Tubos
Zitat:

Wäre es nicht zweckmäßiger den Port und die anderen Einstellungssachen in eine Konfigurationsdatei wie IniFile oder Registry zu speichern und von dort zu lesen?
Alles in einer EXE zu haben kann sehr komfortabel sein.

Kann ist nur meist nicht so.

Stelle mir da ein Mehrbenutzersystem vor, im Programmverzeichnis keine Schreibrechte dafür nur im HomeDir des Benutzers. Zusätzlich dürfen im HomeDirs des Benutzers keine Programme ausgeführt werden.

Was machst Du dann mit einer Software die seine Konfigurationsdaten in der Exe speichern will? Durch eine andere die dies nicht tut ersetzen.

storm1988 9. Okt 2005 13:08

Re: Servergenerator
 
Danke mal für die Antworten!

Ich will sicher keinen trojaner oder irgend so was in der Art programmieren...
Mich hätte nur grundsätzlich interesiert ob sowas überhaupt möglich ist zu coden und wie Tubos schon gesagt hat würde ich es auch sehr komfortabel finden.

Phoenix 9. Okt 2005 13:46

Re: Servergenerator
 
Ja, klar geht dies.

Schreibe ein kleines Programm, welches den Quellcode verändert (die Portnummer setzt), und dann den Delphi-Compiler direkt aufruft. Ist doch supereasy sowas...

MrKnogge 9. Okt 2005 14:31

Re: Servergenerator
 
Zitat:

Zitat von Phoenix
Ja, klar geht dies.

Schreibe ein kleines Programm, welches den Quellcode verändert (die Portnummer setzt), und dann den Delphi-Compiler direkt aufruft. Ist doch supereasy sowas...

Was aber voraussetzt, dass der Endbenutzer Delphi auf dem Rechner installiert hat.

Mein Tipp:

Speicher den Port als RessourceString und "manipuliere" diesen dann per "Resource update".
Einfach mal im Forum nach Hier im Forum suchenResource Update oder Hier im Forum suchenResourceupdate suchen.

gruss

storm1988 9. Okt 2005 15:19

Re: Servergenerator
 
Erstmal Thx für die Hilfe :thumb:, doch könntest du mir ein Beispiel zeigen wie ich einen ResourceString erstelle und wie ich diesen dann ändere, denn irgend wie find i nix gescheites!!

Rastaman 9. Okt 2005 15:24

Re: Servergenerator
 
Ich glaub das ist wie mit

Delphi-Quellcode:
const
einfach so

Delphi-Quellcode:
resourcestring
  string1 = 'HALLO';
GLAUBE ICH !!!

storm1988 9. Okt 2005 15:43

Re: Servergenerator
 
THX und wie kann ich des jetzt mit einem anderen Programm auslesen bzw. ändern???

ManuMF 9. Okt 2005 15:45

Re: Servergenerator
 
Oder: Programmname: Server_5000.exe -> Port = 5000
also liest das Programm den Port aus dem Dateinamen aus.
Wie wäre es damit?

vlees91 9. Okt 2005 15:54

Re: Servergenerator
 
er hat doch geschrieben, wie er es will
@topic: ich weiß nicht wie das geht

Rastaman 9. Okt 2005 16:26

Re: Servergenerator
 
Du kannst nach dem Compilieren deiner exe mit einem anderen selbst geschriebenen Programm den Port als String an die exe anhängen, also so, dass er, wenn du die exe mit dem Notepad öffnest, als letztes im Binärdurcheinander steht. Die exe stört das nicht, die läuft wie vorher.
Jetzt könntest du es so machen, dass dein Programm sich selbst kopiert, aus dieser Kopie den Port wieder ausliest und die Kopie letztendlich wieder löscht.
Hoffe das war verständlich :)

storm1988 9. Okt 2005 17:01

Re: Servergenerator
 
Des kommt mir aber auch reichlich kompliziert vor. Würde es nicht einfach gehen, dass ich den Speicherort wo der Port in der exe gespeichert ist raus finde (resourcestring) und ihn dann vor dem start mit einem selbst programmierten Programm ändere???

Ratte 9. Okt 2005 17:09

Re: Servergenerator
 
Das mit dem einfach hinten dranhängen ist doch noch einfacher. Du müsstest doch nur dein Proggy in einen Stream lesen und die letzten 6/7/wasauchimmer Zeichen in nen String lesen und den mit StrtoInt behandeln.

Ratte

EDIT: habs eben probiert, geht wirklich.

Rastaman 9. Okt 2005 17:17

Re: Servergenerator
 
Könnte man machen, kommt ja fast auf das Selbe raus.
Aber meine Alternative ist nicht grade kompliziert :)
Hier mal ein Beispiel:
Du hast deinen fertig compilierten Server (Server.exe).
So, jetz machst du dir folgendes Prog...
Delphi-Quellcode:
var
  F: File;
  Port: String[5];
begin
  Port := '159'; //Port auf 159 setzen, der String "Port" bleibt trotzdem 5 Zeichen lang!!
  AssignFile(F, 'Server.exe');
  Reset(F, 1);
  Seek(F, FileSize(F)); //Ganz an das Ende der Datei gehen
  BlockWrite(F, Port, SizeOf(Port)); //Port schreiben
  CloseFile(F); //Datei schließen
end;
UNGETESTET!!
Jetzt Server.exe mit Notepad öffnen.
Ganz hinten müsste jetzt der Port 159 stehen, mit 2 Leerzeichen dahinter, da der String Port ja in jedem Fall 5 Zeichen lang sein soll (Macht das Ganze viel einfacher).
So, Server.exe kann beim Start jetzt Folgendes tun...

Delphi-Quellcode:
var
  F: File;
  Port: String[5];
begin
  CopyFile('Server.exe', 'Server_temp.exe', False); //Kopie erstellen
  AssignFile(F, 'Server_temp.exe');
  Reset(F, 1);
  Seek(F, FileSize(F) - 5); //Dateizeiger an den Anfang des Portstrings, der ja immer 5 lang ist
  BlockRead(F, Port, SizeOf(Port)); //Port aus Datei in den String "Port" schreiben
  CloseFile(F); //Datei schließen
  DeleteFile('Server_temp.exe'); //Datei löschen
end;
UNGETESTET!!
Fertig :)
Hoffe man kanns nachvollziehen.

//EDIT: Roter Kasten is da....Hab mit so viel Mühe gegeben ... Ich schreibs trotzdem mal :mrgreen:

storm1988 9. Okt 2005 18:24

Re: Servergenerator
 
THX für die Hilfe, funktioniert einwandfrei!!!! :thumb:

Eichhoernchen 9. Okt 2005 19:00

Re: Servergenerator
 
BlockRead und BlockWrite, wo ist da der unterschied zu Read und Write??

Rausgefunden hab ich das Block* das binär liest oder schreibt, aber warum muss man das machen?

Rastaman 9. Okt 2005 19:16

Re: Servergenerator
 
Daraus lässt sich schließen, dass du kein Englisch kannst :mrgreen:
Read = Lesen
Write = Schreiben

BlockRead liest Dateien binär und BlockWrite schreibt sie binär...


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