Wie schütze ich mein Programm vor Cracker?



  • nett ist IMHO z.b. einige funktionen bzw. standard-configs in einer verschlüsselten datei abzuspeichern, und die datei wird z.b. anhand der checksum der EXE entschlüsselt...

    das lässt sich (wenn halbwegs gut gemacht) nicht mehr durch reines JXX -> JMP oder NOP'en überspringen, zumindest läuft das prog dann nicht mehr.

    das liesse sich IMHO NUR durch einen loader cracken, der den code nach verifizieren im memory ändert... und das können meiner meinung nach nur wirklich erfahrene cracker.



  • loki1985 schrieb:

    nett ist IMHO z.b. einige funktionen bzw. standard-configs in einer verschlüsselten datei abzuspeichern, und die datei wird z.b. anhand der checksum der EXE entschlüsselt...

    das lässt sich (wenn halbwegs gut gemacht) nicht mehr durch reines JXX -> JMP oder NOP'en überspringen, zumindest läuft das prog dann nicht mehr.

    das liesse sich IMHO NUR durch einen loader cracken, der den code nach verifizieren im memory ändert... und das können meiner meinung nach nur wirklich erfahrene cracker.

    zimelich einfach zu machen: er ermittelt die checksum einmal im normalen process und codet diese für en crack fest ein.
    das beste ist immer noch mehrere sicherheits-checks die nich in einem punkt zusammenlaufen und auch nicht auf die selben funktionen zurückgreifen. außerdem am besten noch während des betriebs z.b. beim abspeichern einer datei ausführen, so dass es erst mal so aussieht als würde es funktionieren, aber die datei fehlerhaft speichern.

    am einfachsten hat es ein cracker übrigens wenn er schon eine gültigen lizenzschlüssel hat. dann kann er die beiden prozesse (gültig und ungültig) nebeneinander debuggen und sieht genau wo die abweichungen kommen.
    wenn er das schritt für mit allen checks macht kann ihn eigentlich nichts aufhalten einen crack zu generieren. so siehts aus.



  • der beste schutz den ich kenne ist, wenn man teile seines programms als input für das programm benutzt.
    wenn man also z.b. die stelle an der die sicherheitsabfrage stattfindet benutzt, um irgendwelche variablen zu initialisieren. bei einem weltraumspiel z.b. um namen von planeten zu generieren.
    wenn man dann die story spielen möchte und nen crack hat, dann stimmen die namen nicht oder sind an ganz falscher stelle und so macht man es natürlich nicht unmöglich das zu cracken, aber schonmal ein wenig schwerer.

    zudem kann man in viele funktionen die geinlined werden einfach ne abfrage dieser stelle machen (relativ zu ihrer eigenen position abfragen), dann muss ein cracker der die stelle mit der sicherheitsabfrage ändert, auch noch 100 andere stellen im code modden die diese stelle 'schützen'.

    nett ist es auch, durch xor mit anderen datenbereiche neue datenbereiche zu generieren, diese permutieren alle zeitlang und in gewissen abständen irgendwelche festgelegten positionen als wichtige consts zu benutzen z.b. schreibanforderung an dateien (wenn das flag falsch ist kann z.b. ein savegame nicht gespeichert werden), oder irgendwelche thread prioritäten damit setzen usw.

    also einfach abfragen sollte man heutzutage lassen, code lässt sich zu einfach ändern, aber datenbestände damit verschlüsseln kann schon aufregender sein 😉

    rapso->greets();



  • white.rabbit schrieb:

    interesanter bericht
    hmm komisch, wenn das die Polizei sieht, haben die per denic abfrage seine andresse( oder des domaininhabers ) und können ne hausdurchsuchung machen. irgendwas werden die immer finden

    auf was willst du hinaus??

    Auf was ich hinauswill? Der Typ gibt ja selber zu, dass er crackt. Er nennt sogar Programme die er oder eben seine Kumpels gecrackt haben. Naja auffällig ist das schon. Wenn die Polizei will, holen die Durchsuchungsbefehl, oder auch nicht weil "Gefahr im Verzug" ist, und checken sein Zimmer+PC. Wenn die jetzt gecrackte Software, Raubkopien und so finden, kriegt er seinen PC nie wieder.

    Also auffälliger kann man sich nicht verraten.

    mfg newkid :xmas1: :xmas1: :xmas1: :xmas2: :xmas1: :xmas1: :xmas1:

    juhu die kommen gut an :xmas1: :xmas2: :xmas1:



  • Der beste Schutz? Der beste Schutz ist immer noch Freeware, da barucht man keine Angst vor Crackern zu haben. 😉



  • Luckie schrieb:

    Der beste Schutz? Der beste Schutz ist immer noch Freeware, da barucht man keine Angst vor Crackern zu haben. 😉

    "Wie schütze ich meine Ware vor Dieben?" - "Indem du sie verschenkst."

    Tolle Antwort!



  • Die Tipps in dem Bericht sind ja wirklich bombig. Unnützen Code schreiben, Funktionsnamen verwenden die nicht klar machen was sie tun, Strings nicht komplett schreiben sondern zusammen basteln. Schau doch lieber gleich hier nach:
    http://mindprod.com/unmain.html



  • Herr asdrubael, was schlagen denn Sie vor um den Crackern das Leben schwer zu machen?



  • Wer es ernst meint soll sich nach Hardware-Dongles ala eToken umsehen. Die kann man zwar auch umgehen, aber das rechfertigt selten den Aufwand.



  • @asdrubael
    naja, das hin und her gewurschtel kann man ja auch durch einen Precompiler erledigen lassen.

    #ifdef RELEASE
    #define check_secret_password rettet_die_wahle
    #define ADD_JUNK { /* ... */ }
    #endif
    
    bool check_secret_passwort(char const *) {
      ADD_JUNK
      //...
      ADD_JUNK
    }
    

    usw. man muss sich eben nur klever anstellen. Ich denke eher, dass das meiste davon überflüssig ist. Letztens habe ich erst in einem Thread erklärt, dass man auf der aktuellen PC Hardware kein Software schützen kann. Das änder sich erst mit TCPA und co.


Anmelden zum Antworten