Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm soll nur 30 Tage laufen. (https://www.delphipraxis.net/75160-programm-soll-nur-30-tage-laufen.html)

3_of_8 15. Aug 2006 16:36

Re: Programm soll nur 30 Tage laufen.
 
Also was habe ich jetzt alles gehört:
Computername: Lässt sich leicht ändern
IP-Adresse: Ändert sich automatisch (meistens) und ist nicht ganz eindeutig

Knacken ist gut, das muss man nicht mal knacken, die Methode wird von selbst nicht funktionieren.

@vlees: Wenn ichs von nem Freund habe? Wenn ich es von nem anderen PC von mir per USB-Stick geholt habe? Wenn ich es von ner Heft-CD von irgendner Zeitung habe? Wenn grad mein Internet ausgefallen ist?

vlees91 15. Aug 2006 16:39

Re: Programm soll nur 30 Tage laufen.
 
dazu schrieb ich was...

Meflin 15. Aug 2006 16:42

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von vlees91
dazu schrieb ich was...

ja, wirklich tolle Einstellung. "pech gehabt" :wall: ... so findet man bestimmt viele zufriedene Kunden... :roll:


Torpedo 15. Aug 2006 16:46

Re: Programm soll nur 30 Tage laufen.
 
Wenn das über einen Internetserver läuft braucht man nur "abhören" was der Server zurückgibt, wenn man das Programm starten darf und dann zukünftig das Programm auf einen eigenen Server, der auch auf dem eigenen Computer laufen kann, umleiten (Stichwort "hosts") und das selbe zurückgeben, wie es der echte Server getan hätte.

Oder die Methode, die wohl immer funktioniert: Cracken. Meistens muss dafür nur 1 Byte im Programm umgeändert werden.

Ich würde auch eine Demo weitergeben und wenn man die Seriennummer eingibt, verbindet sich das Programm zu einem Server im Internet, der dann diese Nummer kontrolliert. Sollte sie richtig sein, erstellt der Server eine temporäre Update-Datei, die dann vom Programm heruntergeladen wird. Diese Datei sollte dann so schnell wie möglich wieder gelöscht werden, damit sie auch nur eine Person downloaden kann, was aber natürlich nicht garantiert ist.

Cöster 15. Aug 2006 16:48

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Balu der Bär
Zitat:

Zitat von Cöster
Zitat:

Zitat von 3_of_8
[...]
Und richtig sicher ist es trotzdem nicht.

Wie kann man es denn knacken?

Indem ich die Abfrageroutinen einfach rauspatche. :roll:

Das heißt, du öffnest die Exe in Word o.ä.? Dann werden eben alle Strings nochmal verschlüsselt und der schlüssel wird in einzelne Strings zerlegt.

Balu der Bär 15. Aug 2006 16:51

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Das heißt, du öffnest die Exe in Word o.ä.? Dann werden eben alle Strings nochmal verschlüsselt und der schlüssel wird in einzelne Strings zerlegt.
Nein, mit einem Debugger (z.B. OllyDGB) oder Disassembler (z.B. W32Dasm). Diese Programme spucken mir sozusagen den Quellcode eines Programmes aus (in Assembler und nicht in einer Hochsprache) und wenn man das nötige Wissen hat kann man das Programm nach belieben verändern, unter anderem auch Funktionen komplett aus dem Programm entfernen.

3_of_8 15. Aug 2006 16:52

Re: Programm soll nur 30 Tage laufen.
 
*räusper*

In Word? :roll:

Nene, das macht man mit nem Hexeditor.

Und du kannst sagen was du willst, es gibt Mittel und Wege sowas zu umgehen. Wer das schaffen will, der schafft das auch.

Wenn große Firmen wie Microsoft keinen komplett wirksamen Schutz entwickeln können, wirst du es auch nicht schaffen.

Die Frage ist nur: Kann man den Aufwand für einen potentiellen Cracker so hoch schrauben, dass es in keinem Verhältnis zum Nutzen steht?

Torpedo 15. Aug 2006 16:54

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Cöster
Das heißt, du öffnest die Exe in Word o.ä.? Dann werden eben alle Strings nochmal verschlüsselt und der schlüssel wird in einzelne Strings zerlegt.

Man ändert nicht den Schlüssel, sondern die Abfrage. Z.B.:
Aus
if eingabe = berechnerichtigenschluessel(bla) then..
wird:
if not eingabe = berechnerichtigenschluessel(bla) then..

3_of_8 15. Aug 2006 16:56

Re: Programm soll nur 30 Tage laufen.
 
Oder man patcht gleich alles mit nop raus, was eigentlich noch besser ist.

Cöster 15. Aug 2006 16:58

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Balu der Bär
Zitat:

Das heißt, du öffnest die Exe in Word o.ä.? Dann werden eben alle Strings nochmal verschlüsselt und der schlüssel wird in einzelne Strings zerlegt.
Nein, mit einem Debugger (z.B. OllyDGB) oder Disassembler (z.B. W32Dasm). Diese Programme spucken mir sozusagen den Quellcode eines Programmes aus (in Assembler und nicht in einer Hochsprache) und wenn man das nötige Wissen hat kann man das Programm nach belieben verändern, unter anderem auch Funktionen komplett aus dem Programm entfernen.

Wusste ich gar nicht, dass es sowas gibt. Dann sind aber doch im Grunde genommen alle Programme Open Source, wenn man so einfach den Code rauskriegt.

vlees91 15. Aug 2006 17:00

Re: Programm soll nur 30 Tage laufen.
 
ja lol
im prinzip schon
aber wenn du dir das anschaust, wirst du erstmal von der datenmenge umgehauen und noch dazu sieht man da nicht sofort durch^^ (jaja ich weiß, ein prozessor siehts sofort, aber wer ist das schon?)

Balu der Bär 15. Aug 2006 17:04

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Cöster
Wusste ich gar nicht, dass es sowas gibt. Dann sind aber doch im Grunde genommen alle Programme Open Source, wenn man so einfach den Code rauskriegt.

Naja, nicht direkt. Du siehst halt nur den Assemblercode. Und den komplett zu analysieren und zu verstehen erfordert enormes Wissen und viel Zeit. Ein Cracker setzt einfach einen Breakpunkt auf die Abfrage z.B. Serialabfrage. Der Debugger springt dann direkt zum passenden Assemblercode. Je nach Stärke und Aufwand des Schutzes kann er nun die Exe bearbeiten.

Auchd dir gebe ich den Tipp mal die Forensuche zu bemühen, wurde alles schon x-Mal beredet.

3_of_8 15. Aug 2006 17:06

Re: Programm soll nur 30 Tage laufen.
 
@Cöster: Disassemblierung ist AFAIK ein Verstoß gegen das Urheberrecht.

Und wenn du schon mal Assemblercode gesehen hast, dann merkst du, dass das absolut gar nichts mit Delphi-Quellcode zu tun hat.

Aus nem a:=b div 7 * c; wird da schon was komplizierteres á la:

mov eax, [ebp-$0c]
mov ecx, $00000007
cdq
idiv ecx
imul dword ptr [ebp-$10]
mov [ebp-$08], eax

dino 15. Aug 2006 18:00

Re: Programm soll nur 30 Tage laufen.
 
wiedermal viel zu lesen, darum muss ich wieder fragen, ob es schonmal vorgeschlagen wurde, aber hatte schon jemand die Idee ein Programm zu schreiben, welches die Systemzeit innerhalb von Bruchteilen von Sekunden immer wieder auf den selben Wert setzt?

woher kennt das Programm dann noch die Zeit? bzw. ist das nicht idiotensicher gecrackt?

Balu der Bär 15. Aug 2006 18:04

Re: Programm soll nur 30 Tage laufen.
 
Nungut wäre möglich.

Aber denk mal nach, ich möchte nicht die ganze Zeit ein Tool laufen haben das mit die Systemzeit/-datum immer wieder auf den gleichen Wert zurücksetzt, da ich a) auch mal wissen möchte wie spät es ist / welches Datum wir haben und b) ich mal wissen möchte wann Dateien erstellt wurden. Es wäre wohl unzumutbar nur wegen einem Programm seinen Rechner so zu verschandeln.

