Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Hybrid-Darstellung

  1. #1
    Bad Times Virus Avatar von nathex
    Registriert seit
    21.07.2008
    Beiträge
    546

    Standard Software Protection - Methoden

    Nabend,

    Also wie man der Ueberschrift schon entnehmen kann, suche ich nach Methoden um eine, in C++ geschriebene Software moeglichst gut vor Crackern schuetzen zu koennen.

    Diese Methoden koennen in Form von Code Snippets oder auch Protection-Tools (wie z.b. rlpack oder armadillo) sein. Allerdings sollten sie halt so sicher wie moeglich sein.

    Am besten waere natuerlich ein "Guide" wie man seine Tools effektiv schuetzt und es so den Crackern schwer macht. (Mir ist schon klar, dass man eine Software nicht "uncrackbar" machen kann. Man kann allerdings die Zeit bis die Software gecrackt wird verzoegern!)

    Sooo... vielen Dank schonmal an die Leute die mir hier Ihre Methoden verraten werden.

    #Edit: An die ganzen Klugscheisse und Spammer hier -> Ich hab sowohl google als auch die SuFu benutzt. Das einzige was ich bei Google finden konnte war ein Thread zum Schutz vor Crackern aus dem Jahr 1998.. Ich denke mal, dass die Methoden darin nichtmehr ganz so aktuell sein werden

    greetZ, nathex

  2. #2
    0x4D5A5045 Avatar von snify
    Registriert seit
    23.12.2008
    Beiträge
    215

    Standard

    Da gibt es 5 Möglichkeiten:

    1. Du nimmst einen Crypter (private oder public).
    Allerdings wird es bei public Crypter oft das Problem geben, dass die dann AVs detected werden. (z.B. Themida etc...)

    2. Du cryptest deine Datei nur Scantime (also ein Dropper).
    Du machst dein Programm also nur zugänglich, wenn es auch wirklich ausgeführt wird (oder schon im Arbeitsspeicher ist). Problem ist: Wenn du dein Programm z.B. auf TEMP droppst, kann man mit Tools herausfinden, welche Dateien dann auf deine Festplatte geschrieben wird.

    3. Stichwort: Obusfactor

    4. Du verschlüsselst deine Strings, Variablen, Funktionen etc...
    Somit wird das cracken schwieriger.

    5. Schreibe ein paar AntiDebugging Funktionen. Bzw. schau dir mal das PE Format an, da gibts es auch Tricks, wie du dein Programm vor OllyDbg schützst etc...

    Ich hoffe, ich konnte dir helfen.
    Eigentlich gibt es keine anderen Möglichkeiten....
    NEU *USB SPREADING*
    NEU localsteam *fixed* [stealt alle Usernamen+PW]
    YEAAAH ICH BIN BETA TESTER VON APOCALYPSE RAT
    *NEU ACCOUNT EXPANDER PRIVATE* Infos via PM
    www.snify.6x.to ---> wieder online

  3. #3
    Der Jesus der Informatik
    Registriert seit
    01.12.2007
    Beiträge
    216

    Standard

    Zuerst gilt hier die Grundregel sich nicht auf einen guten Protector zu verlassen. Denn wenn du zwar eine starke Protection verwendest, aber eine unsichere Lizensüberprüfung, ist das cracken trotz Protection kein Problem mehr. Trotzdem würde ich dir zu einem guten Protector raten (EXECryptor/Themida).
    Für welche Art von Lizensierungssystem hast du dich denn entschieden?
    Hardware-ID? Lizensdateien? Registriercodes?






  4. #4

    Standard

    Also wie DizzY_D schon sagte, EXECryptor z.B. ist ein ganz netter PRotector, macht dein Tool aber nicht uncrackbar.
    Anti-Debugging-Methoden bringen es, zumindest die meisten, ebenso wenig, da die meisten Cracker "vollgestopfte Debugger" (mit Plugins) benutzen, welche kleine Mechanismen wieder automatisch außer Kraft setzen...
    Das wichtigste ist wie schon gesagt die Prüfung der Lizens, so kannst du z.B. deinen Algorithmus möglichst kompliziert und über viele Umwege leiten..
    _n0p3_

  5. #5
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ich hab mal kurz zwei Sachen zusammengeschrieben.

    Der erste Code sollte die meißten User-Mode Debugger erkennen und versucht auch Debugger zu erkennen, die das BeingDebugged-Flag löschen. (danke an EBFE für die Idee)

    Der zweite Code sollte die meißten Debugger aus der Bahn werfen, da dort versucht wird den Debugger Befehle vorzugaukeln, wo keine Befehle sind. Diese Befehle überlappen sich dann mit den eigentlichen Befehlen und verstrecken diese somit.

    http://nopaste.free-hack.com/index.php?id=af1c1a9f64
    http://nopaste.free-hack.com/index.php?id=19f4ff25c0

    Interessant ist vielleicht noch diese Seite:
    http://www.woodmann.com/crackz/Tutorials/Protect.htm


    Zu beachten wäre hierbei, dass solche Methoden sehr leicht zu erkennen und auszulöschen sind.
    Ein etwas besserer Schutz wäre vielleicht, dass im Programm die Hardware-ID benutzt wird und anschließend zur entschlüsselung des eigentlichen Programmcodes benutzt wird. (also: HardwareID = Schlüssel)
    Das wäre zwar immernoch nicht der prefekte Schutzmechanismus, jedoch bräuchte der Reverser eine funktionierende HardwareID um das Programm überhaupt richtig ausführen zu können!


    mfG. BlackBerry

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  6. #6
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard

    wäre es nich bei ner hardware id möglich einfach das
    Code:
    if(GetHardwareID()==hashedID){
    einfach zu ersetzen. Also auf lowlevel wäre das ja ein je den man nur nach jne umändern müsste?
    Geändert von wacked (28.06.2009 um 12:19 Uhr)

  7. #7
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Deshalb sage ich ja:
    Den Hauptprogrammcode mit der HardwareID verschlüsseln.
    Dein kleines ASM Stub Programm berechnet dann diese HardwareID und versucht den Code zu entschlüsseln.
    Danach wird einfach auf den Code gesprungen.

    Stimmt die HardwareID nicht, wird das Programm einfach eine Fehlermeldung geben (wenn man Maschienencode falsch entschlüsselt kommen mit einer sehr hohen Wahrscheinlichkeit Befehle dabei raus, die das Programm crashen - aber das wollen wir ja: es soll nicht auf anderen Rechnern funktionieren)

    Stimmt die HardwareID hingegen, werden die richtigen Maschienenbefehle dabei rauskommen und man kann das Programm ausführen.

    Die "richtige" HardwareID wird im Programm also nicht gespeichert.

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  8. #8
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard

    @nathex: es geht um Grundlagen/Prinzipien und diese veralten nie
    http://www.s-a-ve.com/faq/Anti-Cracking-Tips-2.htm
    http://www.hackerboard.de/thread.php?threadid=37963 (und nein, der großteil der Tipps ist sprachübergreifend bzw. lässt sich sogar besser in inc(C) realisieren, als in NET).

    Ich erinnere mich immer noch gerne an eine mit EXECrypter geschützte Anwendung (zur Zeiten, als es noch keine "NoExeCrypterOllyDbgMod" gab und auch keine Tuts von Haggar, wie man EC umgeht ), die >100 Zeichen langen Key gebraucht hat und eine ellendlange Generationsroutine. Dummerweise wurde der Schlüssel am Ende mit etwas "strcmp" artigem verglichen - ein Selfkeygen war dann auch trotz EC kein Problem . Dasselbe lässt sich auch über Themida sagen. Sofern das Prinzip an sich simpel ist, hilft ein Protektor auch nur wenig. Ganz witzig waren noch selbtentwickelte, kommerzielle Protectoren von *hust* VBlern. Da waren auch Tipps mitdabei, wie man sich vor Crackern schützen kann:
    Zitat: "schreiben sie ihre wichtigen Strings nie im Klartext, sondern maskieren sie diese über Chr(65)+Chr(70) usw."
    Entsprechend war auch der Schutzlevel - der Key wurde letzlich im Klartext verglichen. Netterweise waren auch die ganzen Referenzen auf der Webseite. Die Proteciton wurde von über 50 Softwareautoren eingesetzt. Mit etwas Aufwand könnte man einen "Generic Selfleygen" machen, der dann Keys für alle diese 50 Anwendungen herausspuckt


    Grundsätzlich würde ich an deiner Stelle keine Zeit mit Antidebugmethoden und eigenem PE-Gewurschtel verschwenden. Es gilt wie immer: ein (normaler) Cracker beschäftigt sich schon Monate, wenn nicht Jahre damit und man kann einfach nicht nach 3 Tagen sich irgendwelche Tricks ausdenken, die ihn ernsthaft behindern . Man sollte sich darauf beschränken, was man kann - nämlich programmieren.


    @snify: 90% der "private Crypter" kannst du knicken. Lassen sich leichter entpacken als UPX. Option 4 bringt nur bei NET etwas. In nativen Sprachen werden weder Variablennamen noch sonstiges übernommen (es gibt nur noch Adressen ). Allerdings ist es nicht schlecht, darauf zu achten, auch nur Release-Versionen weiterzugeben. Denn die Debugversionen beinhalten netterweise (für den Cracker) nützliche Infos.


    PS: hier ist noch ein Ansatz, welcher sich sowieso super mit C/C++ umsetzen lässt:
    Code:
    program proc_demo;
    
    type tProc=PROCEDURE;
    
    var zeiger:POINTER;
    var proc:tProc;
    var eingabe:string;
    
    procedure demo; FAR;
    begin
        writeln('hello');
    end;
    
    procedure false;
    begin
        write('falsch');
    end;
    
    function super_hash(ein:string):pointer;
    var toInt:longint;
    var code:integer;
    var temp:string;
    
    begin
       temp:=ein[1]+ein[2]+ein[3]+ein[4]+ein[5]+ein[6]+ein[7]+ein[8]+ein[9];
       val(temp,toInt,code);
       super_hash:=POINTER(toInt);
    end;
    
    begin
      readln(eingabe);
      zeiger:=super_hash(eingabe);
      {hier sollte noch ein CRC/Try Catch rein}
        proc:=tProc(zeiger);
        proc;
    
      writeln(LongInt(@demo)); { Adressermitltung }
      readln;
    end.
    ist zwar eine Demo in Pascal - es geht aber im Prinzip um folgendes: man bildet aus dem Userkey und Hardwareid einen Hash, nimmt davon bestimmte Stellen (die Funktion darf so groß sein, wie man mag ) und setzt aus diesen Stellen letzendlich eine Funktionsadresse. Z.B einer wichtigen "vorinitialisierungsfunktion".

    also in C:
    Code:
    int myaddr=super_ultra_hash_mit_junkcode(hardwareid,key);
    void (*func) (parameter_die_man_braucht);
    func=(void*) myaddr;
    if (crc_check(myaddr)!=12345) show_msg("Registriere Dich!!!!");
    else func(param1,param2...);
    Es wird also eine Adresse gebildet. Man kann sie vor dem Aufruf noch prüfen und gegebenfalls eine nette Meldung ausgeben. Patchen bringt an dieser Stelle dem Cracker nur einen Programmabsturz.

    Das ist im Prinzip wieder den Ansatz von BlackBerry ähnlich (man speichert keine HarwareID im Programm) - allerdings braucht man kein InlineAsm und kann HWID-"Get" Funktion in C++ mit Makros usw schreiben (und damit möglichst gut aufblähen).
    Geändert von EBFE (28.06.2009 um 12:42 Uhr)

  9. #9
    0x4D5A5045 Avatar von snify
    Registriert seit
    23.12.2008
    Beiträge
    215

    Standard

    ooops.
    sorry, hab die Frage falsch verstanden...
    es ging um die Lizenzierung, bzw. Schutz von Shareware etc.
    Ich dachte es ging hier hauptsächlich NUR um Anti-Reverse Methoden, die verhindern, den Source zu klauen etc. Tut mir Leid :/
    NEU *USB SPREADING*
    NEU localsteam *fixed* [stealt alle Usernamen+PW]
    YEAAAH ICH BIN BETA TESTER VON APOCALYPSE RAT
    *NEU ACCOUNT EXPANDER PRIVATE* Infos via PM
    www.snify.6x.to ---> wieder online

  10. #10
    Bad Times Virus Avatar von nathex
    Registriert seit
    21.07.2008
    Beiträge
    546

    Standard

    So, danke erstmak fuer die ganzen Antworten
    Für welche Art von Lizensierungssystem hast du dich denn entschieden?
    Hardware-ID? Lizensdateien? Registriercodes?
    Was waere denn da am sichersten, deiner Meinung nach? Ich glaube du hattest mit ein paar anderen Leuten den Trojka 3 gecrackt oder?
    Wo waren da die Schwachstellen, welche den Trojka trotz hw-id "crackbar" machten? Und welcher Schutz macht es Crackern am schwersten?

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •