Autor Beitrag
Mr.B
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 26.03.05 12:46 
Hi.

Ich möchte mein Programm mit einem Kopierschutz (ich weiß ich weiß ... ich kenn das leidige Thema) versehen.

Nun, folgende Überlegung:
Man sorgt dafür das die komplette Adresse des Käufers in das programm rein "compiliert" wird. z.B.:


FIRMA
VORNAME NAME
STRAßE HAUSNUMMER
PLZ ORT
LAND

TEL
FAX
EMAIL
WEB


Man wird dann nur noch über das internet verkaufen können.
Außerdem sollten die daten gut verschlüsselt im Programm liegen und ... UNPATSCHBAR sein :wink:
Das ganze kann man dann auch noch mit den üblichen oder nichtüblichen Kopierschutzverfahren verbinden.
Aber ich denke mal das die Hemschwelle das Programm (wenn man es gekauft hat) weiter zu geben relativ groß ist.
Was haltet ihr davon

Gruß B
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Sa 26.03.05 12:52 
Hallo und :welcome:

Nun, schlussendlich wird es ja in einem Label ausgegeben. => Einige Assemblerbefehle ändern und dort steht was anderes drin... Ich muss die Adresse nicht unbedingt decodieren können... Die verschlüsselten Daten kann ich ja dann noch löschen, damit die Originaladresse nicht mehr drin ist. Diese zu finden sollte für gute Hacker kein Problem sein. Ausserdem nützt verschlüssenln nicht viel, weil der Decodier-Algorithmus auch in der Exe drin ist.


Zuletzt bearbeitet von delfiphan am Sa 26.03.05 12:53, insgesamt 1-mal bearbeitet
Jailbird
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 127

Windows XP Pro SP2
Delphi 7 Professional
BeitragVerfasst: Sa 26.03.05 12:52 
Der Aufwand ist zu gross. Zudem ist nichts unpatchbar
Mr.B Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 26.03.05 12:57 
hier mal einpaar links zum thema:

:arrow: www.kms-medienservice.de/kopierschutz.html
:arrow: www.mirage-systems.de
:arrow: www.sdprotector.com

kennt ihr die ... was haltet ihr davon ?

@Jailbird
:arrow: hab das mit dem unpatchbar ironisch gemeint.

Moderiert von user profile iconraziel: Beiträge zusammengefasst.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Sa 26.03.05 13:11 
Man kann nichts 100% sicher machen... Ausser wenn es die Hardware verbietet -- aber dann braucht es spezielle Hardware; dann ist dein Programm aber nicht rückwärtskompatibel. Siehe TCPA. Wurde in zwischen wahrscheinlich wieder umbenannt.
ims
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 34

Win 98, Suse 9.0
D5
BeitragVerfasst: Sa 26.03.05 13:46 
:D hallo,
ich hab da mal eine Idee, ich weiß aber nicht ob dies umsetzbar ist,weil mir dazu noch die Programierfähigkeiten fehlen.
Man könnte die vielleicht die Daten in der Sytemsteuerung auslesen,wo steht auf welchen Name das Betriebssytem registriert ist. Aus diesem Namen könnte man doch einen Schlüssel herstellen.
Der Nutzer müsste nur sich mit seinem Name registrieren beim Hersteller und dieser würde das Passwort generieren.
Der Nutzer gibt das Passwort in seinem Programm ein und das Program vergleicht ob das ein gegebene Passwort mit dem Passwort
welches aus dem Name (aus der Systemsteuerung)übereinstimmt.
War nur eine Idee, ich dacht es könnte vielleicht weiter helfen.
:roll: :D :)
Harry M.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Sa 26.03.05 14:00 
prinzipell schon möglich aber es gibt da den ein oder ander hacker dem das auffällt und der schreibt das einfach einen keygen dazu und fertig is das ganze...
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 26.03.05 14:07 
Diese Kopierschutzdiskussionen führen immer zum gleichen Ergebnis: Einen sicheren, reinen Softwareschutz gibt es nicht.
Letztendlich wird der Schutz im Programm nämlich zur Überprüfung (was auch immer für komplizierte Algos angewandt wurden) immer einen Vergleichsoperator benutzen (meistens =).
Und den kann man - so traurig wie es ist - in der exe durch einen anderen (<>) austauschen.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 26.03.05 14:08 
richtig! und wenn das mal demonstiert haben willst musste nur nen link zu deinem prog posten dann versuch ich mich daran mal :P

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Sa 26.03.05 14:22 
Soooo einfach ist das nicht immer. Wenn relevante Programminitialisierungsteile mit der Passwortüberprüfung verwoben ist, kann man die nicht soo einfach voneinander trennen. Aber mit mehr oder weniger Aufwand sollte es immer möglich sein...
Mr.B Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 26.03.05 14:45 
Kann jemand was zu den links die ich gepostet hab was sagen ?
Hat jemand eine dieser angebotenen Kopieschutzverfahren schon erfolgreich umgehen können ?

B
Codehunter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 28.03.05 20:24 
Das Geheimnis besteht darin, den potentiellen Cracker zu verwirren, auf eine falsche Fährte zu locken. Zum Beispiel einige gut plazierte Abfragen wie

if LizenzNummer <> Generalschlüssel then ShowMessage('Lizenz ungültig');
die zwar irgendwas tut aber mit dem eigentlichen Schutz nix zu tun hat. Dann gibt es auch noch so Gemeinheiten wie selbstmodifizierenden Assemblercode oder EXE-modifizierende Installer, die bei jeder Installation an unwichtiger Stelle im EXE-Binärcode einige Bytes verändern. Ein Hacker wird dadurch beim simplen FileCompare auf eine falsche Spur gelockt.

Der beste Freund der Cracker ist eine effiziente Programmierweise des Softwareherstellers. Je mehr Spaghetticode man in der Abteilung Kopierschutz hat umso schwieriger wirds.

Lustig ist auch, in die Schlüssel irgendwelche Einsprungadressen für DLL's einzubeziehen. Patcht man da was krachts beim Laden der DLL.

Der eben hier diskutierte Ansatz einer personalisierten Binärdatei ist auch gut. Herstellerseitig präpariert mit einer Art ID, welche aber nirgends softwareseitig zur Runtime abgefragt wird. Der Cracker hat so keinen Anhaltspunkt, wo er nach der ID suchen soll. Ist eine Kopie im Umlauf, findet man so die ursprüngliche Quelle der Kopie.

Allerdings kann man solche "Beweise" kaum bis gar nicht vor Gericht verwenden. Bleibt also nur, den entsprechenden "Kunden" zum "Ex-Kunden" zu machen.

Der beste Schutz ist wohl eine gute Weiterentwicklung mit kurzen Update-Zyklen bei denen die kompromittierten Komponenten ersetzt werden und neue Schutzmethoden verwendet werden (Konzeptänderung). Das erfordert aber auch eine sorgfältige Beobachtung der Cracker-Szene.

Zu den geposteten Links: Laserlock von KMS kam bei uns mal bei einer einzigen CD-Pressung zum Einsatz. Ging gehörig schief, die ganze Pressung war im Eimer. Außerdem sind die technisch längst überholt. Wer mit C*oneCD rangeht merkt gar nicht mehr daß da ein Schutz sein soll. Also lieber Finger weg von Systemen, die auf dem Verbiegen von CD-Standards aufsetzen. Außerdem erfordern die immer gepreßte Datenträger. Wer macht das heutzutage noch?

_________________
Projekt DelphiWorks: aktuelle Version 1.4
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mo 28.03.05 21:15 
Zitat:

if LizenzNummer <> Generalschlüssel then ShowMessage('Lizenz ungültig');

bringt was? wenn die message nie aufgerufen wird wird man als cracker auch net da nach schaun, wenn sie aufgerufen wird weiß man schon das man in der nähe des codes ist

Zitat:

Dann gibt es auch noch so Gemeinheiten wie selbstmodifizierenden Assemblercode.

glaub das wird kein delphi normal programmierer einbauen können

Zitat:

oder EXE-modifizierende Installer

bringt so rein gar nichts wofür gibbet patternscan


Zitat:

Je mehr Spaghetticode man in der Abteilung Kopierschutz hat umso schwieriger wirds.

desto mehr probleme hat man auch später wenn dann einer nicht ganz in ordung, war, selbst UPX läuft auf manchen rechner nicht gut, andere packer wie aspack funzen auch net überall

Zitat:

Lustig ist auch, in die Schlüssel irgendwelche Einsprungadressen für DLL's einzubeziehen. Patcht man da was krachts beim Laden der DLL.

wie gut das man die einsprungsadressen nicht patchen muss, ausserdem würde dann nur der schlüssel fasch sein und nich die dll crashen

Zitat:

Der eben hier diskutierte Ansatz einer personalisierten Binärdatei ist auch gut

einziger vielleicht richtige punkt, hat man aber 2 mal die selbe datei von 2 verschiedenen leuten könnte man das auch wieder rausfinden, ausserdem reicht nen simpler packer (namen nenn ich mal nicht) dann ist die exe selbst für den hersteller unkenntlich gemacht das der auch die daten nicht mehr findet...

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 28.03.05 22:43 
Der einzig brauchbare Kopierschutz ist ein beschissenes Programm mit ner Bugdichte, von der M$ nur träumt ... Ansonsten ist jeder Kopierschutz IMMER vergebens.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Harry Hunt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Di 29.03.05 07:30 
Ich bin zu diesem Thema vor einer Weile zu dem Schluss gekommen, dass der einzige sinnvolle Kopierschutz das altbewährte System mit den Seriennummern ist. Jeder Käufer erhält eine Seriennummer, die bei der Installation oder beim ersten Start der Software eingegeben werden muss und nur danach läuft das Programm. Das schreckt alle Leute ab, die sich durch einen Kopierschutz vom Raubkopieren abhalten lassen, und alle anderen klauen das Programm sowieso.
Der Vorteil liegt auf der Hand: ein Seriennummersystem kostet praktisch gar nichts wärend z.B. schon ein Online-Aktivierungssystem einen Server, ein SSL-Zertifikat und entsprechende server-seitige Software, Datenbanken usw. voraussetzt.

Bestes Negativbeispiel in diesem Zusammenhang: Das Steam-System von Valve (Half Life 2). Die Entwicklung von Steam hat bestimmt jede Menge Geld gekostet, außerdem muss Valve natürlich einige Server haben um mit der Flut der Anfragen fertig zu werden.
Trotzdem (oder gerade deshalb), gibt es natürlich Cracks für das Spiel. Das Geld was Valve mehr verdient, weil möglicherweise weniger Leute das Spiel raubkopieren, haben Sie mit Sicherheit doppelt und dreifach in die Entwicklung und Infrastruktur des Systems gesteckt. Im besten Fall also ein Nullsummenspiel, alles zu lasten des ehrlichen Kunden, der sich stundenlang durch online-registierung und wasweißichwas klicken muss (der Raubkopierer lacht sich ins Fäustchen, weil der den ganzen Aktivierungsmist wahrscheinlich mittels Crack umgehen kann).
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Di 29.03.05 08:55 
Hallo,
ich halte von Kopierschutzmechanismen gar nichts, da sie (wie bereits erwähnt) niemals 100% sicher sein können. Da Arbeit, die man sich als Programmierer macht, wäre viel zu groß. Und ich denke mit Sharewareprogrammierung ist sowieso noch keiner reich geworden. Entwickelt man also eine größere Software, so wird es unwahrscheinlich, dass diese mal einfach so geklaut wird. Denn wenn eine Software im Wert von Adobe Photoshop irgendwo auf einem Monitor flimmert, guckt man schon etwas genauer hin. Außerdem würde ich (und ich gebe zu auch schon Software gecrackt zu haben - nicht nachmachen liebe Kinder) ein Programm, dass mir wirklich gefällt und einen angemessenen Preis hat auch kaufen und sei es nur, um dem Programmierer zu zeigen, dass er auf dem richten Weg ist. Betrachtet man die andere Seite, so ist da der Programmierer, der Wochen gebraucht hat einen "sicheren" Kopierschutz zu entwickeln bzw. sich für verhältnismäßig viel Geld eine fertiges Softwarepacket gekauft hat. Ist das Programm in großem Maße veröffentlich wurden, so kann er spätestens nach einem Monat mal nach einem Crack für seine Arbeit suchen - und wahrscheinlich auch fündig werden. Die Zeit/das Geld einen Kopierschutz zu entwickeln ist also nichts wert.
Nochmal zu dem Namen: Auf eigener Erfahrung ist es mir eigentlich ziemlich egal, ob in einem Programm mein Name steht - oder der meiner Nachbarn. Wenn ich mich von sowas abschrecken lassen würde, dann hätte ich das Programm längt legal gekauft.