vlees91 15. Aug 2006 18:32

Re: Programm soll nur 30 Tage laufen.
 
es gibt programme (z.B. NoLimit oder daykill), die sowas einfach lösen: man startet nicht die trial sofort, sondern über das programm (also nolimit oder daykill) , welches dann die systemzeit auf die installationszeit (oder eine andere gültige zeit) setzt, dann wartet bis das programm gestartet ist und anschließend die systemzeit zurücksetzt zum echten.
sowas bringt natürlich nichts wenn die startzeit der installation gespeichert wird und wielange das programm bereits lief...

noHuman 15. Aug 2006 19:00

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Balu der Bär
Nungut wäre möglich.

Aber denk mal nach, ich möchte nicht die ganze Zeit ein Tool laufen haben das mit die Systemzeit/-datum immer wieder auf den gleichen Wert zurücksetzt, ...

Für sowas gibt es ein Crackertool namens FakeDate.
Dieses startet die Exe und wenn das Programm die Systemzeit wissen will (also z.B.: GetTickCount, etc),
gibt FakeDate die Systemzeit in der fakedate.ini drin ist zurück.

Ich hab es nur zu Testzwecken einmal ausprobiert, funktioniert einwandfrei.

EDIT: Mist, das kommt davon, wenn man die Seite nicht neuladet... :wall:

MfG, noHuman

Meflin 15. Aug 2006 19:22

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von noHuman
[Ich hab es nur zu Testzwecken einmal ausprobiert, funktioniert einwandfrei.

Darauf fällt aber auch kein wirksamer Trialschutz mehr rein :roll:

Ich sage es nochmal: jeder noch so perverse Vorschlag den ihr euch hier aus den Fingern saugen werdet wird keinen 100%igen Schutz geben. Er wird IMMER, WIRKLICH IMMER umgehbar sein.

Wenn man mit wenig Aufwand einen dennoch recht hohen Schutz haben möchte, verwendet man eben Komponenten von Leuten die sich schon länger mit dem Thema beschäftigen. Tonnenweise davon habe ich ja bereits auf der ersten Seite dieses Threads verlinkt :roll:

Alles, was ihr euch in einer halben Stunde ausdenken könnt, wird einem "Angriff" keine 10 Minuten standhalten...


pertzschc 15. Aug 2006 20:00

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Balu der Bär
Gewisse Funktionen in deinem Programm deaktivierst du per Compilerschalter, so kannst du wenigstens sicher sein das niemand die zeitbegrenzte Version knackt.

Könntet Ihr mal das Vorgehen etwas detailierter beschreiben bitte?

- Wo definiert Ihr den Compilerschalter? (Projektoptionen in Delphi,...)
- Klemmt Ihr die Gui-Elemente ab (z.B. Menüeinträge) oder nur die Ereignismethoden?
- Wie managt Ihr die unterschiedlichen Sourcecode-stände?

Danke+Gruß,
Christoph

Cyberbob 15. Aug 2006 20:29

Re: Programm soll nur 30 Tage laufen.
 
Compilerschalter werden im Quelltext definiert.

Ich würde auch den procedure abschalten, da diese mit nem Resource-Editor wieder freigeschaltet werden können.
Wenn die prozeduren "ausgeklammert" werden, werden diese nicht mitcompiliert. es kann also auch nicht wieder freigeschltet werden!
problem bei dieser methode ist, das der benutzer des programmes, sollte er es weiter benutzen wollen, auch ein neues programm verwenden muss, in der alle funktionen vorhanden sind. diese kann er allerdings auch wieder weitergeben!



Alles in allem kann man sagen, wo funktionen vorhanden sind, kann man sie auch verwenden. Es gibt keine 100% prozentige lösung, die nicht geknackt werden kann!

Balu der Bär 15. Aug 2006 21:56

Re: Programm soll nur 30 Tage laufen.
 
Einen wirklich klitzekleinen Einstieg findest du hier.

Zur Zeit habe ich leider kein Delphi installiert, in der Delphi-Hilfe sollte aber eigentlich alles über Compilerschalterzu finden sein (hoffe ich jedenfalls).

MuTzE.Y85 15. Aug 2006 22:14

Re: Programm soll nur 30 Tage laufen.
 
Schau mal hier: TRegware :wink:

Vllt hilft dir das.

Jelly 15. Aug 2006 22:26

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von MuTzE.Y85
Schau mal hier: TRegware :wink:

Zwar nicht gratis, aber nach meiner Erfahrung wirklich gut: Icelicense

Und der Grund für meine Behauptung steht ab hier. Der Schutz ist bis heut noch speziell an dem Beispiel nicht geknackt.

Fakt ist und bleibt aber trotzdem folgender... Einen 100% Schutz gibt es nicht, man kann nur den Aufwand drastisch erhöhen, ein Programm zu knacken. Ob sich das für kleinere Sharewareprogramme lohnt, bleibt zu bezweifeln...

Ich würd aber keinesfalls auf eine selbstgebastelte Lösung schwören, wenn ich mich nicht vorher wirklich mit Verschlüsselung und ähnlichen Themen auf matematischer Ebene auseinandergesetzt habe. Da investier ich doch lieber in 130 € für eine fertige Software, die meine Programme schützt.

MuTzE.Y85 15. Aug 2006 22:31

Re: Programm soll nur 30 Tage laufen.
 
Tschuldige, aber versteh nicht ganz, was du mir damit sagen willst. :gruebel:

Jelly 15. Aug 2006 22:37

Re: Programm soll nur 30 Tage laufen.
 
Ich hab lediglich eine Software verlinkt, mit der du Shareware Programme limitieren kannst, unter anderem auf zeitlich auf 30 Tage.

MuTzE.Y85 15. Aug 2006 22:40

Re: Programm soll nur 30 Tage laufen.
 
Achso, dachte nur, weil du mich zitiert hast, dass du mir irgendwas damit sagen wolltest ^^

Jelly 15. Aug 2006 22:42

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von MuTzE.Y85
Achso, dachte nur, weil du mich zitiert hast, dass du mir irgendwas damit sagen wolltest ^^

Nee, sorry... Hab nur noch ne weitere Alternative angeboten, und anschliessend halt noch bischen über Softwareshutz lamentiert :-)

MuTzE.Y85 15. Aug 2006 22:46

Re: Programm soll nur 30 Tage laufen.
 
Das mit dem 100%igen Schutz stimmt schon, aber Regware ist für Freeware eigentlich ganz ordentlich, find ich! Weiss nich, ob es schwer zu knacken ist, ich kann sowas ja nich, sonst würd ich es mal an einem Beispielprogramm probieren.

marcelwhip 17. Aug 2006 20:16

Re: Programm soll nur 30 Tage laufen.
 
nochmal zu der Idee mit den reg-schlüsseln zurück
wie verhält es sich denn, wenn man dem programm verbietet daten in die registery zu schreiben?
ich denk an z.b. kaspersky; wird gefragt, ob man dem programm gestattet, auf die reg zuzugreifen

Meflin 17. Aug 2006 20:34

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von marcelwhip
nochmal zu der Idee mit den reg-schlüsseln zurück
wie verhält es sich denn, wenn man dem programm verbietet daten in die registery zu schreiben?
ich denk an z.b. kaspersky; wird gefragt, ob man dem programm gestattet, auf die reg zuzugreifen

um es mal wie vlees zu sagen: dann hat der user eben pech gehabt :lol:
wobei ich wenig sinn darin sehe einem Programm den KOMPLETTEN zugriff auf die Registry zu verweigern - beim Autostart sehe ich das ja noch ein, aber sonst...


yankee 17. Aug 2006 21:11

