Ich hab mal angefangen, nen Kopierschutz zu programmieren. Er erstellt beim Lizensieren nen 2048bit-Hash, der unter anderem auf
- Ram
- Benutzer
- Festplatte
- Maus
- BIOS
- CPU
- OS
und mehr basiert. Dann wird aus dem Programmcode ein Schlüssel erstellt, mit der Hash mit nBlow (Verschlüsselung von mir, angelehnt an BlowFish) auf 16000bit bis 19000bit aufgeblasen und verschlüsselt wird. Damit wird verhindert, das ein anderes Programm den gleichen Schlüssel untergeschoben bekommt, außerdem kann man unmöglich einen zweiten PC bauen, der das gleiche BIOS-Baudatum und die gleiche Festplatten-ID hat.
Man kann dann im Internet ne Datenbank aufstellen, die die registrierten Computerhashes enthält und dann lokal die verschlüsselte Datei speichern, damit das Programm auch offline läuft.
Kleine Demo (komplett offline): nAntiCopy.zip (108,97 KB)
Falls jemand gern sein eigenes Programm schützen will einfach PN schreiben.
Ein neuer Kopierschutz
-
-
Und wenn meine Maus putt is bin ich am arsch oder wat
-
Find ich auch irgendwie leicht... komisch?!
Vorallem was schützt denn überhaupt der Kopierschutz? Den ganzen PC? Sprich: Neue Maus = OS komplett gesperrt?
-
Nein, es prüft den Maustyp (USB, PS2, etc)
Ich schaun noch, obs ne Toleranz gibt (Bei austauschbaren Komponenten).
@Griggi: Ich hab mir einfach gedacht, ich könnts mal für eigene Programme brauchen oder jemand anderes kanns brauchen -
-
Also microsoft nutzt die MAC der Netzwerkkarte, statt der Maus. zudem gibts nen counter, erst wenn eine gewisse summe überschritten ist, muss neu aktiviert werden. wobei die einzelnen teile unterschiedlich gewichten. ich glaube die NIC 3fach.
-
Beitrag von Spit (
10. Juni 2010 um 17:30 )Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Gerade der Punkt „Maus“ ist ja wirklich ein Failgriff. Wenn mal meine USB-Maus kaputt ist und ich nur noch eine serielle () oder gar keine Maus mehr besitze und per Tastatur-/Joystickeingabe navigiere, würde die Routine schon versagen.
Der übliche DRM-Mist beschränkt sich meistens auf BIOS, Festplatte, RAM und OS, wobei letzteres bei plattformübergreifenden Anwendungen als erstes unter den Tisch fällt.
-
Ich denk, MAC Adresse von allem was nach außen kommuniziieren kann und ne spezielle Datei auf Diskette oder so müsst langen.
-
ich glaube für nen Kopierschutz reicht die Mac Adresse und Den Key
-
MAC-Adressen faken ist ja mal das billigste ever
sinnhaftigkeit dieses ansatzes hin oder her, was mir persönlich sauer aufstößt ist:
Zitat von niwaxDann wird aus dem Programmcode ein Schlüssel erstellt, mit der Hash mit nBlow (Verschlüsselung von mir, angelehnt an BlowFish) auf 16000bit bis 19000bit aufgeblasen und verschlüsselt wird.
- hä wie was? verschlüsselung oder hash? ich werd rein grammatisch aus deinem satz schonmal nicht schlau
- eigene verschlüsselung? warum? security by obscurity? ich trau den allerwenigsten leuten auf dieser erde zu einen verschlüsselungsalgorithmus zu entwerfen, der annähernd sicher ist...selbst große firmen verkacken da regelmäßig und gehn dann doch auf standardlösungen, zumal es praktisch keinen sicherheitsgewinn gibt.
- was heißt "angelehnt an BlowFish"? wenn man einen standard-algo nimmt und da 3 bits ändert, dann wird das praktisch garantiert dazu führen, dass das ding angreifbar wird. Bei solchen Sachen haben sich Leute jahrelang gedanken gemacht um etwas, was am ende irgendwie 80 Zeilen Code ist, da kann man nicht einfach eine Zeile ändern oder so, praktisch immer wird damit das gesamtkonstrukt zusammenfallen
- schon allein um den verschlüsselungsalgo drumherum kann man genug an security nightmares veranstalten, selbst wenn die Verschlüsselung selbst "unknackbar" ist.
-
Zitat von DosAmp
Gerade der Punkt „Maus“ ist ja wirklich ein Failgriff. Wenn mal meine USB-Maus kaputt ist und ich nur noch eine serielle () oder gar keine Maus mehr besitze und per Tastatur-/Joystickeingabe navigiere, würde die Routine schon versagen.
Der übliche DRM-Mist beschränkt sich meistens auf BIOS, Festplatte, RAM und OS, wobei letzteres bei plattformübergreifenden Anwendungen als erstes unter den Tisch fällt.
Also, ich mach - wie schon gesagt -wahrscheinlich noch ne Toleranz rein, wg. Plattformübergereifen etc: Das ist doch gerade der Sinn: man will nicht, dass sich jemand das Programm auf nen anderen PC zieht, also schaut man nach, ob die Umgebung noch die selbe ist. Was ist da das Problem?
oreissig Also: Er baut sich mehrere Hashs, die insgesamt 2048 bit groß sind. Dann nimmt er sich aus dem Code des Programms nen bis zu 19000-Bit Key, mit dem dann der Hashh verschlüsselt und in ne Datei gespeichert wird. Das ist nötig, damit man nicht nem anderen Programm den gleichen Hash unterschieben kann. nBlow nenne ich angelehnt an BlowFish, weil es das gleiche Konzept verfolgt - aufblähen mit Müll, aber mit nem anderen Ansatz: zuerst wird das erste Byte der Daten mit dem ersten Byte des Passworts per XOR verknüpft, dann wird eine Anzahl von Müll-Bytes eingefügt, die auf dem zweiten Byte des Passworts basieren, dann geht immer so weiter, mit dem zweiten Byte der Daten und dem dritten+vierten Byte des Passworts usw...
-
Zitat von niwax
Plattformübergereifen etc: Das ist doch gerade der Sinn: man will nicht, dass sich jemand das Programm auf nen anderen PC zieht, also schaut man nach, ob die Umgebung noch die selbe ist. Was ist da das Problem?
i.d.R. gehts bei nem Kopierschutz darum, dass es nicht kopiert wird das muss nicht unbedingt bedeuten, dass die programmausführung an einen Rechner gekettet wird
Zitat von niwax
Er baut sich mehrere Hashs, die insgesamt 2048 bit groß sind. Dann nimmt er sich aus dem Code des Programms nen bis zu 19000-Bit Key, mit dem dann der Hashh verschlüsselt und in ne Datei gespeichert wird. Das ist nötig, damit man nicht nem anderen Programm den gleichen Hash unterschieben kann.was sind das alles für hashes? warum wird das dann so groß gemacht?
nagut, am wichtigsten ist vll die frage: wie gehts dann weiter? man hat quasi einen key, der sowohl programm als auch rechner beinhaltet, wie funktioniert dann der eigentliche schutz?Zitat von niwax
nBlow nenne ich angelehnt an BlowFish, weil es das gleiche Konzept verfolgt - aufblähen mit Müll, aber mit nem anderen Ansatz: zuerst wird das erste Byte der Daten mit dem ersten Byte des Passworts per XOR verknüpft, dann wird eine Anzahl von Müll-Bytes eingefügt, die auf dem zweiten Byte des Passworts basieren, dann geht immer so weiter, mit dem zweiten Byte der Daten und dem dritten+vierten Byte des Passworts usw...
hm, würd gern mal den code dazu sehn, mit etwas zeit werd ichs mir irgendwann mal genauer anschauen -
Der Code:
EDIT: Sehe grade, dass das die ganzen einrückungen löscht, nochmal:Spoiler anzeigen
Code
Alles anzeigenVerschlüsseln: Function Check() As Boolean Dim P() As Byte, T As String, C As String, X() As Byte, Z As Integer Try P = My.Computer.FileSystem.ReadAllBytes(Application.ExecutablePath) X = My.Computer.FileSystem.ReadAllBytes(Application.StartupPath & "\nanticop.y") Z = 0 Catch ex As Exception End Try T = "" Try For I As Integer = 0 To 127 T = T & Chr(P(I) Xor X(Z)) Z += 1 Z += P(I + 128) Next Catch ex As Exception End Try C = GetHash() MsgBox(C & vbCrLf & T) Return (C = T) End Function Entschlüsseln: Sub Generate() Dim P() As Byte, C As String, X() As Byte, Z As Integer P = My.Computer.FileSystem.ReadAllBytes(Application.ExecutablePath) ReDim X(KeyLen() \ 8) C = GetHash() Z = 0 For I As Integer = 0 To 127 X(Z) = P(I) Xor Asc(C(I)) Z += 1 Randomize() For J As Integer = Z To Z + P(I + 128) X(J) = CInt(Rnd() * 254) Next Z += P(I + 128) Next My.Computer.FileSystem.WriteAllBytes(Application.StartupPath & "\nanticop.y", X, False) End Sub
-
Ich hab mal ne ernste Frage, wie kann man nur ein Kopierschutz programmieren?
-
Ich schließe mich da Blue an, wenn ich Programme schreiben könnte würde ich sie als OpenSource veröffentlichen.
-
-
Ich schätze mal es ist auch eher als Fingerübung zu sehen. Beim Butter&Brot programmieren interessiert kaum jemand der quellcode. hatte nur einmal, das einer aus dem forum hier mal nen kalender von mir gebrauchen konnte. war aber auch java und hatte ins jar den code auch gleich reingeworfen.
-
Es gibt drei Gründe, warum als kleiner Programmierer Quellcode veröffentlichen eine gute Idee sein kann:
- Sicherheitsanalyse. Es gibt viele Leute, die sich für Sicherheitskram interessieren und daher auch einfach aus Spass mal deinen sicherheitskritischen Quellcode durchlesen und dir Tipps geben können, was da kaputt sein kann. Bei geheime Algorithmen finden auch Analysen statt und es werden Lücken gefunden (z.B. Skype), nur gibt dir dann keiner Verbesserungsvorschläge.
- Nützlichkeit. Ab und zu schreibt man ja auch Programme, die nützlich sind und von anderen verwendet werden. Da kommt es dann gerne vor, dass da jemand selber noch eigenen Krams hinzufügen will.
- Lernen. Lernt man Programmieren oder lernt man eine neue Sprache, dann kann es sinnvoll sein, die ersten eigenen Programme hochzuladen, damit Leute mit Erfahrung einem Tipps geben können.
-
wie gandro bereits sagte gibts da schon ein paar ernsthafte Vorteile, aber im Endeffekt seis doch jedem selbst überlassen und hier auch nicht Gegenstand der Debatte
den algo hab ich mir jetz noch nich genau angeschaut, mir sind nur fix paar sachen aufgefallen:
- visual basic? uff lang ists her
- weiß nich genau, wie exception handling da gemacht wird, aber für mich siehts so aus als fängst du in paar blöcken einfach alle möglichen exceptions und behandelst sie danach nicht. das nennt man pokemon exception handling "if you gotta catch em all"
besser: wirklich nur das catchen, was auftreten kann (also wohl die klasse der IOExceptions oder besser noch genauer) und diese natürlich auch behandeln (z.B. abbruch oder weiterwerfen) - warum resized du in der 2. Methode X direkt nach dem deklarieren?
resizen ist so mit das schlechteste und langsamste, was man mit einem array tun kann - sämtliche variablen mit einem einzigen Buchstaben zu bezeichnen scheint ne alte Basic-Angewohnheit zu sein, die sich bis heute durchzieht...vll könnte man über aussagekräftigere namen als P, T, C, Z usw nachdenken
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!