Gruß,
maxk

PS: Sicherheitshalber: Sollte dieser Beitrag falsch verstanden werden, so bitte ich um Entschuldigung. Ich bin kein Befürworter des Crackens von Software und möchte auch keinen zu einer solchen Tat anstiften. Ich wollte lediglich ausdrücken, dass es unmöglich ist eine Software sicher zu machen und dass sich die Arbeit nicht lohnt.

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 29.03.05 11:33 
Es gibt eine relativ gute Methode mit der man zwar das Cracken nicht verhindern kann, aber sie hält die Menge unten. Man verändert sein Programm täglich und kompiliert es immer wieder neu. Somit hat man jeden Tag eine neue Version und die zu Patchen wird schwer. Auf Crackseiten finden sich nur die Cracks und nicht die passenden Programme dazu. Finde dann die passende Programm Version zu den verfügbaren Cracks, wenn auf deiner Downloadseite täglich neue Versionen zu finden sind. Es ist so gut wie unmöglich. Die Cracks sind dann nutzlos, denn die passen nicht zu dem Programm.

Was Serials angeht, so kann man wunderbar das Internet nutzen. Die Anzahl der Serialz Seiten scheint groß zu sein, aber 90% aller Seiten nutzen die gleiche Datenbank. Du solltest also die Seiten kennen und alle gefundenen Serialz in einer Liste im Internet verfügbar haben. Dann einfach beim Programmstart ins Internet gehen und die Liste laden. Ist die eingegebene Nummer eine aus der Liste, dann ist es eine illegale Nummer und wird nicht akzeptiert. Serials im Internet sind dann nutzlos. Zumindest für Leute mit Internet.

Versuch es nicht unmöglich zu machen, denn das gelingt dir nicht. Versucht es so schwer wie möglich zu machen. Du wirst nicht verhindern, daß es zwei oder drei Leuten gelingt dein Programm kostenlos zu nutzen, aber der Rest wird aufgeben.

Zu deiner ersten Idee mit dem einkompilierten Namen. Die Idee ist nicht schlecht, aber auch nicht neu. Allerdings kann es sein, daß dich das mehr kosten wird als es wert ist, denn wenn du nicht bereit sein wirst alle Leute zu verklagen die eine illegale Version besitzen, dann ist der einkomplierter Name nichts wert.

_________________
Popov
Codehunter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 29.03.05 12:27 
@uall@ogc: Du bist dem Thema Kopierschutz gegenüber ziemlich negativ eingestellt, kann das sein? Das waren nur Vorschläge, um es schwieriger zu machen ein Programm zu cracken. Dabei meine ich nicht explizit ein Exemplar einer EXE sondern ein Programm, Produkt oder wie du das auch nennen willst. Du gehst immer davon aus, daß ein einmal gecracktes Programm kompromittiert ist. Ein Crack ist nicht viel wert bzw. kann nicht viel Schaden anrichten wenn er nur auf einem oder 0,1% aller Rechner funktioniert. Das sollte man als Entwickler anstreben. Nicht eine EXE ultimativ sicher zu machen sondern das Produkt als solches auf dem Markt profitabel zu halten.

