![]() |
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 :?: :?: |
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? |
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.
|
Re: Servergenerator
Zitat:
|
Re: Servergenerator
Zitat:
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. |
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. |
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... |
Re: Servergenerator
Zitat:
Mein Tipp: Speicher den Port als RessourceString und "manipuliere" diesen dann per "Resource update". Einfach mal im Forum nach ![]() ![]() gruss |
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!!
|
Re: Servergenerator
Ich glaub das ist wie mit
Delphi-Quellcode:
einfach so
const
Delphi-Quellcode:
GLAUBE ICH !!!
resourcestring
string1 = 'HALLO'; |
Re: Servergenerator
THX und wie kann ich des jetzt mit einem anderen Programm auslesen bzw. ändern???
|
Re: Servergenerator
Oder: Programmname: Server_5000.exe -> Port = 5000
also liest das Programm den Port aus dem Dateinamen aus. Wie wäre es damit? |
Re: Servergenerator
er hat doch geschrieben, wie er es will
@topic: ich weiß nicht wie das geht |
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 :) |
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???
|
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. |
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:
UNGETESTET!!
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; 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:
UNGETESTET!!
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; Fertig :) Hoffe man kanns nachvollziehen. //EDIT: Roter Kasten is da....Hab mit so viel Mühe gegeben ... Ich schreibs trotzdem mal :mrgreen: |
Re: Servergenerator
THX für die Hilfe, funktioniert einwandfrei!!!! :thumb:
|
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? |
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