| |
|
|
Jac de Lad | Hallochen,
ist es möglich in die EXE-Datei des gelinkten Compilats zu schreiben, während es ausgeführt wird?
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 16.12.2005 ▲ |
|
|
|
|
| |
|
| |
|
|
|
Frank Abbing | |
|
| |
|
|
|
Michael Wodrich | Klappt dann aber beim Kunden nur, wenn dieser selbst (X)Profan sein eigen nennt.
Ist trotzdem eine nette Sache. In diesem Zusammenhang vielleicht auch mittels Execute interessant für die einfachen Dinge.
Schöne Grüße Michael Wodrich
@Jac: Solche Bestrebungen gab es auch schon zu DOS-Zeiten. Am Einfachsten löste man dies dann mittels einer Stapeldatei. - Es wird ein Programm aufgerufen, das die zu startende EXE an einer bestimmten Stelle trennt: Vorderer Teil ist die EXE, hinterer Teil eine Datenbank (oder was auch immer). - Dann wird das eigentliche Programm aufgerufen (dieses versorgt dann die Datendatei) - Dann wird wieder das Extraprogramm aufgerufen, das beide Teile zusammenfügt.
Nach dem Erstellen der EXE muß also einmal das Extraprogramm ran und die Teile vernähen. Damit der Anwender den Braten nicht riecht erzeugt das Programm bei einem Aufruf ohne Parameter eine Meldung wie dieses PlugIn darf nur aus dem Hauptprogramm gestartet werden. |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 16.12.2005 ▲ |
|
|
|
|
| Mmh...
Bei PrivAktivate schreibe ich zwar in die eigene EXE - und sogar in den Quelltext (freischaltungsinfo) - aber nicht während sie ausgeführt wird... |
|
|
| |
|
|
|
Michael Wodrich | Eigentlich bieten sich mit XProfan ja viele Möglichkeiten an. Wie wäre es mit folgender: (ProgEnd / %ProgEnd / Run)
Wieder 2 Programe. Programm A ist der Starter. Seine Resource (einfach drankopiert) ist Programm B. Am Ende von Pgm B existiert eine drankopierte Resource mit vorgegebener Länge (oder Länge der Resource steht am Ende der Resourcendatei).
Pgm A ermittelt den Resourcenstart und die Länge (Dateilänge - %ProgEnd + 1). Dieser Teil minus Resourcenlänge von Pgm B ist die EXE von Pgm B. Die Resource von B wird als eigene Datei gespeichert.
Pgm B wird über Run aufgerufen.
Nachdem Pgm B fertig ist muß die Resource wieder an das Ende von Pgm A gespeichert (überschrieben werden). Danach wird Pgm A mit Run + Parameter aufgerufen um die Platte wieder aufzuräumen (EXE B und Daten).
So ganz Datensicher ist das allerdings nicht. Besser ist es, wenn die Möglichkeit der Resourcen-Änderung besteht. Dann können die Daten einfach mittels der Profan-eigenen Resourcenbefehle gelesen werden. Das Schreiben wäre dann wohl über API zu regeln (wenn diese Möglichkeit überhaupt existiert).
[box:3da9e7cd62]editiert: Vergeßt das mit dem Resourcen ändern über API (siehe hier): [...] Das würde nicht auf allen Systemen laufen... [/box:3da9e7cd62] |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 16.12.2005 ▲ |
|
|
|
|
| So in der Art habe ichs auch geregelt. Wie gesagt,, auch ein Ändern von Quelltext im fertigen Programm wäre so möglich... |
|
|
| |
|
|
|
Jac de Lad | Jaja, mit %Progend hab ichs auch gemacht. Ich will an mein Prog eigentlich nur ne Checksumme anhängen. Da mach ich mir jetzt eben ein Extra-Prog, dass das übernimmt.
@Michael: Wie siehts eigentlich mit MD5 aus? Bei mir hat dein Quelltext nicht funktioniert...
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 16.12.2005 ▲ |
|
|
|
|
Michael Wodrich | In der ZIP ist doch eine reine Assemblerversion. Daraus machst Du Dir eine DLL und fertig.
Aber ich werds mal an meine ToDo-Liste anhängen...
--- Hoppla, habe eine MD5_DLL.zip mit Profan-Wrapper entdeckt. Die habe ich am 01.11.2004 aus dem Internet heruntergeladen. Ist damit das Thema nicht schon lange erledigt?!? (Wer hat den Wrapper gebastelt, da steht leider kein Name dabei)
Schöne Grüße Michael Wodrich (dem die Schneeflöckchen langsam auf den Keks gehen). |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 16.12.2005 ▲ |
|
|
|
|
| Das Schreiben in die Exe eines sich ausführenden Programmes erlaubt WindowXP nicht - aber die Exe die sich selbst modifizieren will kann aus sich heraus sich selbst lesen.
Hiermit kann die Exe sich selbst kopieren - und die Kopie kann dann gepatcht werden. Anschließend ist nur noch die neue exe auszuführen, und die eigene Exe zu beenden.
Als Sahnehäubchen könnte die gepatchte Exe erkennen, daß sie am falschen Ort liegt - und sich an die selbe stelle kopieren wo die alte exe liegt einschliesslich das die dann wiederum am richtigen Ort gestartete exe auch noch die gepatchte löscht.
Lol. |
|
|
| |
|
|
|
| ...gepatchte EXE mit Parameter starten - so erkennt die gepatchte EXE, daß sie gepatched ist, löscht die alte EXE und kopiert sich dann auf den Platz der alten EXE. Danach erfolgt ein Neustart dieser kopierten EXE mit einem anderen Parameter. Daraus erkennt die kopierte gepatchte EXE, daß die gepatchte EXE noch gelöscht werden muß und löscht diese. Zwischen den ganzen Aktionen des kopierens und löschen muß Windows etwas Zeit zum Verschnaufen gegeben werden (Sleep). Wie viel Zeit da gegeben werden muß, hängt stark vom jeweiligen Rechner ab - ist also eine Sache, die auf unterschiedlichen Rechnern ganz gewaltig in die Hose gehen kann... |
|
|
| |
|
|
|
Jac de Lad | Oje, ich lass es lieber...
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 18.12.2005 ▲ |
|
|
|