Die eigene .exe Datei manipulieren

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Die eigene .exe Datei manipulieren

Beitrag von Winni »

Hi!

Dazu eine kleine Hilfe:

Nimm den Explorer und den Total Commander.
Und dann sieh Dir in beiden Laufwerk C:\ an.
Dann siehst Du, wie der Explorer eine Übersetzung vorlügt.
Im Explorer heisst es C:\Benutzer
Im Total Commander heisst es korrekt C:\users

Was lernen wir schon wieder:
Nie Microsoft vertrauen.

Winni

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Die eigene .exe Datei manipulieren

Beitrag von siro »

Genau: vertraue keinem Ordner den Du nicht selbst angelegt hast :lol:

Durch die Spielerei mit der Funktion GetAppConfigDir
habe ich doch glatt noch einen Fehler gefunden in meiner Software:
Die Funktion benötigt bei meinem Windows knapp 100 Millisekunden
und da kommen schon Meßwerte von meinem Gerät die verarbeitet werden sollten....
der Kurvenspeicher ist aber anscheinend noch garnicht aufgebaut/reserviert.
Das muss ich jetzt mal genauer untersuchen....

Also war die ganze Diskussion in jeder Hinsicht sehr wertvoll für mich.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Die eigene .exe Datei manipulieren

Beitrag von mschnell »

siro hat geschrieben:
Mi 31. Mär 2021, 15:16
Ehrlich gesagt kenne ich den Ordner garnicht,
Es gibt API calls, die den Ordner für Konfigurations-Dateien anzeigen.
Vor einigen Jahren habe ich mal eine INI-Komponente damit gemacht.
(In Windows) sind es übrigens drei Möglichkeiten, die man zur Konfiguration nutzen Kann:
- generelle für das Programm (bei der Installation vom Administrator zu verwalten)
- für alle User (von jedem User setzbar und lesbar)
- für den aktuellen User (nur von diesem setzbar und lesbar)
Kann man alles durchaus sinnvoll anwenden.
-Michael
Zuletzt geändert von mschnell am Di 6. Apr 2021, 10:50, insgesamt 1-mal geändert.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Die eigene .exe Datei manipulieren

Beitrag von PascalDragon »

mschnell hat geschrieben:
Do 1. Apr 2021, 11:21
- für den aktuellen User (nir von diesem setzbar und lesbar)
Gibt da dann auch noch drei Stufen:
  • Roaming
  • Local
  • LocalLow
Der Roaming Bereich wird im Falle eines Active Directory Nutzers mit auf dem Domain Controller gespeichert, Local und LocalLow nicht.
FPC Compiler Entwickler

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Die eigene .exe Datei manipulieren

Beitrag von mschnell »

Und bei Linux ? ...
-Michael

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Die eigene .exe Datei manipulieren

Beitrag von Socke »

mschnell hat geschrieben:
Do 1. Apr 2021, 16:15
Und bei Linux ? ...
$HOME/.config
Bzw. für Userübergreifende Konfiguration /etc. Die Free Pascal Funktionen nutzen hier nach Möglichkeit den FreeDesktop-Standard.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Die eigene .exe Datei manipulieren

Beitrag von aro »

Hallo,
das habe ich einmal erfolgreich geschafft.
Allerdings in Delphi unter Windows und das ist schon lange her.
Damals hatte ich nur unter WINDOWS gearbeitet und heute nur noch unter Linux.

Wenn ich mich richtig erinnere, hatte ich die Daten als Typisierte Konstanten abgelegt.
Die erste Konstante war eine eindeutige Zeichenkette. Dann folgte der Rest.

Die exe habe ich dann als normale Datei geöffnet und nach der eindeutigen Zeichenkette gesucht. Damit hatte ich den Anfang des Datenblocks.
Über die Adresse der Zeichenkette und die Adresse der zu ändernden Constante erhälst Du den Offset zum Anfang des Datenblocks. Auf der Adresse habe ich dann den Wert geschrieben und die Datei gespeichert.
Die Werte wurden dann nach dem Neustart ordentlich benutzt.

Ob das heute noch funktioniert kann ich nicht garantieren. Der Aufwand war mir zu hoch.

Heute verwende ich einen Record, in dem alle interessanten Werte in dem Format vorhanden sind, wie ich sie im Programm benötige. Beim Programmstart wird der Record einmal aus der INI eingelesen und ist sofort verwendbar. Die Bearbeitung wird im Programm erledigt und anschließend gespeichert. Da kann man alle Werte auf Plausibilität prüfen und kein Spielmatz kann einfach mal mit einem Editor irgendwelchen Unfug reinschreiben.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Die eigene .exe Datei manipulieren

Beitrag von Winni »

mschnell hat geschrieben:
Do 1. Apr 2021, 16:15
Und bei Linux ? ...
-Michael
Für systemweite Dateien: Und für per-User-Einstellungen:

Code: Alles auswählen

/home/[user]/.config
Man achte auf den Punkt!
Hier verewigt sich zB der Jedi Formatter.
Und die Konfigurations-Datei von LazPaint findet man auch.

Winni

Snify
Beiträge: 1
Registriert: Mi 28. Jul 2021, 13:13

Re: Die eigene .exe Datei manipulieren

Beitrag von Snify »

Falls es sich wirklich um eine .exe handelt, hab ich genau diese Idee schon gehabt und spaeter auch voll ausprogrammiert.
Das Verfahren an sich funktioniert, ist aber etwas tricky...
Ob ich das Projekt noch irgendwo hab muesste ich mal schauen...

Der Trick dabei ist, dass die .exe sich selbst nochmal aufruft (aber im Arbeitsspeicher).
Somit gibt Windows die Datei frei und ist somit wieder frei verfuegbar.
Anschliesend werden die gewuenschten Werte in die Ressourcen der Datei geschrieben bzw. beim Start auch wieder ausgelesen.

Verliert man aber die .exe - sind die Daten natuerlich auch weg...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Die eigene .exe Datei manipulieren

Beitrag von af0815 »

Snify hat geschrieben:
Mi 28. Jul 2021, 13:17
Das Verfahren an sich funktioniert, ist aber etwas tricky...
Dafür wird die exe gerne von AV-Scannern kassiert und das ganze geht auch nicht, wenn die Datei ordnungsgemäß unter Windows installiert wurde. Dann ist sie R/O.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten