Autor Beitrag
Xiut
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Di 01.06.10 21:52 
Hallo zusammen!!

Ich hab folgendes Problem:

Ich suche eine Metode, um z.B. eine Variable meines Programmes nachträglich zu ändern.
Einen Editor würde ich dafür dann gerne schreiben. Das heiß ich möchte ein Programm schreiben, das die
"Rohe" Exedatei auspackt und dort eine Variable ändert.

Wie kann ich das realisieren?

Achja... Ich möchte umbedingt das man dann nur eine .exe Datei ohne externe Datei hat.

Xiut =)
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 01.06.10 21:54 
Hi :)

Das ist mal wieder einer dieser Fälle: Setz' dich, erzähl uns mehr. :) Das klingt, als wenn es ziemlich sicher eine bessere Lösung für dein Problem geben würde.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Xiut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Di 01.06.10 21:58 
Also ich möchte eine URL die ich als z.B. Konstante in der EXE habe ändern.

Das ist dann z.B. die URL die ich mit dem Browser der im Programm ist aufrufe.

Mehr soll es auch nicht sein deswegen kann ich auch nicht mehr erzählen ^^

Ah doch... Man soll auf jeden Fall nur eine Datei haben, da das mit ZIP Dateien und co. zu
aufwändig für das kleine Programm ist. Zusätzlich soll das Programm immer wieder angepasst werden
und das auch ohne den Sourcecode und Delphi.


Zuletzt bearbeitet von Xiut am Di 01.06.10 23:23, insgesamt 1-mal bearbeitet
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 01.06.10 22:10 
Hi :)

Theoretisch gibt es die Möglichkeit, hinten an eine Datei noch beliebige Daten anzuhängen. Wie das geht, weiß ich aber nicht; auch habe ich Zweifel, ob du die eigene, gerade ausgeführte Exe überhaupt bearbeiten kannst.

Ich erwähne aber noch einmal den Standardweg: Eine Config-Datei im selben Ordner wie die Exe für eine portable Version, oder eine Config-Datei im AppFiles-Ordner für eine fest installierte Exe.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Xiut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Di 01.06.10 22:17 
Ja aber eine Config Datei möchte ich ja eher nicht.
Das Programm soll jeder so ändern können das seine Webseite geöffnet wird und
das die nur eine Exe weiter geben müssen.

Finde das mit ZIP Dateien und änliches nicht soooo toll und würde das halt gerne so machen.
Da eine extra Datei nur um eine URL zu ändern auch nicht so angemessen ist wie ich finde ^^
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 01.06.10 23:14 
Moin!

user profile iconXiut hat folgendes geschrieben Zum zitierten Posting springen:
Das Programm soll jeder so ändern können das seine Webseite geöffnet wird und das die nur eine Exe weiter geben müssen.
In diesem Fall ist eine ausführbare Datei doch gar nicht notwendig (ich selbst würde so einem Programm wg. Ähnlichkeit mit Malware sowieso nicht trauen, nur um eine URL aufzurufen? :|).

Klick mal auf das Seitensymbol in der Browser-Adress-Zeile und zieh das auf den Desktop, dann hast du eine Verknüpfung zu der aktuellen Webseite. Die kannst du einfach weitergeben oder ändern und dafür braucht man auch kein Programm, die wird dann per Doppelklick einfach mit dem Standard-Browser geöffnet. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Xiut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Di 01.06.10 23:17 
Nein von den Grundfunktionen ist das etwas mehr, aber auch nicht viel mehr.
Vielleicht ein zwei Funktionen, wie bestimmte Sachen auslesen und sowas halt.

Es soll die URL des Benutzers im Browser in dem Programm geöffnet werden.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 01.06.10 23:30 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Theoretisch gibt es die Möglichkeit, hinten an eine Datei noch beliebige Daten anzuhängen. Wie das geht, weiß ich aber nicht; auch habe ich Zweifel, ob du die eigene, gerade ausgeführte Exe überhaupt bearbeiten kannst.
Wie wäre es mit meiner fertigen Lösung dafür? ;-)
www.delphi-forum.de/viewtopic.php?t=89659
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 01.06.10 23:40 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es mit meiner fertigen Lösung dafür? ;-)
Daran dachte ich 8)

Das gibt jetzt aber die falsche Motivation: Ich halte das für keine zielführende Lösung, Windows sieht so etwas einfach nicht vor, und ich halte es für viel mehr Aufwand(false-Positives durch Virenscanner vermeiden, etc, etc) als, einfach den Weg über zwei Dateien zu gehen.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mi 02.06.10 07:16 
Wie wäre es denn, die URL als Parameter an die Exe zu übergeben (entweder über die Verknüpfung oder sonstwie beim start der Exe).
Die Lösung von Jaenicke ist meiner Meinung nach ein schönes Beispielprogramm, das zeigt, was man machen kann, aber in der Praxis würde ich das nicht einsetzen wollen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 02.06.10 09:01 
Für ein installiertes Programm ist meine Lösung natürlich nicht gedacht.

