[Problemstellung] EXE-Dateien verschmelzen

Hallo,

Ich habe vor dass ich mir einen Aktivierungs-Manager programmiere und habe folgende Problemstellung:

3 Dateien:
-Originale Anwendung ohne Aktivierungs-Manager (z.B. Taschenrechner.exe)
-Aktivierungs-Programm, welches überprüft ob die Lizenz gültig ist (z.B. Activate.exe)
-Der "Verschmelzer"; dieses Programm soll die das Aktivierungs-Programm vor der Anwendung anhängen

Diese erstellte Datei soll dann zuerst den Aktivierungs-Teil aufrufen, falls dieses Programm ein OK zurückgibt, soll der 2. Teil (Anwendung) aufgerufen werden (ohne, dass der 2. Teil temporär gespeichert wird, da sonst die original-Anwendung entnommen werden kann)

Erst nachdem ich dieses Problem gelöst habe, möcht ich den 2. Teil noch verschlüsseln, da es mit einer Splittersoftware sicher möglich ist die 2 Programme zu trennen.

Hat jemand eine Idee ob bzw. wie das gehen könnte. Vieleicht weis jemand einen Ansatz dafür.


Programmiersprache: C#
Ähnliches Problem: Thread

mfg Thomas
 
Hmm. Vielleicht schreibst du 3 Programme:
1. Taschenrechner.exe
2. Activation.exe
3. Setup.exe

Die Setup.exe hat dann Programm 1+2 als Ressourcen gespeichert (evtl auch verschlüsselt) und extrahiert erst Prog Nr 1 und falls das Rückgabewert 1 zurückgibt, extrahiert und installierts dann Prog 2.
 
mhm, würde sicher funktionieren, nur das 3. Prog (der Verschmelzer) erfüllt dann nicht ganz seine Aufgabe. Es soll irgendein Programm mit dem Aktivierungs-Manager verschmelzen ohne, dass irgenjemand an die Original Datei herankommt. Also das 3. Prog soll nur ein Tool werden, dass beliebige Programme vor Raubkopierern schützt.

Der Endbenutzer öffnet anstatt der Original-EXE die gepatchte EXE-Datei.


mfg
 
Original von THumer
.. ohne, dass irgenjemand an die Original Datei herankommt. Also das 3. Prog soll nur ein Tool werden, dass beliebige Programme vor Raubkopierern schützt.

Der Endbenutzer öffnet anstatt der Original-EXE die gepatchte EXE-Datei.


mfg

Nicht möglich: Wenn es ausgeführt werden kann, dann kann auch jemand den entsprechenden Teil in der verschmolzenen Exe auf die Festplatte dumpen und schon ist der Schutz überwunden.
 
Hm.

1)
Ich würd' das "Setup" in C++ schreiben, nicht in der
"managed" Sprache wie C#. Die ist viel zu leicht
diassemblierbar.

2)
Du brauchst eigendlich nur 2 Teile:
Das, was Du jetzt "Setup" nennst sollte den Namen
des Programmes tragen.
Das eigendliche Setup intrigiert das zu "schützende" Proggy
zusammen mit einem Stub und benennt diesen in den eigendlichen
Programmnamen um.
Das eigendlich zu "schützende " Proggy ist wie schon gesagt als
verschlüsselte Ressource gespeichert.
Wenn jetzt Dein Proggy aufgerufen wird, reserviert der Stub Speicher,
entschlüsselt die eigendliche Exe im RAM und startet diese.

Achja, ich hab' "zu schützende" absichtlich in Anführungszeichen
geschrieben ... :P
 
OK, das mit dem "schützen" muss ich mir noch einmal durch den Kopf gehen lassen ;). Aber wie soll ich trotzdem am besten die 2 Progs verknüpfen? Damit ich auch die Originalanwendung starten kann falls der 1. Teil (Aktivierungs-Manager) ein OK zurückgibt. Egal ob C# oder C++

Oder bleibt mir nichts anderes übrig als einen Compilier zu programmieren?
 
THumer schrubb:

Oder bleibt mir nichts anderes übrig
als einen Compilier zu programmieren?


Nee, 'n Compiler brauchst Du nicht zu programmieren,
sondern einen Linker! :P

Denn der Stub, also die von Dir geschreibene library muss
ja vom Setup mit dem "zu schützenden" Anwendeproggy ja
zusammengebunden werden.

Schau'Dir doch mal den Quelltext des EXEpacker's UPX an
und lass' Dich von ihm inspirieren.
Da sind feine Routinen drinne, die Dir helfen, Dein Projekt
zu verwirklichen.
Denka aber daran, dass UPX Open Source ist, uns somit Dein
Projekt auch open Source sein muss also ---

nicht abschreiben, sondern inspirieren lassen! =)

Golgy =)
 
ab win2k kann man es sich auch ganz einfach machen: man schreibt den Entpacker als "schablone". Der "Verschmelzer" hängt nun einfach die Datei(en) an den "Entpacker" dran und schreibt auch geänderte Einstellungen da rein (größe der Datei usw). Ab win2k kann die Executable sich selbt für den Lesezugriff öffnen und damit auch "Entpacken" - da einzig "heikle" hierdran sind nur die Einstellungen die man in eine Binary schreiben muss - hier helfen aber der Debugger& Co auf jeden Fall weiter und es ist einfacher als selber eine Stub zu schreiben(wobei ich mal dafür schon einen Tutorial gesehen habe - und ich kann nur sagen es ist nicht allzu spasig, wenn man alle möglichen Linker unterstützen möchte).
 
So hab es heute geschaft mein Programm (fast) fertig zu programmieren. Es funkioniert alles wie geschmiert. Der Verschmelzer verknüpft 2. EXE-Files. Falls der Aktivierungs-Manager true zurückgibt wird die Originalanwendung gestartet.
Ein Problem habe ich noch: die Originalanwendung befindet sich in einem byte-Array im Hauptspeicher. Ich verwende zurzeit die Funktion Assembly.Load, um die Anwendung zu starten. Leider funkioniert diese Funkion nicht mit allen Anwendungen, da nur Assembly-Files unterstützt werden. Kennt jemand irgendeine andere Funktion in C#, um eine im Hauptspeicher befindende EXE-Datei starten zu können.
 
Zurück
Oben