[Lizenzsystem-Demo] ExecShieldSystem v1.0

08/18/2012 22:25 AkiraSoul#1
ExecShieldSystem v1.2
Lizenzsystem für C/C++

Du wolltest dein Programm schon immer mal vor einfachem Kopieren schützen? Hier ist eine handliche leichte und doch recht sichere Methode.

[Only registered and activated users can see links. Click Here To Register...]

Du musst dir weder um das GUI des Lizenzsystems sorgen machen, noch um etwas anderes was das Lizenzsystem anbelangt.

Das Lizenzsystem muss im Quellcode untergebracht werden und wird lediglich mit dem Befehl ExecShield() ausgeführt, den Rest übernimmt das das eingebaute System.

Da Version 1.0 noch eine Demoversion ist wird der Key mit einem festen algorithmus erstellt, allerdings wird in der Vollversion die Möglichkeit, seitens des Softwarepublishers, bestehen zusätzliche Parameter zur Schlüsselgeneration hinzuzufügen.

Der Schlüssel wird auf Basis der Harddisk-ID und zusätzlicher Parameter berechnet.

Zu Demonstrationszwecken wurde ein Sample unten hinzugefügt auch der Header und die ExecShieldSystem.dll sind zum Download verfügbar.

Der Schutz ist zwar nicht unumgebar aber das ist heutzutage sowieso fast nirgendwo mehr der Fall, erschweren tut es das unerwünschte Weiterverbreiten auf jeden Fall.

Natürlich freue ich mich über einen Kommentar oder vllt. sogar ein Feedback. Bei weiteren Fragen kann auch eine private Nachricht geschickt werden.

Mirrors

Version 1.2

Sample [Only registered and activated users can see links. Click Here To Register...] (Statisch; Keygen von Version 1.0 verwendbar)


Version 1.1

All Files [Only registered and activated users can see links. Click Here To Register...] (Keygen von Version 1.0 verwendbar)


Version 1.0 (Fix für's Sample notwendig)

Sample [Only registered and activated users can see links. Click Here To Register...]
Keygen [Only registered and activated users can see links. Click Here To Register...]
Development Files [Only registered and activated users can see links. Click Here To Register...]
All Files [Only registered and activated users can see links. Click Here To Register...] (Keygen nicht enthalten)
Fix [Only registered and activated users can see links. Click Here To Register...]
08/20/2012 13:03 AkiraSoul#2
########## Programm Fix ##########

Mir ist leider erst heute aufgefallen dass ich vergessen habe zwei notwendige *.dlls hinzuzufügen, um das program zu fixen einfach die beiden DLLs aus dem Fix-Archiv in das Sample verzeichnis kopieren/verschieben. In den folgenden Versionen werde ich das natürlich beheben.
08/22/2012 15:13 AkiraSoul#3
########## Programmzusatz ##########

Keygenerator für den Algorithmus wurde hinzugefügt, somit kann das "Produkt" nun aktiviert werden. Sollte das Produkt schon einmal aktivert worden sein, so befindet sich im Ordner "C:\Users\*NAME*\AppData\Local" eine Datei mit dem Namen "Key", diese einfach wieder löschen um die Aktivierung aufzuheben. Der Pfad und Name sind nur in der Demo so statisch, eventuell wird es konfigurationsmöglichkeiten in einer weiteren Demo oder einem Vollwertigen Release geben.

Zusätzliches: Die ExecShieldSystem-Library-Datei wird im Release wahrscheinlich statisch gelinkt sein, um somit eine Manipulation der "ExecShieldSystem.dll" zu verhindern.
08/23/2012 02:34 MopferMongo#4
rhino-licensing system ist um einiges sichrer, aber für C# und nicht grade anfänger freundlich. Jedoch nicht so leicht knackbar. Wie schützt du davor das man nicht einfach das überspringt? Bin noch nicht ganz schlau dazu geworden.
08/24/2012 12:12 AkiraSoul#5
Also bisher weiß ich nicht wie man das überspringen könnte, außer vllt. man findet die richtige Value im richtigen Augenblick (z. B. per Cheatengine) und stellt diese um, allerdings wird bei jedem Start des Programmes wieder der Key überprüft und auf seine Korrektheit überprüft.

Da die Library wahrscheinlich sowieso statisch gelinkt werden wird ist ein "einfaches" manipulieren der externen DLL files eher nicht möglich. Dabei wird dieses "Lizenzmodul" quasi ein Teil des ganzen Programmes.

Des Weiteren überlege ich mir noch, ob ich noch eine Echtzeitüberprüfung implementiere, die dann über einen Thread läuft, wie das alles allerdings konkret aussieht steht bis jetzt noch nicht fest.

P. S.: Ich kenn mich zwar mit den .NET Sprachen nicht wirklich aus, allerdings habe ich gelesen, dass diese relativ leicht dekompiliert werden können und das Resultat sogar recht gut sein soll, womit man einfach dieses "rhino-licensing" aus dem Quelltext entfernen könnte. Allerdings kenne ich mich wie gesagt mit .NET Sprachen - und da ich vermute, dass C# eine solche ist, auch mit dieser - nicht wirklich aus.

P. P. S.: Natürlich bin ich auch dankbar, wenn mir Sicherheitslücken gemeldet werden :)
08/24/2012 13:19 .SkyneT.#6
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Sehr sicher ist es nicht :rolleyes:
08/24/2012 14:17 AkiraSoul#7
Wie ich sehe ist es bereits jemandem gelungen das zu umgehen :)

Ich werde mich mal an den Code setzen und weitere Änderungen vornehmen um gegen sowas präventiv einzuwirken. Hab schon einige Ideen bekommen.

Danke dass du dir die "Mühe" gemacht hast es zu probieren :)

########## Update Version 1.1 ##########

Es wurden einige sicherheitskritische Lücken geschlossen und Manipulation von bestimmten Variablen erschwert.

An alle die das System umgehen wollen: Sofern die Meldung "Successfully activated" erscheint, das Programm noch einmal starten und schauen, ob die "Invalid key"-Meldung kommt.

P. S.: Natürlich bin ich auch hier wieder für Sicherheitslücken offen und würde mich über ein kurzes Feedback freuen und evtl. wenn man sich schon daran versucht hat, ob man das System umgehen konnte :)
08/25/2012 01:16 .SkyneT.#8
Quote:
Originally Posted by AkiraSoul View Post
P. S.: Natürlich bin ich auch hier wieder für Sicherheitslücken offen und würde mich über ein kurzes Feedback freuen und evtl. wenn man sich schon daran versucht hat, ob man das System umgehen konnte :)
Wenn du wieder ein sample wie bei 1.0 machst, versuch ich's
mal wieder, wenn ich grad sonst nix zu tun hab...
08/25/2012 01:24 AkiraSoul#9
Quote:
Originally Posted by .SkyneT. View Post
Wenn du wieder ein sample wie bei 1.0 machst, versuch ich's
mal wieder, wenn ich grad sonst nix zu tun hab...
Ist bereits in dem Download "ExecShieldSystem1.1 - All Files" enthalten.
Wollte nicht nochmal alles zig mal packen und hochladen.

Und danke, dass du dir die Zeit nimmst :D
08/25/2012 10:15 Trollface-#10
6C181876 in der ExecShieldSystem.dll JMPen lassen und ist wieder "gecrackt".
08/25/2012 12:31 AkiraSoul#11
Erstmal danke Trollface-,

nachdem es gecrackt wurde und das Programm nochmal gestartet hast, kam da dann eine "Invalid poduct key"-Meldung? Bin grad etwas verwirrt und wie JMPt man mit OllyDbg auf eine Adresse? Kenn mich mit dem Programm kaum aus.

Danke im Voraus :D
08/25/2012 17:12 .SkyneT.#12
Quote:
Originally Posted by AkiraSoul View Post
Erstmal danke Trollface-,

nachdem es gecrackt wurde und das Programm nochmal gestartet hast, kam da dann eine "Invalid poduct key"-Meldung? Bin grad etwas verwirrt und wie JMPt man mit OllyDbg auf eine Adresse? Kenn mich mit dem Programm kaum aus.

Danke im Voraus :D
Siehst du zb hier:
[Only registered and activated users can see links. Click Here To Register...]

Davor war statt dem JMP ein JE (Jump if equal).
Und da kurz davor ComputeKey verwendet wurde war
klar das hier wohl der eingegebene Key mit dem errechneten
verglichen wird und wenn sie gleich sind wird zu der Adresse gesprungen.
Durch den normalen JMP wird immer zu der Adresse gesprungen, egal
welcher Key eingegeben wird.

Quote:
wie JMPt man mit OllyDbg auf eine Adresse?
Leertaste -> "JMP 12341234"
(Natürlich müssen auch 5 Bytes für den JMP frei sein ( E9 11 11 11 11 ))
08/25/2012 23:13 AkiraSoul#13
Danke dass du das hier kurz erklärt hast, ich werde schauen was ich machen kann.

########## Update Version 1.2 ##########

Änderungen:
- Fixen eines kritischen Bugs in der LoadKeyFile-Funktion
- Große Codeumstellung für mehr Flexibilität
- Grobe Verbesserung der Keykontrolle
- Anderes Keyverzeichnis: "C:\Users\*NAME*\AppData\Local\Licenses\"

- Das Sample wurde statisch erstellt
- Executable wurde mit UPX komprimiert
- Befehl "strip" ging über die Anwendung

Ich hoffe doch, dass es jetzt viel schwerer ist das System zu knacken, allerdings bestand auch der Großteil der Ändernungen nur in der Umstellung von Code.

An alle die das System umgehen wollen: Sollte es geschafft worden sein, das "Successfully activated"-Fenster erscheinen zu lassen, so bitte das Programm noch einmal starten und schauen ob sich das Fenster mit dem Titel "Your Program" öffnet.

Auch hier bin ich wieder für Schwachpunkte der Software offen und würde diese gerne, sofern möglich beheben. Danke im Voraus.
08/27/2012 22:44 AkiraSoul#14
#push (Update Version 1.2)
08/30/2012 00:56 Shadow992#15
Quote:
Originally Posted by AkiraSoul View Post
#push (Update Version 1.2)
Also es hat ein paar Anläufe gebraucht bis ich es komplett hatte, liegt aber auch daran, dass ich schon ewig nichts mehr mit Olly gemacht habe. Insgesamt hat es 45 Minuten gedauert bis ich es fertig hatte (Unpacken, Laden und Speichern mit in Begriffen). Diese Zeit ist viel zu kurz für ein Programm, das eigentlich ein Lizenzsystem sein soll, vor allem weil das letzte Mal, dass ich mit Olly gespielt habe gut 6 Monate her ist.

[Only registered and activated users can see links. Click Here To Register...]

Edit:
Ja das war die Version 1.2.