warum Nachdenken bei der Softwareentwicklung so wichtig ist…



Also. Betrachten wir mal den absolut hypothetischen aber praxisorientierten Fall, das ich eine kommerzielle Applikation programmiere und diese verkaufen möchte. – Der übliche Weg ist dann der folgende:




  1. ich programmiere die Applikation und implementiere Einschränkungen/Zeitbeschränkungen – das übliche eben


  2. dann überlege ich mir einen schicken Algorithmus der mir einen gegebenen Wert (z.B. Nutzername) mit einem Schlüssel verbindet (Serial, Key, Seriennummer…)


  3. ich implementiere den Algorithmus und die Überprüfungsroutinen (stimmt der eingegebene Key auch ?)


  4. ich verteile die Software und wenn jemand mein Produkt kauft dann gibts Schlüssel gegen Geld…

Im Beispiel sieht das dann so aus:



Natürlich ist im Beispiel die Routine sehr vereinfacht – eine ROT13 Kodierung ist nicht besonders kreativ..aber es ist ja ein Beispiel und Kreativ-Preise gibts auch nicht.


Nun – worüber beschwere ich mich ? Ganz einfach… wir haben nun unsere Applikation in Form der Assembly… starten wir sie mal:



Ja natürlich. Wir haben ja noch keinen Keygen. – Nehmen wir mal an wir würden nicht einfach die ROT13 Routine kopieren…sondern von der anderen Seite:



Wir öffnen die Assembly einfach mal im Reflector(was das genau ist hab ich ja schon hier beschrieben). – Der Reflector zeigt nun die ganze Sache schon recht klar an… eine Methode zum prüfen und der ROT13 Encoder. – Hätte ich einen Obfuscator benutzt, ständen die Namen der Methoden und die Variablennamen nicht im Klartext dort… bzw. die Methoden sähen im Source etwas verquer aus…aber who cares…



Sieht interessant aus… der ROT13 Encoder sieht irgendwie nicht sehr verändert aus 😉 – Der Quelltext aus dem Reflector ist direkt Copy-Paste fähig – also .. hinein in den Schlüsselgenerator – die Kunden warten:



Also fix besagtes Copy-Paste – noch schnell die Werte zuweisen und schwupps…



Der Gegentest zeigt, das funktioniert:



Jetzt die Frage: Was will man erreichen ? – Will man einen sicheren Seriennummern-Check oder will man einen Placebo der seinen Zweck nicht erfüllt ?


Obiges ist ein Placebo – mehr nicht – ich frage mich seit geraumer Zeit wieso jemand überhaupt so etwas implementiert – das in meinen Augen einzig sichere Verfahren ist einfach keinerlei solcher Seriennummer-Überprüfungen einzubauen sondern eine Test- und eine Vollversion anzubieten(welche sich auch in den Assemblies unterscheiden) – alles andere ist vertane Zeit in der man sinnvolle Features hätte entwickeln können.

Applikation zum selberspielen gibts hier…