PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Crack-Schutz (Windows-Programme)


nj0y
11.03.2002, 19:01
Wie schützt Ihr Eure Software (die nicht Freeware ist natürlich) gegen Cracks? Ich meine, ein paar Serials oder so sind ja nicht wirklich ein Schutz. Habt Ihr z. B. eine Methode, die .exe auf Änderungen zu untersuchen, die aber zu schwer zu finden ist, um sie in 5 Minuten auszubauen? Habt Ihr einen Schutz gegen Reverse-Engineering-Software oder gegen SoftIce & Co.?


cYrus
11.03.2002, 19:45
machs OpenSource, dann musste nix mehr schützen *fg* ne sichere Methode gibts nicht, aber es gibt Methoden ums schwieriger zu machen z.B Aktivierungs-Status in der Tiefe der Registry verstecken und den auch so ´verschlüsseln´, dass er z.B mit der CPU-ID oder sonstwas mathematisch verknüpft wird.. zudem bringt auch deine Methode was, MD5-Summe der EXE zu vergleichen.. am meisten brigen halt mehrere methoden miteinander zu verknüpfen...

so long
cYrus

Felix Kaiser
11.03.2002, 20:36
Sodale, ich kramer mal wieder in meiner Trickkiste:

Registry ist ein blöder Ort um seine Infos zu verstecken. Ich werde für meine Programme jedem Prog eine Kontrolldatei beilegen, die zur Installation erzeugt wird. Serialauthentifizierung via Internet -> Schließt Keygenerator praktisch völlig aus. Nun verarbeite programmspezifische Informationen mit Hilfe von Systeminformationen des Lokalrechners auf Basis diverser ausgefallener Kodier oder auch Kompremiermechanismen, über Passwörter etc. doppelt und dreifach geschützt und speicher den Mist im Kontrollfile. Das einbringen von Systeminformationen schließt simples kopieren der Programmdateien aus. Allerdings bei einigen Aufrüstungen im System müsste man die Kontrolldatei neuerzeugen lassen vom Setup, aber verkraftbar, man rüstet ja nicht tagtäglich auf. Zu dem würde ich die Internetauthentifizierung so gestalten, dass eine Serial nur einmal täglich verwendet werden kann, es wird mitgezählt und häufig verwendete Keys würden mich dann doch stutzig machen, ich würde den Lizenznehmer kontaktieren, die Sache abklären und wenns denn so sein sollte, hat er halt juristisch Pech gehabt. Geht zwar nicht in 5 Minuten, aber somit werden Programme zu kleinen Festungen. Zu mal man ja noch diverse andere gemeine Schmankerl einbauen kann, hier setzt allein die Kreativität des Autoren die Grenzen des machbaren.

Insbesondere bei Webapplikationen ist dieses Prinzip geeignet.

Mac Fly
11.03.2002, 21:10
Für Web Applikationen ja, aber ich bin mir sicher, das jedes prog, das ich offline ausführen kann, gecrackt werden kann. Zwar nicht von mir, aber... :D

fabian ackle
11.03.2002, 21:16
nach meiner meinung gibt es keinen 100%igen schutz, denn alles was vom menschen erschaffen wurde kann auch vom menschen wieder geändert werden ;)
abfragen übers net sind ja auch gut, aber was ist mit leuten, die kein net habn (soll es ja auch noch geben :D )

und wenn es einen 100%igen schutz geben würde, warum verwenden ihn dann die Softwarehersteller nicht?? :D

greetz

dubious

nj0y
11.03.2002, 21:17
@ Guru

Die ganze Sache hat nur einen Haken: Es muß lediglich die Authentifizierungsprüfung der Kontrolldatei umgangen werden (wahrscheinlich ein Byte abändern) und der Internetzugriff verhindert werden (ebenfalls ein Byte). Man kann alles noch so raffiniert machen, solange der Hacker ungestraft im Exe-Code rumhampeln kann, wie er lustig ist, ist das alles kein wirklicher Schutz. Ein Bekannter hat mal ein Proggi von mir gecrackt, um mir zu zeigen, wie einfach das ist. Ok, da hab ich auch so gut wie keinen Schutz dringehabt, aber daher weiß ich doch so ungefähr, was machbar ist... z. B. hat er mir auch den Tipp gegeben (den ich hiermit weiterreiche), URLs nie im Klartext im Quelltext abzuspeichern, denn die muß er nur durch Nullen ersetzen, schon findet kein Zugriff mehr auf die Seite statt.

Was mir noch Kopfschmerzen bereitet ist, daß er einfach die Exe-Datei abändern kann. Und ein einmaliger CRC- oder MD5-Check ist auch kein Hindernis. Und ganz viele Checks verteilt über das Programm legen das Programm ja fast lahm.

Diskutiert ruhig weiter :), bin für alle Anregungen offen!

Felix Kaiser
11.03.2002, 21:38
Narf, das ist kein ´Byte´ sondern ein ganzes Codesystem. Afaik kann man alles damit umgehen, aber bei hunderten Kilobytes großes Proggis nun diese Sachen so umgehen, dasses klappt, ist schlimmer wie die Nadel im Heuhaufen suchen.

Bei Offline Anwendungen würde ich mich an das Medium halten, von dem installiert wird und ich werde mich insbesondere an Authentifizierungsfloppies halten, da diese einen entscheidenden Bonus haben gegenüber CDs... -> *secret*

Patrik Graf
11.03.2002, 23:53
Ich sag euch mal was...

Alles, aber auch wirklich alles kann gecrackt werden... :D

Das einzigste was in absehbarer Zeit nicht gekrackt werden kann ist RSA-Verschlüsselung so im 2048 Bit Format oda so. Wenn man irgentwas Schützen will, dann empfehle ich RSA zu verwenden da das selbst die besten Hacker und Cracker der Welt nicht geknackt bekommen. Man braucht nur sowas wie einen "Selfextractor" (z.B. sowas wie UPX) der die EXE entschlüsselt und startet, damit die ganzen Rafinessen die eingebaut wurden nicht in absehbarer Zeit einfach so aus der EXE rausgehauen werden. Da kommt dann beim coden alles in´s Spiel. Von ASM bis zu der höheren Programmiersprache die man am liebsten verwendet. Wenn man dann noch beim Beenden der EXE z.B. jedes mal alle Keys neu generiert (kann leider ziemlich Zeitaufwendig sein :( ) und die neu verschlüsselte EXE abspeichert, hat man eigentlich den FAST 100%igen Schutz. Aber das soll erst mal einer machen... ich brauch´s nicht da meine Proggis alle Freeware sind :D

Aber Moment... das wäre doch ne Idee für ein Coing-Board Projekt :D

Na? Was meint Ihr?

nj0y
12.03.2002, 08:15
Original von Guru
Narf, das ist kein ´Byte´ sondern ein ganzes Codesystem.

Ist schon klar, hab ich ja auch. Die Abfrage meines Keys (8 KB, zigmal verschlüsselt usw.) ist (logischerweise) eine Funktion, die einen String irgendwohin schreibt, wenn der Key gültig war. Dieser String wird dann mehrmals im Programm überprüft. Aber diese Überprüfung an sich kann mit einem einzigen Byte relativiert werden, so daß die Prüfung immer positiv ausfällt. Das meinte ich mit einem Byte.

Bei Offline Anwendungen würde ich mich an das Medium halten, von dem installiert wird und ich werde mich insbesondere an Authentifizierungsfloppies halten, da diese einen entscheidenden Bonus haben gegenüber CDs... -> *secret*

Stimmt. Erfordert aber:

1. Daß die Anwendung über den Postweg verteilt wird (meine Anwendungen kosten in der Regel sowas um die 10 EUR, weil ich die Preise von Microschrott & Co. absolut übertrieben finde - da ist das einfach nicht drin).
2. Daß die Disketten ausgetauscht werden, wenn sie kaputtgehen.
3. Ich hasse Disketten! :)

Original von Grafitty
Alles, aber auch wirklich alles kann gecrackt werden...

Schon klar. Aber man muß die Cracker wenigstens ein bißchen vor eine Aufgabe stellen, damit sie auch schön viel Arbeit damit haben :D.

Original von Grafitty
Das einzigste was in absehbarer Zeit nicht gekrackt werden kann ist RSA-Verschlüsselung so im 2048 Bit Format oda so.

Auf den ersten Blick gefiel mir Deine Idee. Auf den zweiten Blick ist das Programm kurz nach dem Start entschlüsselt im Speicher und kann problemlos mit Tools wie SoftIce gespeichert werden und dann nach Belieben modifiziert werden.

xOOn
12.03.2002, 08:41
also ich werde die daten (register/not registered) im multistream verstecken!!!

also man kann unter ntfs mehrere streams erstellen, beim oeffnen sieht man nur den hauptstream, und der andere ist versteckt, wenn man die daten dann noch verschluesselt dann wird das einige zeit halten!

ich kenne jedoch kein prog was wirklich nicht gecrackt werden konnte ?( ?( ?( !

xOOn
12.03.2002, 08:46
@ Grafitty

Das einzigste was in absehbarer Zeit nicht gekrackt werden kann ist RSA-Verschlüsselung so im 2048 Bit Format oda so. Wenn man irgentwas Schützen will, dann empfehle ich RSA zu verwenden da das selbst die besten Hacker und Cracker der Welt nicht geknackt bekommen

das prob ist nur, dass du ein password hardcoden, oder irgendwo saven musst, und finden sie das, dann ist rsa nutzlos, und nimmst du das password, passphrase, key, .. als serial, dann ist der crack halt nur die serial!

nj0y
12.03.2002, 08:47
Original von xOOn
also ich werde die daten (register/not registered) im multistream verstecken!!!

also man kann unter ntfs mehrere streams erstellen, beim oeffnen sieht man nur den hauptstream, und der andere ist versteckt, wenn man die daten dann noch verschluesselt dann wird das einige zeit halten!

ich kenne jedoch kein prog was wirklich nicht gecrackt werden konnte ?( ?( ?( !


Das erste ist eine gute Idee, allerdings nur anwendbar, wenn der Anwender NTFS benutzt. Aber immerhin :).

Zu letzterem: Feurio. Früher oder später erkennt das immer, daß es gecrackt wurde. Ich glaub, der verifiziert auch diverse Dinge über´s Internet. Vielleicht würde es funktionieren, solange man nicht mit den Internet verbunden ist. Aber in Zeiten von Flatrate & Co. ... ;)

nj0y
12.03.2002, 08:48
Original von xOOn
das prob ist nur, dass du ein password hardcoden, oder irgendwo saven musst, und finden sie das, dann ist rsa nutzlos, und nimmst du das password, passphrase, key, .. als serial, dann ist der crack halt nur die serial!


Wenn man eine Private-/Public-Key-Verschlüsselung nehmen würde, bräuchte man nur den Public-Key in den Code mit einzubauen, ohne den Private-Key kann man den Code nicht neu verschlüsseln. Bleibt aber trotzdem noch mein Argument von heute morgen ;).

Patrik Graf
12.03.2002, 10:31
Original von xOOn
das prob ist nur, dass du ein password hardcoden, oder irgendwo saven musst, und finden sie das, dann ist rsa nutzlos, und nimmst du das password, passphrase, key, .. als serial, dann ist der crack halt nur die serial!

Schon klar... aber man könnte ein gemischtes Verfahren nehmen, mit dem man den abgespeicherten Key z.B. mit einem linearen Verschlüsselungsverfahren verschlüsselt irgentwo abspeichert. Der Key für diese lineare Verschlüsselung ist dann z.B die Checksumme der Verschlüsselten EXE oda so. Ich meine, da kann man sich ja was einfallen lassen... :D :D

xOOn
12.03.2002, 10:33
@nj0y
jepp

gar keine schlechte idee teile des progs als public key zu saven und zwar einen teil des progs, dadurch ist er vor veraenderung geschuetzt

Patrik Graf
12.03.2002, 11:57
Neue Idee... :D

Das Beste wäre doch eigentlich, wenn man sowas wie ne "Virtual-Machine" coden würde. Die füttert man dann mit dem Key und so kann dann die EXE "OnTheFly" entschlüsselt und ausgeführt werden. So hat man kein entschlüsseltes Abbild der EXE im Speicher und es läuft auf jeder Version von Windows :))

Naja, wir sollten das ganze so richtig austüffteln und dann ein Projekt starten. Wenn das Ding dann fertig ist, können wir die Lizenzen verkaufen und uns was schönes fürs Board und uns selber leisten :] :D

