Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Compilereinstellungen gegen Cracks? (https://www.delphipraxis.net/109614-compilereinstellungen-gegen-cracks.html)

Ares 4. Mär 2008 15:53


Compilereinstellungen gegen Cracks?
 
Hallo!

Gibt es eigentlich Compilereinstellungen, die das Cracken eines Programmes schwerer oder leichter machen? Gibt es z.B. Einstellungen bei denen Variablen-, Methoden- oder Klassennamen nicht aus der EXE ermittelt werden können, aber anderen Einstellungen aber schon?

Mir ist bewusst, dass man nur durch Einstellungen am Compiler kein Crack-sicheres Programm erstellen kann. Aber wenn man den Crackern die Arbeit durch bestimmte Mittel zumindest etwas schwerer machen kann, wäre dass ja schon etwas...

Besten Dank
Ares

DMW 4. Mär 2008 17:15

Re: Compilereinstellungen gegen Cracks?
 
Da die VCL umfassenden Gebrauch von der RTTI von Delphi macht, wirst du schon auf die VCL verzichten müssen, falls dich das ernsthaft stört. Ebenso mußt du auf das Sprachfeature selbst verzichten. IIRC gibt es einen Compilerschalter, der RTTI für eine Klassendeklaration deaktiviert.

Gewöhnlich ist es aber eher unproblematisch, daß Variablennamen etc. aus dem GUI-Code im Binary enthalten sind, da dieser nicht der sensitive Teil eines Programmes ist. Das Verbergen von Implementationsdetails dürftest du daher auf die empfindlichen Codestellen beschränken können.

TurboMartin 4. Mär 2008 17:31

Re: Compilereinstellungen gegen Cracks?
 
Eine exe-Datei ist in 4 Teile gliederbar:

1. Nötige informationen für MS-DOS
2. PE-Header
3. Section-Header
4. Die einzelnen Sectionen

Der 4. Teil ist wiederum in die verschiedene Sectionen gliederbar. Die kannst du nicht einfach verschlüsseln oder ähnliches. Variablen stehen in .data , Konstanten in .rdata und der Programmcode in .text . Je nachdem, was Du brauchst kannst Du einfach ein Programm nehmen, welches dir den Header anzeigt und dann zu den Offsets, die in 3. angegeben sind springen und einfach auslesen. Somit ist da nichts mit Cracksicher machen.

Wenn Du mehr Lesestoff suchst, schau mal in Microsofts WHDC.

devidespe 4. Mär 2008 17:45

Re: Compilereinstellungen gegen Cracks?
 
Fürs erste sollte man sämtliche Debug-Logs deaktivieren. Das geschieht in den Projektoptionen.

Das ist soweit mir bekannt der einzige "Schutz", wenn man das so nennen mag. Es gibt hier noch verschiedene Programme (etwa ASProtect, http://www.aspack.com/asprotect.html), welche die Exe mit zusätzlichen Schutzfunktionen versehen, aber damit hat man trotzdem keinen 100%tigen Schutz und im schlimmsten Fall erhält man während der Programmausführung unangenehme Nebeneffekte.

stoxx 4. Mär 2008 18:07

Re: Compilereinstellungen gegen Cracks?
 
außer, dass es vielleicht verschiedene Ansichten gibt, kann man einiges unternehmen.
(manche gehen davon aus, wenn ein Programm leicht kopierbar wird, erst dann findet es verbreitung und wird erfolgreich ...)

Aber man kann so einiges machen, ich hab schon eins zwei Leute mal mein Programm zum cracken gegeben. Aber keiner hat es zu Ende getan.
Auch "Brekki" hier im Forum hab ich es mal aus Spaß gegeben, aber ist dann im Sand verlaufen.
Es sagen zwar immer alle, sie könnten es leicht cracken, aber nach eins zwei Tagen ist dann die Lust vergangen :)

Und genau darum gehts.
Du solltest es nicht besonders schwer machen wollen, sondern besonders arbeitsaufwändig!. denn clever sind sie alle. Aber die meisten sind faul :-)
das heißt, wenn Du wirklich Dein Programm irgendwie sicher haben willst ... dannn . .. Viel und oft irgendwas prüfen.
(NATÜRLICH nicht mit funktionen, am besten den Code immer direkt einbinden. per Inc Dateien. Oder wenn geht per inline.
Vor jeder Button Click procedure die Seriennummer checken, oder sonstwas, was Du machen willst.
Auch hier, immer creativ sein.
Eine lustige Sache fand ich auch ganz nett .. eigene Programmierfehler !!
Manchmal gibt es Fehler im Programm, da findet man schwer die Ursache. Ich hatte mal was, da stürzte das Programm sehr viel später nach der eigentlichen Ursache im Quelltext ab ...
Nun ja .. ich hab lange gebraucht um es zu finden.
In Assembler stell ich mir das noch witziger vor. ich wünsche jedefalls viel Spaß *g*

Und nicht überall den User drauf hinweisen, dass er keine gültige Lizenz hat, weil dann weiß ein Cracker ja gleich, wo der Code geprüft wird.
das cracken eines Programms sollte mindestens solange dauern, wie Du für die Schutzmechanismen aufwendest.
.. und dann kommt es natürlich drauf an, wie wichtig Dein PRogramm überhaupt ist :-)

Der_Unwissende 4. Mär 2008 18:27

Re: Compilereinstellungen gegen Cracks?
 
Zitat:

Zitat von stoxx
Aber man kann so einiges machen, ich hab schon eins zwei Leute mal mein Programm zum cracken gegeben. Aber keiner hat es zu Ende getan.
Auch "Brekki" hier im Forum hab ich es mal aus Spaß gegeben, aber ist dann im Sand verlaufen.
Es sagen zwar immer alle, sie könnten es leicht cracken, aber nach eins zwei Tagen ist dann die Lust vergangen :)

Also sorry, aber da finde ich machst Du es Dir gerade sehr einfach. So einiges machen kann man sicher, die Frage (die Du völlig korrekt stellst, wenn auch eher implizit) ist immer die nach Kosten und Nutzen. Dabei ist die Abschätzung eigentlich ganz einfach: Wie teuer ist, wenn jmd. Dein Programm crackt (und da muss man auch mal realistisch überlegen, wer sich die Mühe macht und wer dann den Crack sucht, etc.) und wie teuer ist es die SW dagegen zu sichern (was nur heißt, dass man das Cracken aufwendig / teuer macht). Ist die SW gut und die Preise fair, dann sind viele Leute (und viel wichtiger, auch Firmen!) bereit gerne auf Deine SW zurück zu greifen (und bezahlen natürlich auch dafür).
Bekommt man aber eine bescheidene SW, die noch dazu derbe verdonglet ist und deren Dongle leider keinen Platz mehr findet, da man nur 4 USB - Ports hat und neben Maus, Tastatur und Drucker schon ein anderer Dongle hängt, nun ja.... Natürlich gibt es noch eine Menge dazwischen, aber um es mal klar zu sagen, natürlich ist Deine SW einfach nie sicher. Mit genug Zeit / Aufwand kann man jeden Schutz umgehen, da nunmal das Programm als solches vorliegt und man eben den Assembler durchgehen kann. Wie man das ganze erschwert, dass ist so eine Sache, sicher ist jedenfalls nie etwas. Du kannst höchstens abschätzen, wie schwer es für einen potentiellen Angreifer ist. Die Frage ist allerdings, was man davon hat? Gerade "kreatives" umgestalten und einfügen von sinnlosem Code sind Dinge, die das Programm fehleranfälliger, langsamer und die Entwicklung insgesamt teurer machen. Wen hält man damit ab? Klar, einige "Hobby-Cracker" werden schnell aufgeben, aber meinst Du ehrlich, dass die sonst Deine SW kaufen? Die, die bereit sind Geld für SW auszugeben werden das schon tun, egal ob nun ein Crack verfügbar ist oder nicht. Die, die kein Geld ausgeben wollen verwenden entweder Deine SW nicht (gibt Schlimmeres, nutzt Dir aber auch nicht wirklich was) oder finden einen Crack (und nu?).
Wenn DU jetzt also mal ganz realistisch guckst, wie teuer der ganze "Crack-sicher-Quatsch" ist und wie viele Leute Du damit als Kunden gewinnen dürftest (und wie gesagt, es ist sehr unwahrscheinlich dass es einer ist), dann merkst Du schon, dass sich der Aufwand selten (oder nie) lohnt.

Gruß,
Der Unwissende

sirius 4. Mär 2008 18:33

Re: Compilereinstellungen gegen Cracks?
 
Liste der Anhänge anzeigen (Anzahl: 2)
@DMW: Die RTTI ist nicht aus der VCL und man kann sie auch nicht abstellen. Aber man kann ein klein wenig bestimmen, wie viel darin stehen soll. Letztenendes ist das, wie du schon sagtest, allerdings unerheblich wenn man an cracken denkt.

@TurboMartin
Na und? Du kannst doch ein einzelne Section verschlüsseln. Ich weiß nicht was UPX macht, aber ich habe das auch mal probiert. Siehe Anhang. Hier wird allerdings mit einem Passwort entschlüsselt. Ich weiß nicht mehr genau, was ich gemacht habe. Auf jeden Fall ist die Code-Section verschlüsselt (soweit ich mich erinnere mit XOR).
so jetzt kann man natürlich den Speicher mitlesen - dagegen eben wieder nur einen Teil des Codes entschlüsseln. Allerdings muss man da schon fast in Opcodes programmieren.
Soviel zur Machbarkeit.

Zur Sinnhaftigkeit gibt es hier bereits hunderte Threads. Und nein, es gibt keinen CanCrackMe und AntiCrackMe-Schalter in Delphi und auch nicht in VB und sicherlich auch nicht in anderen Sprachen.

stoxx 4. Mär 2008 18:58

Re: Compilereinstellungen gegen Cracks?
 
@Unwissender ..

Zitat:

Bekommt man aber eine bescheidene SW, die noch dazu derbe verdonglet ist und deren Dongle leider keinen Platz mehr findet, da man nur 4 USB - Ports hat und neben Maus, Tastatur und Drucker schon ein anderer Dongle hängt, nun ja....
ich könnte Dir ja einen USB Hub für 5 Euro von Lidl empfehlen, erst vor einer Stunde bei Lidl im Angebot gesehen ;-) (kein Scherz)
Alle Dongle Programme die ich kenne, von denen gibt es keine bis gar keine Cracks im Netz !!
(ich nutze keine Dongles. ist mir, wie Du schon richtig erwähnt hast, viel zu kompliziert und zu teuer alles)
Klar ist immer die Frage nach den Kosten, auch nach den Entwicklungskosten. Aber ich fühl mich ein wenig geschützt immer besser, als gar nicht geschützt, und muss nicht irgendwelche Ausreden verwenden, warum es sich nicht lohnt, irgendwas zu sichern.
Mich interessiert eigentlich da auch mehr mein eigenes Wohlbefinden.
Was wohl jeder tut, der eine Auto teurer 10.000 Euro fährt :-)
Letztendlich ist es auch nicht das wichtigste, und sollte es auch nicht sein!
Es nützt ja nix, wenn die Software nix taugt, aber sehr sicher ist.
Ich halte es so, dass ich jedem Kunden eine spezielle Version compiliere. Das ganze Update ist automatisierst, und da gibts auch keine lauffähige Version, die es irgendwie zu "cracken" gilt.
Eine spezielle Rechnerbindung, die ich verwende, ist auch ein Konzept, was ich von großen Firmen kenne, wo die Software mind. 1500 Euro Lizenzgebühren pro Monat und Rechner kostet ...
Ich denke, mit stäntiger "Onlinisierung" von Programmen, wird sich das Problem eh selbständig lösen.
Wenn eine Software nur noch läuft, wenn das Programm einen onlinekontakt hat, dann wird in Zukunft alles sehr viel schwieriger (und meiner Meinung nach besser für Programmierer werden) -....
Meiner Meinung nach ist immer die Frage des Aufwands wichtig. Ein Katz und Maus Spiel.
Bei gewissen Fernsehdiensten hat es auch recht lange gedauert ( einige Jahre ) bis Entschlüsselungen wieder im Netz verfügbar waren.
Denn letztendlich ist alles eine Frage der Zeit ..
(Ich besitze übrigens keinen Fernseher, nicht dass jemand auf dumme Gedanken kommt, mir irgendwas zu unterstellen ;-)

und ich finde es traurig, den Kopf in den Sand zu stecken, weil eh alles scheiß egal ist, und es (im Moment) noch keinen echten richtigen Schutz für Software gibt.
Wenn sich aber keiner mit dem Thema beschäftigt, wird es auch nie einen geben!
Danke ...

DMW 4. Mär 2008 21:08

Re: Compilereinstellungen gegen Cracks?
 
Zitat:

Zitat von sirius
@DMW: Die RTTI ist nicht aus der VCL und man kann sie auch nicht abstellen. Aber man kann ein klein wenig bestimmen, wie viel darin stehen soll.

Der größte Teil der RTTI in einem Delphi-oder C++Builder-Projekt wird für die VCL und ihr Streaming-System erzeugt; dies ist nicht veränderbar. Ob aber für eigene Klassen RTTI erzeugt werden soll, kann man aber, wie ich schrieb, meines Wissens mittels eines Compilerschalters selbst ein- und auch abstellen.

grenzgaenger 4. Mär 2008 21:25

Re: Compilereinstellungen gegen Cracks?
 
ansonsten kann man sich ja die klassen mit object anlegen. aber mit erlaub, normal besitzen nur interpretative sprachen entsprechende schalter, und dort macht es auch sin. bei einen echten kommpiler find ich es für überflüssig. da reicht orderntlich zu kompilieren --> optimierung, keine debugging symbole, keine asserts, etc. jm2c

GG


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Seite 1 von 2  1 2   

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