@Popov: Das war ja auch schon mein Reden, die Update-Zyklen klein zu halten. Es gibt da ein gutes Beispiel: Die Firma CADSoft (cadsoft.de) hat ein Platinenlayout-Programm namens Eagle. Davon kommen alle paar Wochen neue Minor-Releases raus. Bei Eagle werden prinzipbedingt oft Layouts zwischen unterschiedlichen Software-Installationen ausgetauscht. Eagle verpackt nun einige Lizenz-Infos in die Dateien. Layouts, die auf gecrackten Installationen erzeugt wurden, lassen sich auf anderen Installationen nicht mehr öffnen. Das Hauptprogramm an sich wird relativ häufig gecrackt. Damit hat sich CADSoft wohl inzwischen abgefunden. Aber der Aufriß, jede Ausgabedatei separat zu patchen ist den meisten ("Cracked Edition"-) Anwendern zu groß.

Fazit: Man muß Cracker und Anwender gecrackter Installationen gleichermaßen ärgern. Cracker am besten durch kurze Produktzyklen mit jeweils interessanten Neuerungen für die Anwender. Der durchschnittliche Anwender nimmt immer gern kostenlose Updates wenn er neue Funktionen bekommt. So hinken die Cracker immer hinterher, was wieder die Anwender gecrackter Versionen ärgert.

Gecrackte Installtionen müssen auf irgendeine Weise mehr Arbeit machen als ordentlich lizensierte Installationen. Die Lösung von CADSoft finde ich schon recht gut gelungen.

Letztlich kommt es auf den Kreis der potentiellen Kundschaft an. Spricht man mit seiner Software jugendliche Spielefreaks an muß man sich sicherlich mehr Gedanken machen als wenn es sich um einen Strickmuster-Designer handelt, der üblicherweise von Rentnern eingesetzt wird. Absatzzahlen spielen auch eine Rolle.

Der Entwickler braucht neben programmiererischen Fähigkeiten auch die Phantasie, ungewöhnliche Wege zu gehen um sich seine Brötchen zu sichern.

_________________
Projekt DelphiWorks: aktuelle Version 1.4
I.MacLeod
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 109



BeitragVerfasst: Di 29.03.05 16:37 
user profile iconuall@ogc hat folgendes geschrieben:
bringt was? wenn die message nie aufgerufen wird wird man als cracker auch net da nach schaun, wenn sie aufgerufen wird weiß man schon das man in der nähe des codes ist


Ich bin kein Profi, aber imo müsste man doch erstmal nach dem Lizenz-falsch-String (bzw. eine Referenz auf ebendiesen) suchen, um überhaupt einen Anhaltspunkt für die Position des Codes zu bekommen, oder irre ich mich da? :P

user profile iconuall@ogc hat folgendes geschrieben:
glaub das wird kein delphi normal programmierer einbauen können


Ab und zu mal ein jz in jnz / add in sub / blobb in blubb umzuwandeln sollte man wohl gerade so noch hinbekommen.

user profile iconuall@ogc hat folgendes geschrieben:
desto mehr probleme hat man auch später wenn dann einer nicht ganz in ordung, war, selbst UPX läuft auf manchen rechner nicht gut, andere packer wie aspack funzen auch net überall


Hier versteh ich den Zusammenhang von Exe-Packern und Spaghetticode nicht ganz.

_________________
{$APPTYPE CONSOLE}uses SysUtils;const a='{$APPTYPE CONSOLE}uses SysUtils;const a=%s;begin write(Format(a,[#39+a+#39]))end.';begin write(Format(a,[#39+a+#39]))end.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 29.03.05 16:51 
das sind aber net die einzgigen probleme, meist kann man das prog laden, bekommt net fertigen key oder generator, falls es was mit der registry is und fertig, cracks gibts zu hauf, wenn es bis jetzt jemals etwas gab, zu dem nicht ein keygenerator oder ein crack erstellt wurde um es illegal zu beziehen und zu nutzen verliere ich meinen glauben, die weltbesten programmierer arbeiten an besseren lösung, nicht an perfekten, weil es diese nicht gibt, leider :(