Wenn ihr wollt und Interesse habt, poste ich das mal ins Projekte-Forum.

nj0y
12.03.2002, 12:05
@ Grafitty

Wie stellst Du Dir das konkret vor? Also eine VM ist natürlich viel zu lahm... aber ein Projekt könnte man ja trotzdem draus machen ;). Vielleicht kriegt man es ja sogar programmiersprachenunabhängig hin...?

Codeq
12.03.2002, 12:28
Original von dubious
nach meiner meinung gibt es keinen 100%igen schutz, denn alles was vom menschen erschaffen wurde kann auch vom menschen wieder geändert werden ;)
abfragen übers net sind ja auch gut, aber was ist mit leuten, die kein net habn (soll es ja auch noch geben :D )

und wenn es einen 100%igen schutz geben würde, warum verwenden ihn dann die Softwarehersteller nicht?? :D

greetz

dubious


Wenn du das ernsthaft meinst, dann hast du in Mathe aber nicht aufgepasst. Es gibt verfahren mit denen man aus einer UnterGruppe eines Ringes meherere Urbilder errechnen kann, wobei das ausprobieren der errechnetten Urbilder wiederum millionen Jahre dauert um sie alle auf richtigkeit zu überprüfen.

und Softwarehersteller benutzen es selten, da es teuer ist gute Hirne dauerhaft zu beschäftigen und weil es wirtschaftlich unsinnig ist ein Programm unkopierbar zu machen. Es geht da nur ums Geld..

Patrik Graf
12.03.2002, 13:12
Also, ich meine das eine VM nicht unbedingt zu langsam wäre da ich Zuhause noch einen AMD-K3-400 rumstehen hab und da auch solche Sachen wie Java oder VM-Ware recht zügig laufen. Das ganze sollte ungefähr so ablaufen:

Die VM wird mit dem Key und dem Verschlüsselten Teil der EXE gefüttert. Dann entschlüsselt die VM einen kleinen Byte-Block und schreibt in irgentwo im Speicher hin. Jetzt wird der Befehlszeiger auf die entsprechende Stelle im Speicher gesetzt und der dort entschlüsselte Code wird ausgeführt. Danach wird wieder zur VM zurückgesprungen und der Code der unverschlüsselt im Speicher liegt wird mit dem nächsten entschlüsselten Byte-Block überschrieben. Natürlich sind dabei die VM und der Verschlüsselte Teil zusammen als ein File... So gesehen eine ziemlich aufwendige Sache, aber auf jeden Fall zu gebrauchen :D

Falls die Idee mit der VM nicht so die Beste ist, muß man sich noch was anderes einfallen lassen.

Ich poste das mal als ins Projekte-Forum. :D

Dominic Suter
26.03.2002, 22:45
Was ich nicht verstehe: Warum macht Ihr die ganze Codiererei in der Software? Heutzutage hat ja fast jeder PC oder Laptop einen USB Anschluss. Also kaeme bei mir die Verwendung eines Hardware-Dongels in Frage. Darauf waere eine komplexe Schaltung, die mir mit gewissen Daten etwas anstellt, ein bischen was veraendert etc. Da ich mit USB eine Art Dasy Chain aufbauen kann, verliere ich nicht einmal einen Steckplatz. Verlorene Dongels kosten 90% der Software, so dass sich Raubkopien ganz einfach nicht lohnen...

Patrik Graf
27.03.2002, 00:40
@Stoenggi:

Denkst du... so ein Dongel ist ruckzuck entfernt. Da gibts Firmen die machen dir das für ein Trinkgeld und das ganze scheint auch noch legal zu sein... :(

nj0y
27.03.2002, 08:41
Und wie teuer ist ein Dongle für den Software-Verkäufer?

Abgesehen davon: Der Dongle-Schutz ist ja wieder in null komma nichts ausgebaut.

xOOn
27.03.2002, 15:55
ich kenne nur 2 programme die einen wirklich sinnvollen kopierschutz heben

Solid Edge : die serial (nur ca 200 zeichen) bekommt man auf einem blatt papier, weil sie es nicht ueber mail verschicken (wegen der piraterie), und wehe wenn ein space falsch ist!, dann habe ich jetzt @ work 3 versionen 9-11 installiert, und es gab keine die nicht probs machte:
die eine sagt beim installieren, dass sie eine existierende dati nicht findet, dann nimmt er die lizenz er bei dritten mal probieren an, der grund ist mir ein raetsel....

Visual Studio .NET naja von kann file auf der cd nicht finden (Ignore Buttun gibts nicht) bis MSI kann nicht gestartet werden, bis hin zu "Die datei auf ihrem system ist neuer als...", und wehe dem der beibehalten sagt!


was lernen wir daraus, ganz einfach um ein programm zu stehlen muss man es erst installiern koennen!!!!

man wenn ich ein prog fuer 1000e von € kaufe, dann sollte man es auch installieren koennen :mauer: :mauer: :mauer: :mauer:

was bringt es einen dongle rauf zu machen, und dann hat man 2 progs mit dongle und muss immer umstecken weil die in serie NICHT worken wollen

ein kopierschutz ist ok nur sollte es nicht auf die kosten der gehen die dafuer bezahlt haben!

Dominic Suter
27.03.2002, 17:42
@xOOn

Da muss ich dir recht geben.
Ich selbst glaube ja auch, dass alles, das vom Menschen erschaffen wurde, auch vom Menschen zerschtoert wird. (Wurde ja auch schon erwaehnt.) Die einzige Chance, die man hat, besteht darin, das Hacken moeglichst unbequem zu gestalten, ohne dass der User zu fest leidet.
Aber dieser Aufwand ist immens, zumal man ja mit jeder neuen Software auch einen neuen Kopierschutz entwickeln sollte, da die Zeit einer der groessten Gegner fuer einen Kopierschutz ist.

Messiah_of_Death
03.05.2002, 18:05
also das ganze hier ist doch praktisch sinnlos..

ich kenn jemand der crackt fast täglich irgendwelches .. Zeug.. sollte SoftIce-Schutz drinnen sein nimmt der THW2000 (oder so ähnlich) sollte dafür ein Schutz drinnen sein halt einen anderen Debugger..
Morph-Code bringt auch nix.. da wundert der sich beim ersten Start und nach kurzer Zeit hat er auch das System geknackt.. .. sollte ein DisAss Schutz drinnen sein nimmt man halt nen Hex Editor..oder nen anderen Disser. ..ich hab den bei der "Arbeit" zugesehen.. für den IST das schon Routine .. nen Billigschutz hat der in 5 Min .. (höchstens)
für neues braucht der allerdings auch länger (Win2k-Authentifizierung ca. 3 Wochen) ....jaja cracken is illegal.. für ihn ist es Zeitvertreib... (hö.. wenn man seit Jahren nix anderes programmiert als Assembler.... :rolleyes: )

Installationsroutinen.. das kann man auch überlisten.. ich kann nicht cracken.. aber ner Inst Routine hab ich auch mal Fenster "verschwinden" lassen...

Man sollte sich doch einfach die Arbeit sparen...irgendwelche Schutzmechis reinzumachen <- meine Meinung

ei ja.. Internetauthentifizieren.. -> C++ Builder 6.0 .. der muss doch auch aktiviert werden..per Inet oder Telefon .. der KeyGen dazu macht den Akti-Key auch gleich noch dazu -> bringt also auch nix

Codeq
03.05.2002, 18:12
dann schlag deiner bank mal vor das sie den Tresor verkaufen sollten, denn knacken oder das gebäude ganz abreissen kann man auch immer...

ist doch ne frage vom zeit/nutzen aufwand....

gibt schon viel neue ideen die man zB mit der .net techoligie verwirklichen könnte. theretisch unknackbaren daten gibt es.. und irgendwann kommt man dem schon so nahe das es einfach zu lange dauert das in real zu versuchen dahinter zu kommen!

Messiah_of_Death
03.05.2002, 18:23
..hmm in ne Bank einbrechen ist aber &quot;etwas&quot; schwerer :rolleyes: ... naaja aber es gibt immer Leute die &quot;zuviel&quot; Zeit haben


.NET..<- diesen Versuch von M$ wieder alles zu &quot;vereinheitlichen&quot; mag ich gar net :(

xOOn
05.05.2002, 10:11
also ich glaube man muss nicht sagen dass kopierschutz unnuetz sind! nur wenn office einen kopierschutz hat, der unknackbar ist, wer kauft es sich dann (ueberzeugter staroffice benutzer). und willst du dein prog als standard durchsetzen musst du dafuer sorgen dass es alle bekommen!

Jan Krüger
18.05.2002, 03:30
Erstmal eins, Public-Key-Verschlüsselung hat im Schutz von Software (Checksums und Entschlüsseln der EXE) nichts verloren. Wenn der Key von der Prüfsumme der verschlüsselten EXE abhängig ist, kann man dem Programm vortäuschen, dass die Datei noch die ursprüngliche Checksumme hätte. Wenn der Key vom Activation Code abhängig ist, braucht nur einmal jemand einen zu kaufen und an einen Cracker weiterzugeben und er wird dann irgendeinen Generator schreiben, der aus dem Zufallscode und der Hardware-Info den Part ausrechnet, den man dazumischen muss, um den Key rauszukriegen oder so.

Kleine Idee, die ich mal hatte. Alle mathematisch annähernd sicheren kryptographischen Verfahren basieren auf unglaublicher Komplexität.
Ich habe mal begonnen, ein Verfahren zu entwickeln, das, abhängig von einer großen Menge zufälliger Daten, einen riesigen Programmcode mit mehreren 1000 Verschachtelungen erstellt, über die verteilt sich die Entschlüsselung der EXE (abhängig von Checksummen, Hardwarecodes vs. Activation Codes etc.) erstreckt. Dadurch, dass die verschiedenen Verschachtelungen sich je nach Code gegenseitig rekursiv und in unterschiedlicher Reihenfolge aufrufen können und das Ergebnis nicht unbedingt immer in gleicher Reihenfolge ausgegeben wird, wird es für einen Angreifer sehr, sehr schwierig, Gemeinsamkeiten zwischen zwei Durchläufen mit unterschiedlichen Codes zu erkennen bzw. den Algorithmus zu durchschauen. Desweiteren wird es sehr schwer ersichtlich, von welchen Kriterien die Verschlüsselung abhängt und von welchen nicht.

Ich habe selber einmal einen Blick auf eine Hash-Routine geworfen (die eine Seriennummer generiert), deren Assemblercode über 100 Bildschirmseiten lang war. Sämtliche Befehle beschäftigten sich nur damit, die Bitfolge in einem Buffer von 5 Bytes durcheinanderzubringen.
Dieser Ansatz bringt es natürlich nicht weit, denn nach der Ausführung dieses Teils konnte man die fertige Seriennummer einfach aus dem Speicher auslesen.

Mein Konzept ist noch nicht wasserdicht. Die Gründe dafür kann ich jetzt nicht erklären, weil ich zu müde bin.
Vielleicht ein andermal.

xOOn
19.05.2002, 11:59
warum soll sich public key nicht eignen, damit kannste sichere serial machen, du hats nen active key, und ueber den baust du die serial! du musst jedoch vermeiden dass jemand an deine exe rumbastelt!
also die exe mal zu komprimiern ist nie schlecht, dann crc, usw einfuegen icher ist das jedoch alles nicht

Jan Krüger
20.05.2002, 03:03
eben. und deswegen bringt public key auch nicht viel mehr als jeder andere algorithmus.

Codeq
20.05.2002, 04:53
was mir als &quot;enduser&quot; aufgefallen ist, das die programme am besten geschützt sind, die vortäuschen crackbar zu sein...
so nach dem motto ich gaukle dem user vor es sei ein richtiger key wohl wissentlich das es ein falscher generierter ist, funktioniere dann eine weile und verursache an wesentlichen stellen arge fehler ind zufällgigen abständen...
muss also ein verfahren sein das nur eine endliche menge von keys einer bestimmten struktur erlaubt, und nur eine kleine untermenge davon die richtigen keys beinhaltet...

ich habs bei Die siedler nur daran gemerkt das ich auf einmal sehr schnell gestorben bin ;) aber schon zu amigazeiten gabs sowas, hatte ne raubkopie und konnte immer nur zu einer bestimmten stelle spielen und war dann schlagartig am ende...
najo und windows macht das ja auch so *g* und da alle welt sich den scheiss kopiert glaubt jeder windows sei so wie es ist.. :D :D

xOOn
21.05.2002, 09:59
@Codeq
klar, jeder cracker such eigenlich nach einem punkt im programm, irgenwo musst du entscheiden vollversion/shareware, und dieser punkt wird veraendert, triffst du diese entscheidung oefter, oder zeigst du dem user sie nicht (zb, das brennen funkt nicht, oder das proggi stuerzt oft ab, ...) dann wird es schwieriger es zu knacken

Jan Krüger
21.05.2002, 16:12
ich hatte auch mal eine lösung, die es unmöglich gemacht hat, einen keygen zu schreiben, ohne einen korrekten key zu kennen. dabei konnte ich aber auf public keys verzichten.
in diesem fall wurde der eingegeben registriercode kurz auf zwei kriterien überprüft und dann dazu verwendet, teile der exe-datei umzuändern, präzise, eine XOR-verknüpfung auf bestimmte Einträge der Funktionstabelle durchzuführen.
Außerdem waren noch ein paar kleine Tricks drinnen, um diesen Fakt zu verstecken. ;)
leider kann das ganze sofort geknackt werden, sobald ein echter key im umlauf ist.

xOOn
21.05.2002, 16:34
naja das problem ist dass der cracker die exe unbemerkt veraendern kann, es ist esay einen unknackbaren code zu machen, solange die exe des progs ok ist (public key), sobald der cracker jedoch die exe veraendert fangen die probs an, und ich ueberlege bereits laengere zeit wie man das verhindern kann!
ich glaube wir sollten und darauf konzentrieren

folgende teile halte ich fuer sinvoll:
- die exe komprimieren, oder verschluesselt speichern und ein loaderproggi laden sie dynamisch!
- anti-debug timer, wenn ich einen progteil nicht innerhalb einer zeit x durchfuehre denn schiess ich das proggi ab
- die berechnung (serial ok) und die auswertung wird getrennt, also wenn ich bemerke dass die serial falsch ist, gebe ich nicht sofort ne fehlermelung aus, sondern erst nach 10 min oder so, diese teile sind mehrfach implmentiert
- die exe ist crc-geschuetzt, wobei der crc hardgecodet ist (zB #define).

was haltet ihr davon und was sollte noch veraendert werden

Jan Krüger
21.05.2002, 20:52
ich weiß, das es für einen cracker einfach ist, exe-dateien umzuändern mit debugger etc.
aber: mein code war so ausgelegt, dass er die seriennummer nur sehr oberflächlich geprüft hat und dann damit den programmcode umgeändert hat. also: wenn der cracker keine gültige seriennummer hat, weiß er nicht, wie der programmcode aussehen müsste, um zu funktionieren.

soo...
- die exe komprimieren, oder verschluesselt speichern und ein loaderproggi laden sie dynamisch!
- anti-debug timer, wenn ich einen progteil nicht innerhalb einer zeit x durchfuehre denn schiess ich das proggi ab
- die berechnung (serial ok) und die auswertung wird getrennt, also wenn ich bemerke dass die serial falsch ist, gebe ich nicht sofort ne fehlermelung aus, sondern erst nach 10 min oder so, diese teile sind mehrfach implmentiert
- die exe ist crc-geschuetzt, wobei der crc hardgecodet ist (zB #define).
- exe komprimieren/verschlüsseln: der cracker muss nur warten, bis alles entschlüsselt ist, dann ein live-image vom speicher machen, ein bisschen in den symboltabellen umändern, vielleicht noch nen kleinen loader schreiben und fertig. oder er bastelt einfach einen loader-crack, der zur laufzeit dynamisch das programm im speicher umpatcht.
- anti-debug timer bringt nichts, weil gute debugger die systemzeit anhalten.
- berechnung/auswertung trennen ist gut, um den cracker zu verwirren, aber es gibt genug debugger, die speicherzugriffe mitverfolgen können. ist die prüfroutine erstmal fertig, speichert sie ihre ergebnisse irgendwo im speicher ab und dann muss der cracker nur noch abwarten, bis der debugger einen zugriff auf die entsprechende adresse abfängt.
- crc-schutz wird durch loader-cracks umgangen.

xOOn
21.05.2002, 21:24
@JaSt

ich wollte das mit der zeit ueber
QueryPerformanceCounter & QueryPerformanceFrequency ob der debugger die zeit anhaelt habe ich leider nicht ausprobiert ;(

das mit dem speicher ist klar, du musst die ganze routine mehrmals drinnen haben, nicht das ergebnis irgenwo im speicher 2 mal haben

-----------------------
mal ne frage was glaubst du ist die beste methode

Jan Krüger
21.05.2002, 21:26
hm... ich glaube, es gibt keine beste methode. man kann sich nur in abständen immer mal wieder was neues einfallen lassen. ansonsten wird alles in kurzer zeit gecrackt werden, egal, wieviel mühe man sich gibt.
wie gesagt, meine idee ist, den validation-code mit einem postprozessor so zu bearbeiten, dass er so umfangreich wird, dass jeder darin den überblick verliert. so nach dem motto, 1000 verschiedene, teilweise rekursiv ineinander verschachtelte subs, die ständig irgendwelche variablen hin- und herschieben.

nj0y
14.06.2002, 11:08
Weiß jemand zufällig, mit welchem Algorithmus Microsoft das in Windows und Office XP gelöst hat mit der Produkt-Aktivierung? Das Verfahren ist zwar geknackt worden, aber es war dennoch recht sicher, und daß es absolut sicher ohne Hardware-Dongle nicht geht, dürfte jedem klar sein.

Codeq
14.06.2002, 11:26
selbst mit dongle ist es nich sicher...

nj0y
14.06.2002, 11:30
Stimmt. Aber wenn im Dongle relevanter ausführbarer Code steht, ist es verdammt sicher, wenn auch nicht absolut sicher ;). Jedenfalls muß man dann mindestens einen Dongle verkaufen, ehe es gecrackt werden kann :D.

Jan Krüger
14.06.2002, 14:21
naja, meine donglefreie lösung ist auch solange ziemlich sicher, bis eine person das programm gekauft hat und einen gültigen code an irgendwelche cracker weitergibt. ;)

xOOn
14.06.2002, 15:15
ein dongle ist scheisse!

und ich kenne leute, die haben autocad gekauft, nutzen jedoch die gecrakte version, weil ihnen der dongle nicht passt:eek: :eek:

im uebrigen ist es ein riesen aufwand einen dongle zu bauen und ich sicher zu implementieren, und das zahlt sich in 90% der faellen nicht aus

1. dein prog kaufen wenige leute, der dongle/einbau ins prog ist teuer und steht in keinem verhaeltniss/ ist aber sicher
2. dein prog hat jede sau und irgendwer hat dein prog gecrackt/ der schutz haette sich ausgezahlt ist aber umsonst weil bei "hasta la vista" 20 treffer angezeigt
3. dein prog ist verbereitet aber noch nicht gecrackt

also Murphy-Anhaenger schliesse ich die 3. Moeglichkeit auf, ausser bei deiner Konnkurrenz:confused: :confused:

Phoenix
10.09.2002, 15:01
Also was ihr da so schreibt ist alles ja gut und teuer doch nicht altagstauglich wie mier scheint. Doch das läst sich ja ändern.
Also zum theme wo speichere ich die Reg.Nr ist mir da doch tatsächlich so was wie >Steganografie< durchs Hirn geschossen.
Und wenn Mann alle daten in einem bild verfrachtet kann der cheater erst mal schaun wie er da rann kommt.

Zu dem einwurf das die Daten ja alle offen im speicher liegen ist mir ein Trick von nem virus eingefallen der hat teile seiner daten im Graficspeicher ausgelagert das müste doch einen tip geben das es doch mehr alls nur den Hauptspeicher gibt.
Ok es wird sicher nicht möglich sein ein Komplettes Programm zu verstecken aber zumeist wird ja auch nur der programmkern gebraucht der rest sind halt externe Rutienen und Dll's.

Es müste auch noch die möglichkeit geben genetische Codes zu generieren die sich regelmäsig um codieren und bei einer veränderung des codes nicht mehr lauffähig werden.

Also was einem alles durch die Birne zischt wenn man euer zeug liest ist schon beängstigend.

Und vergebt mir meine Sauklaue von Gramatik und Co.

CU Phoenix :D

Patrik Graf
11.09.2002, 11:44
@Phoenix:

Dann schau mal hier (http://www.coding-board.de/board/showthread.php?s=&threadid=1128) rein... :D

Viel spass beim weiter lesen... :D

Jan Krüger
11.09.2002, 20:43
verstecken bringt überhaupt nichts - schließlich kann man den gesamten programmablauf im speicher mitverfolgen und somit auch rausfinden, wo was versteckt ist und wie man drankommt.

xOOn
12.09.2002, 08:47
also ich glaube dass es nicht sehr schwer ist ein prog zu coden was es einem cracker erschwert, aber wirklich sicher zu machen ist ein prob!!

soviel wie ich weis ist das prob die entscheidung fullversion/shareware

if(xyz)
//fullversion
else
//shareware

Jan Krüger
12.09.2002, 13:29
naja, man kann natürlich den code für die vollversion verschlüsseln, aber auch das müsste das programm ja für die registrierung irgendwie wieder entschlüsseln und an der stelle kann jemand, der sich damit auskennt, einhaken. :)

Bra!NSHiT
19.04.2003, 01:21
Ich habe mir jetzt zwar nicht alle Posts angesehen aber:

100% sicher ist nichts wie ihr wisst.

Aber mit einem guten Packer wie AsProtect kann man einen Teil seines Codes mit RSA-1024 bit verschlüsseln. Das bedeutet Patchen ist tabu.
Als nächstes nimmt man noch n schönen Serial-algo rein. Mit SHA1 und n ellenlangen XOR Mist.
Dann meinentwegen noch n CRC32.

Dann sollte man ein recht sicheres Prog vor sich haben.


Tschüß

Jan Krüger
21.04.2003, 18:14
Nö. Der Experte wartet einfach, bis sich das Programm selber entschlüsselt hat und ändert dann die relevanten Codeteile direkt im Arbeitsspeicher.

Bra!NSHiT
21.04.2003, 20:07
Tja nur leider sind ja nicht alle Shareware-authoren Experten.
Die oben genannte Lösung soll nur eine einfache und trodzdem effektive Lösung darstellen.

:D

Tschüß

BadDevil
25.05.2003, 17:36
Ich finde eine Dongle Lösung ist sehr ellegant da ich darüber meine Exe teilweise zur Laufzeit ver und entschlüsseltwird, die Anschaffungskosten sehe ich auch nicht als so groß an 165€ für das erste Developerpaket incl 5 Dongles und danach jeder weitere Dongle 35€. Wenn man abfragen über den Dongle zu verschiedenen Zeitpunkten ausführt ist es schon recht sicher da der cracker meist nicht alle Funktionen des Programms austestet.

Wenn man keinen Dongle verwenden will würde ich zwar die Exedatei Packen oder Verschlüsseln aber es ist kein wirksamer Schutz ich würde die Funktionen komplett aus dem Code entfernen dann hat man keine Probleme mit Crackern und wenn ein Kunde das Programm haben will schickt man ihm das Programm per mail,post oder link.

gruß
BadDevil

Jan Krüger
25.05.2003, 22:02
Hardwareschutz ist definitiv effektiv. Achja, und mit TCPA wird's ja vielleicht billiger. ;)

Codeq
26.05.2003, 14:57
*hust*

es begab sich zu einer zeit wo man seine lohntüte noch bar in die hand bekam. zu dieser zeit kamen banken auf und warben damit das geld diebstahlsicher auf ihre konten zu überweisen und keine gebühren dafür zu nehmen. als dann die lohntüten abgeschafft wurden und alle nurnoch ihr geld überwiesen bekamen gabs saftige gebühren für überweisungen.... und niemand hat einen aufstande gemacht...

tcpa genauso... am anfang wird man geködert und alles rennt gut, wenns nurnoch pcs mit tcpa gibt kann man nichtma mehr selbst programmieren weil einem die lizenz von M$ fehlt...

solange ein hardwareschutz nicht im OS verankert ist kann man ihn immer knacken... ist leider so.. :(

belzebub
10.09.2003, 14:27
hi

obwohl das thema schon recht alt ist mal noch ein paar kleine ergänzungen:

1. du kannst einbauen was du willst, es gibt immer einen der es entfernt.
2. entfernt es keiner ist dein programm so uninteressant, das es sich nicht gelohnt hat es zu programmieren.
3. in jede gemeinheit die du einbaust und auch neu entwickelt hast wird auch der cracker treten. aber nur 1 mal. danach ist dein algorithmus nur noch makulatur.
4. je mehr du einbaust umso eher wirst du selber bei deinem 5 update daran zerbrechen.
5. mache eine kostenanalyse zwischen aufwand und nutzen und du wirst dich für den billigeren schutz entscheiden, denn je besser der schutz umso teurer wird er.

z.b. die vorhandenen dongles bieten schon einen relativ guten schutz. bloß welcher softwareherstellen nutzt auch all die funktionen in seinem code? um damit der schutz gut ist müßte er die kpl. routinen dafür neu schreiben. aber das kostet und so werden die routinen der donglehersteller genutzt. und die sind doch bekannt.

guter schutz -> teueres prg. -> interessant für cracker

auch mußt du die auswirkungen deines schutzes mal überlegen.
z.b.
- sich selbst ändernde datei bewirkt das das ding in keinem vernünftig konfigurierten netz laufen wird, denn da hat der user keine rechte exe dateien zu ändern. ( bzw. dateien im pgr pfad )

- online validierungen und checks blockt jede gute firewall.
( wer will schon ne prg haben was nur mit onlinezugang läuft, abgesehen davon das nicht jeder ne standleitung hat )

- absichtlich eingebaute fehler können dir zum rechtlichen verhängniss werden. dein prg läuft z.b ohne gültige registrierung in einem fehlermodus. der kunde merkt davon aber nichts und gibt die daten raus ( z.b statische berechnungen ) -> die brücke stürzt ein. er hat aber die ausdrucke mit den falschen zahlen. in der zwischenzeit hat er das prg - evtl auch schon vorher - gekauft gehabt. die neuberechnung bringt zwar den fehler an den tag, aber er wird sich jetzt an dich wenden. und du sagst ihm: "ja, da war doch ... " - was du ja evtl. gar nicht beweisen kannst. den richter möcht ich sehen, der dafür verständniss hat.
außerdem schadet es dem ruf, wenn ein prg fehler macht. ob so oder so.

- gehst du zu sehr in die hardware ( hier rechner ) hast du zwar für ne gewisse zeit ne relativ guten schutz, aber wehe der wird dann... ( siehe dvd )

im prg kannst du machen was du willst, irgendwo kommt immer ne abfrage gültig/nicht gültig. die kannste zwar 100 mal einbauen, hast aber nur den effekt das dein prg groß und langsam wird, es sei denn du machst es so wie die meisten programmierer: eine testroutine -> variable setzen -> an x stellen abfragen. ergibt schutzfaktor null. mußt also 100 verschiedene routinen programmieren die nicht über ein muster gesucht werden können. -> viel spaß beim programmieren.

was ist die zielgruppe eures programms und wen wollt ihr mit eurem schutz die unberechtigte nutzung schwer machen?
homeanwender oder firmen? bei jeder zielgruppe habt ihr einen anderen spielraum für möglichkeiten.
bei shareware gibt es immer ne mgl. den testzeitraum durch kpl. entferner der software neu zu setzen. irgendwo im system gibt es ne eintarg oder ne datei die auf den installationszeitpunkt verweist. und die zu finden ist kinderkram, auch wenn es irgendwo tief im system sonstwo steckt. ntfs strem ist noch wie schon gesagt ne gute möglichkeit. um damit es greift heißt es also ntfs ist vorgeschrieben. soweit so gut. als administrator frag ich dich aber, welches backupprogramm sichert die streams denn mit ?????

ihr solltet mal überlegen was der "kunde" will und womit man ihn binden kann. mit schutzsystemen, die auch für ihn immer komplizierter werden, bestimmt nicht. ne faires preis-leistungs-verhältniss und ne guten service. und wenn mir jemand sagt, das ich für ein verlorengegangenen dongle 90% bezahlen müsse, wäre mein erster weg der, das ding entfernen zu lassen und dann ab in den panzerschrank damit oder alternativ das prg gar nicht erst kaufen.

ihr könnt ja noch weiter darüber diskutieren, aber die praxis ist entscheidend. jeder der ne neuen einigermaßen brauchbaren schutz erfindet hat zumindest ne gewisse zeit ne kuh die er melken kann. ( wenn er das system verkauft ) aber als softwareproduzent bringt ihm das garnichts.
dazu seht euch die statistiken der softwareverkäufe der einzellnen produkte an. prgs haben genauso gute steigerungsraten mit oder ohne schutz mit oder ohne verfügbaren crk. ( bsp acad, da sind die crks schon vor veröffentlichung des prg draussen gewesen und es wird gut verkauft )


mfg

belzebub

Diogenes
14.09.2003, 17:34
Gute Zusammenfassung des Themas (Und das war nicht ironisch gemeint). Jetzt kann man eigentlich abschließen. (Das schon.)

Jan Krüger
15.09.2003, 19:01
Wie es mit Gewährleistung im Falle von nichtregistrierter Software aussieht, kann ich nicht genau sagen, weil mir das rechtliche Wissen fehlt. Prinzipiell kann man in seiner Lizenz immer noch einen vollständigen Haftungsausschluss unterbringen.

Ansonsten halte ich die Zusammenfassung für gelungen. Der einzige Ansatz, auf den keiner deiner genannten Punkte zutrifft ist der, den ich mir irgendwann überlegt habe. Vielleicht hab ich's schon mal hier erwähnt... die Idee war, den Code zur Überprüfung der Registrierung von einem Codegenerator mit zufälligem Sinnloscode soweit aufzublähen und zu verschachteln zu lassen, dass der Cracker irgendwann keine Lust mehr hat (zufällig generierter Code lässt sich auch so schlecht automatisch verarbeiten... ;)). Aber ob das praxistauglich ist, habe ich noch nicht untersucht.