Für eine einmalige Vorkonfiguration eines Programms zur Weitergabe oder für eine portable Lösung z.B. für einen Stick finde ich diese Vorgehensweise aber durchaus passend. Denn in diesen Fällen kann man die Exe verändern, weil es keine Rechteprobleme gibt und man braucht dann keine externen Dateien.

Dass der Virenscanner anschlagen kann, stimmt zwar, das ist bei mir aber bisher nicht passiert. Außerdem ist das ohnehin nur für kleine Tools sinnvoll, und da ist das meistens auch nicht so wichtig, wenn dann einzelne Scanner anschlagen.
Xiut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Mi 02.06.10 18:43 
Möchte halt wirklich nur EINE Variable ändern. Ich finde eine extra Datei ist dafür viel zu aufwendig um nur einen kleinen String zu übermiteln.

Ich schau mir das ein da mal an. Gibt es sonst vielleicht eine "sauberere" Lösungen?
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mi 02.06.10 18:49 
Hi :)

Der Vollständigkeit halber: Einzelne Strings werden von Programmen auch häufig in die Registry geschrieben. Das fällt bei dir aber weg, da dein Programm ja portabel sein soll.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Xiut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Mi 02.06.10 22:50 
Ändert sich die Adresse eines Strings immer wieder in einem Programm?
Und wenn nicht, kann ich denn dann nicht mit der Adresse den String finden und ihn da ändern?
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 02.06.10 23:55 
Und was machst du, wenn der neue String länger ist, als der alte? Einfach den nachfolgenden Speicher überschreiben?

_________________
PROGRAMMER: A device for converting coffee into software.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 03.06.10 00:10 
user profile iconXiut hat folgendes geschrieben Zum zitierten Posting springen:
Ich schau mir das ein da mal an. Gibt es sonst vielleicht eine "sauberere" Lösungen?
Wie du die Exe veränderst ist doch egal, es geht bei der Diskussion ob die Lösung sauber / gut ist ja darum, dass du die Exe veränderst. Nicht wie und wo.

Und wenn du sie verändern willst, dann ist meine Lösung die einfachste und sinnvollste Variante.
Xiut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Do 03.06.10 00:16 
Ja ich hab ja nur gefragt ob es noch eine saubere Lösung gibt.
Man muss doch nicht gleich die erst beste Variante nehmen...

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---


user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
Und was machst du, wenn der neue String länger ist, als der alte? Einfach den nachfolgenden Speicher überschreiben?


Kann ich denn einen kleineren String dann dort rein schreiben?

Sonst muss ich halt einen String als Dummi rein schreiben der um die 50 Zeichen lang ist. Ich denke mal keine Domain hat mehr Zeichen^^
Wenn ich dann nicht weniger rein schreiben kann, fülle ich halt die restlichen Zeichen mit ### oder änlichem. Dann im Programm kann ich
ja dann abfragen wie der String aufgebaut ist und ihn dann verändern wie ich will.

Oder geht das nicht?
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Do 03.06.10 00:17 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und wenn du sie verändern willst, dann ist meine Lösung die einfachste und sinnvollste Variante.
Ack. Reinschreiben in ausgeführten Code = -100 < -10 = Reinschreiben in nicht ausgeführte Abschnitte, die lediglich gelesen werden können.

Nicht protable Versionen musst du dann in jedem Fall getrennt behandeln(Registry-Eintrag!), da du dort in keinem Fall Schreibrechte auf deine Exe voraussetzen kannst.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Xiut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Fr 04.06.10 17:35 
Und könnte ich denn eine Resource nach dem Compelieren "einlesen"?

Das ich dann mein Programm per Parameter eine "Config" Datei einlesen lasse. Würde das gehen?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 04.06.10 17:42 
user profile iconXiut hat folgendes geschrieben Zum zitierten Posting springen:
Und könnte ich denn eine Resource nach dem Compelieren "einlesen"?
Wie meinst du das? Hast du dir das Beispiel denn überhaupt angeschaut? :gruebel:

user profile iconXiut hat folgendes geschrieben Zum zitierten Posting springen:
Das ich dann mein Programm per Parameter eine "Config" Datei einlesen lasse. Würde das gehen?
Wofür ein Parameter, du brauchst doch nur beim Start schauen ob eine Konfigurationsdatei im selben Verzeichnis existiert und wenn ja diese benutzen.