Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Compiliertes Programm ändern & speichern (https://www.delphipraxis.net/99856-compiliertes-programm-aendern-speichern.html)

Puddy 18. Sep 2007 18:33


Compiliertes Programm ändern & speichern
 
Ich habe ein Downloadprogramm für einen Freund geschrieben, das ein Spiel herunterläd. Jetzt hat er mich gefragt, ob ich das Programm
auch für andere Spiele anpassen würde. Er hat mir dann gesagt, dass er um die hundert Spiele hat, für die er (für jedes extra) einen
Downloader möchte. Geändert muss in dem Downloader folgendes werden: ein Informationsbild, zwei Label (Link & Dateiname).

Währe es da möglich, ein Programm zu schreiben, dass diese 3 Objekte ändert und die Exe dann wieder speichert? Oder gibt es eine
andere Möglichkeit?

Nikolas 18. Sep 2007 18:34

Re: Compiliertes Programm ändern & speichern
 
Warum nimmst du nicht eine Textdatei, aus der das Programm die Infos liest?

quendolineDD 18. Sep 2007 18:39

Re: Compiliertes Programm ändern & speichern
 
Da er die Veränderung einer *.exe haben möchte, würde ich meinen, er ist nicht mehr im Besitz der Projekt-Dateien?!
In dem Fall würde mir nur disassembling einfallen.
Andernfalls kannst du doch das ganze Variabel gestalten.
Zumal, warum müssen denn Labels geändert werden, um den Downloadpfad o.ä. zu ändern?

Puddy 18. Sep 2007 18:49

Re: Compiliertes Programm ändern & speichern
 
Die Source hab ich natürlich noch. Es geht darum, dass mein Freund sich den Downloader selber abändern und verwenden kann. (er hat
aber kein Delphi) Die Label sind nur zur Information des Benutzers da. Die URL hab ich in einer Variable angegeben.

dominikkv 18. Sep 2007 18:53

Re: Compiliertes Programm ändern & speichern
 
na dann erstelle doch eine textdatei mit dem pfad zum bild und dem dateinamen und was du noch so alles da drinn haben willst und schau beim programmstart was da drinn steht und das zeigst du dann an.
dann braucht dein freund einfach nur die textdatei verändern.

SirThornberry 18. Sep 2007 18:54

Re: Compiliertes Programm ändern & speichern
 
spricht irgend etwas gegen die Variante die Dinge in eine Textdatei oder eine externe Datei auszulagern? Denn das wäre die einfachste Variante. Natürlich kannst du dein Programm auch so schreiben das du bestimmte Stellen später einfach patchen kannst.

Puddy 19. Sep 2007 15:08

Re: Compiliertes Programm ändern & speichern
 
Die Methode mit der .txt ist an und für sich nicht schlecht, aber er möchte den Downloader ja weitergeben, und ich will nicht, dass
jeder einfach nur die .txt ändern kann um dann das Programm als seines zu verkaufen.

Ich spiele mittlerweile mit der Idee, dass ich die Namen der Dateien gleich bestimme. (Also das jedes Informationsbild z.B. info.jpg
heisst) Dann müsste ich für jedes Programm "nur" die Dateien überschreiben und dann compilieren. Aber bei um die 100 Stück ist das
auch ziemlich Arbeitsaufwendig.

[edit] Da fällt mir ein, dass ich ja aus den sich ändernden Teilen eine Ressource erstellen könnte, dann wäre das ganze noch
einfacher. Aber im Endeffekt wäre es trotzdem viel Arbeit. Kann man das aufrufen und Kompilieren nicht irgendwie automatisieren?

RavenIV 19. Sep 2007 15:31

Re: Compiliertes Programm ändern & speichern
 
Mach Dir doch eine Definitions-Unit, in der Du die "veränderbaren" Texte und Bilder als Konstanten ablegst.

Weiterhin erstellst Du eine Batch-Datei, die:
- die Konstanten in der Definitions-Unit anpasst
- den dcc (Delphi-Comandline-Compiler) mit passenden Parametern aufruft

Und für jedes Projekt machst Du dann eine eigene Batch und fertig.

Puddy 19. Sep 2007 16:18

Re: Compiliertes Programm ändern & speichern
 
Gute Idee. Ich werds ausprobieren.

Danke schon mal für die Antworten ;)

SirThornberry 19. Sep 2007 16:34

Re: Compiliertes Programm ändern & speichern
 
wenn du es doch mit patchen machen willst dann musst du in der Exe eben Speicher dafür vorsehen. Zum Beispiel durch eine Globale Variable etc.
Delphi-Quellcode:
var
  Marker01: Integer=$ABABAB;
  Marker02: Integer=$CCAABB;
  Platz_Fuer_Bild: array[0..64000-1] of char;
wenn du das compilierst (und dafür sorgst das die variablen nicht weg optimiert werden) dann stehen die auch so in deiner Exe drin. Das heißt du durchsuchst später die fertige Exe nach $ABABAB$CCAABB und die 64000 Byte dahinter sind der Platz wo du dein Bild rein speichern kannst (also die Daten überschreiben kannst)

WordsBG 19. Sep 2007 16:36

Re: Compiliertes Programm ändern & speichern
 
Mit dem "Resource Editor" kann man die VCL-Komponenten einer kompilierten Exe verwändern, also captions, texte, position etc. schau dir das mal an, dürfte genau das sein was du willst.

Khabarakh 19. Sep 2007 17:10

Re: Compiliertes Programm ändern & speichern
 
Zitat:

Zitat von Puddy
Die Methode mit der .txt ist an und für sich nicht schlecht, aber er möchte den Downloader ja weitergeben, und ich will nicht, dass
jeder einfach nur die .txt ändern kann um dann das Programm als seines zu verkaufen.

Dann lege die Textdatei eben verschlüsselt ab :stupid: . Sollte für Scriptkiddies schwerer zu knacken sein als unverschlüsselte Daten innerhalb einer Exe und ist gleichzeitig für dich sicher leichter zu programmieren.

wicht 19. Sep 2007 18:44

Re: Compiliertes Programm ändern & speichern
 
Also, ich würde die Daten mit einem kleinen extra-Programm von hinten an die Exe schreiben. Das bedeutet, Du schreibst mit Streams den Inhalt der ersten angehängen Datei/Bild/String/... hinten an die Exe dran, und dann die Länge der Daten. So machst Du immer weiter und der Downloader kann dann aus sich selber die Daten lesen, wenn er von hinten anfängt zu lesen. So habe ich ein ähnliches Problem mal gelöst, mit dem kleinen Zusatzprogramm sollte es dann für jemand anders auch einfach sein, die Exe des Downloaders anzupassen...

Hador 19. Sep 2007 19:25

Re: Compiliertes Programm ändern & speichern
 
Zitat:

Zitat von Khabarakh
Dann lege die Textdatei eben verschlüsselt ab :stupid: . Sollte für Scriptkiddies schwerer zu knacken sein als unverschlüsselte Daten innerhalb einer Exe und ist gleichzeitig für dich sicher leichter zu programmieren.

So optimal ist es aber auch nicht, wenn er beim weitergeben immer eine Textdatei dabei hat.
Ich würde die Texte und Bilder die geändert werden sollen einfach als Ressourcen an die Exe anhängen und von dort auslesen. Dann ist es an sich auch kein Problem die Sachen in einem Res.-Editor zu ändern. Das kann dann auch dein Freund tun.
Die fiesen Skript-Kiddies :mrgreen: werden damit aber vermutlich nicht so leicht klar kommen.

Rastaman 19. Sep 2007 21:04

Re: Compiliertes Programm ändern & speichern
 
BeginUpdateResource
UpdateResource
EndUpdateResource
FindResource
LoadResource
...

Puddy 20. Sep 2007 15:51

Re: Compiliertes Programm ändern & speichern
 
Danke für die Hinweiße. Kann ich wirklich gut gebrauchen ;)

Ich probier mal die ganzen Methoden aus^^


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