Re: Programm soll nur 30 Tage laufen.
 
Ich finde ihr macht euch zu viel stress :-).

Mal im Ernst: Wir haben geklärt, dass der Anwedner, wenn er Programmierer ist alles umgehen kann. Entweder die Registrywerte alle manuell löschen (nachgucken auf welche registry Werte das Progranmm zugreift und die alle löschen) und neuinstallieren. Oder wenn die Zeit übers Internet abgerufen wird mit Ethereal rausfinden, was da so an traffic ausgetaucht wird und danach alles abfangen und manipulieren.
Mann kann es dem Benutzer nur schwer machen, aber nicht unmöglich.

Ein regschlüssel wird für den ottonormalverbraucher reichen. Und der bessere versteht davon nichts. ich bin zwar gegen sowas (erzeugt ewiger Datenmüll in der Registry. Einer der Gründe für mich alle paar Monate mal wieder c: zu formatieren) aber eine bessere lLösung habe ich auch nicht :-(.

Hador 17. Aug 2006 21:45

Re: Programm soll nur 30 Tage laufen.
 
Die beste Lösung ist einfach eine Funktionsbeschränkung in der Demoversion, da dies sehr einfach zu machen ist, es nicht umgangen werden kann und keinen Datenmüll erzeugt.

Cyberbob 17. Aug 2006 23:39

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von yankee
...(erzeugt ewiger Datenmüll in der Registry. Einer der Gründe für mich alle paar Monate mal wieder c: zu formatieren)...

Es gibt aber auch Programme, die während der Installation eines Programmes alles mitloggen und bei der Installation auch diese Schlüssel wieder zurücksetzen/löschen. Sole Logdaten könnte man dann auch wieder verwenden, um das Programm zu täuchen oder auszutricksen.

3_of_8 18. Aug 2006 12:04

Re: Programm soll nur 30 Tage laufen.
 
Ich glaub das machen die meisten Installer, die in die Registry schreiben können - schließlich mag es niemand gerne, wenn Programme nach dem Deinstallieren noch Registrymüll hinterlassen.

smart 18. Aug 2006 14:14

Re: Programm soll nur 30 Tage laufen.
 
Hallo!

Also, ich habe das jetzt so gemacht. Ich schreibe das Datum in die Registry, aber verschlüsselt. Da dem Anwender nicht bekannt ist, wie ich das Datum verschlüsselt habe, dürfte das ganze ein wenig sicher sein.

Gruß
Heike

Balu der Bär 18. Aug 2006 14:17

Re: Programm soll nur 30 Tage laufen.
 
Man kann die Abfrage (wo du aus der der Registry liest) einfach wegpatchen. ;)

freak4fun 18. Aug 2006 14:19

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Balu der Bär
Man kann die Abfrage (wo du aus der der Registry liest) einfach wegpatchen. ;)

Ist dieses "Wegpatchen" nicht ein Todschlagargument"? Man kann doch alles wegpatchen, oder etwa nicht? :stupid:

Mfg
freak

Meflin 18. Aug 2006 14:20

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von Balu der Bär
Man kann die Abfrage (wo du aus der der Registry liest) einfach wegpatchen. ;)

mensch balu, ich glaube (hoffe) inzwischen hat JEDER hier begriffen dass nichts unknackbar ist :zwinker:


Balu der Bär 18. Aug 2006 14:20

Re: Programm soll nur 30 Tage laufen.
 
Zitat:

Zitat von freak4fun
Ist dieses "Wegpatchen" nicht ein Todschlagargument"? Man kann doch alles wegpatchen, oder etwa nicht? :stupid:

Scheinbar schon. :stupid:

DGL-luke 18. Aug 2006 14:26

Re: Programm soll nur 30 Tage laufen.
 
naja, es gibt auch mittel gegen das wegpatschen. z.b. checksumme der exe. die überprüfung dieser checkssumme kann man natürlich auch wegpatchen, sollte also mehrmals und (c&p schutz) auf unterschiedliche weise erfolgen.... wenn man denn will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz