KnackMeDurch

    • Release

    Es gibt 48 Antworten in diesem Thema. Der letzte Beitrag () ist von orgertot.

      Ok deine Reaktion ist mir jetzt völlig unverständlich aber in Ordnung, Tsuyo und vb-checker haben es ja aufgeklärt.
      Danke dafür.

      Und was den Code angeht, warum daneben?

      Wie schon gesagt, ich dachte es mir so in der Art wäre es richtig:
      Versuchen mir einem sinnlosen Durcheinander und Chaos, das reflektieren des Codes zu erschweren.
      Naja, das trifft bei meinem Programm nicht zu.
      Da tut nur der Obfuscator das Dekompilieren erschwehren.

      Das ganze ist eigentlich ein einfaches Ausschlussverfaren.

      Wenn der key nicht so und so lang ist-false
      Wenn der key mal sonstwas das enthält-false
      Wenn der key geteilt durch das kein Komma enthält-false
      Wenn der key eine Primzahl ist - false

      usw...

      Und wenn der key dann auf all das nicht zutrifft, dann ist er richtig.

      m9898 schrieb:

      Ist das Programm zu schwer, oder warum hat noch niemand einen Key gefunden?

      Ich denke eher, dass nur keiner mehr Lust hat, weil du dich sehr unfreundlich den Leuten, die sich deinem CrackMe annehmen verhältst.

      Ps: Warum Serial, wenn man es Cracken kann?
      Adobe kann man auch cracken ;D
      Bilder
      • Adobe.png

        94,84 kB, 509×334, 226 mal angesehen
      Dateien

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „iZotope“ ()

      iZotope schrieb:

      Ich denke eher, dass nur keiner mehr Lust hat, weil du dich sehr unfreundlich den Leuten, die sich deinem CrackMe annehmen verhältst.
      Ist es so schlimm, das ich nicht will, dass das Spiel gecrackt wird? Und ja, dann werde ich unfreundlich, weil jeder Beitrag mit einem Crack des Programms simpler SPAM ist. Deiner auch.
      Cracken geht innerhalb von einer Minute. Den Key kann man aber nur mit Denken und rechnen herausfinden, was ja auch der Sinn des Spiels ist.

      Das Programm ist kein CrackMe.
      @m9898: Kannst du einen Beispielkey posten?

      Ich bin nämlich der Meinung, dass das Ganze nicht lösbar ist. Der Eazfuscator war da ja noch das kleinere Problem. Hier mein Decoder für der Obfuscator:

      Mit diesen Infos sollte jeder die Verify-Funktion aus dem Reflector nachbauen können. Das |END stammt von mir, um Leerzeichen am Ende zu bemerken. Die ziemlich am Ende verwendete Funktion ist TRUE, falls der Parameter eine Primzahl ist.

      Folgendes führt mich zu meiner Annahme:
      - Zunächst mal geht es um einen Double-Wert der Länge 11 (inkl. Komma), der den Key darstellt. Die Länge wird nach dem Entfernen aller 4en und 8en mit dem Ursprungsstring verglichen --> Ziffern 4 und 8 dienen als Padding, um auf Länge 11 zu kommen.
      - Bis zum ersten Math.Round sind die Nachkommastellen egal - die fallen sowieso weg. Damit kann man evtl. die ersten Bedingungen davor erfüllen.
      - Wir erhalten eine Ganzzahl und teilen sie durch 3. Der entstehende Bruch lässt sich entweder mit 3 kürzen (Nenner wird 1) oder ist bereits vollständig gekürzt (Nenner ist 3), denn GCD(x, 3) kann nur 1 oder 3 sein.
      - Fall 1: Nenner ist 1 --> Ganzzahl. Diese enthält kein Komma --> Key wird als falsch gewertet.
      - Fall 2: Weder 2 noch 5 sind Teiler von 3, d.h. es entsteht eine Periode im Dezimalsystem, in dem wir rechnen (vgl. arndt-bruenner.de/mathe/scripts/periodenlaenge.htm)
      - Rechnen wir in Fall 2 trotzdem weiter: Beim Teilen durch 5 bleibt die Periode in jedem Fall erhalten. Die Länge der Zahl inkl. Komma ist nie größer als 20, da Double maximal 17 Nachkommastellen hat (mit 0 und Komma 19). Durch die Periode ist die Zeichenfolge in jedem Fall länger als 13 Stellen, wodurch der Key ebenfalls als falsch gewertet wird.

      Edit: Die Bedingung "Länge < 10", auf die die Multiplikation mit 3 folgt, würde alles rausreißen, denn die folgende Division teilt durch 5, was eine endliche Periode ergibt. Aber vorher kommt die Abfrage mit dem Komma dazwischen, die uns an der Erzeugung der erforderlichen Ganzzahl hindert.
      Gruß
      hal2000

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

      Hier ein Teil des Codes - ich hoffe das ist in Ordnung. Änderungen: Dekodierte Strings eingefügt, Unicode-Zeichen (Variablenname) mit "param1" ersetzt, sonst Reflector-Original:

      VB.NET-Quellcode

      1. 'Tests weiter oben irrelevant
      2. 'Die Eingabe muss 11 Stellen haben, aber hier runden wir, daher sind die Nachkommastellen irrelevant.
      3. 'Wichtig ist nur, dass unsere Zahl durch 3 keine Periode produziert und dann durch 5 kürzer als 13 stellen ist.
      4. '--> Das ist nur mit ganzzahligem Ergebnis möglich, was aber nicht erlaubt ist.
      5. param1 = Conversions.ToString(Math.Round(Conversions.ToDouble(param1)))
      6. 'irrelevant für den Key
      7. Do While Not param1.Contains("8")
      8. param1 = Conversions.ToString(CDbl((Conversions.ToDouble(param1) + 1)))
      9. Loop
      10. 'param1 = x
      11. 'Anforderung: 3 / gcd(3, x) = 2^a * 5^b
      12. 'Erzeugt den Bruch - kürzbar oder nicht.
      13. param1 = Conversions.ToString(CDbl((Conversions.ToDouble(param1) / 3)))
      14. 'Immer erfüllt, falls der Bruch kürzbar ist (es kommt eine Ganzzahl, "eintel" raus)
      15. If Not param1.Contains(",") Then
      16. Return False
      17. End If
      18. 'nie erfüllt --> Double-Genauigkeit = 53 Bit, entspricht 17 Dezimalstellen (+2 für "0,")
      19. If (param1.Length > 20) Then
      20. Return False
      21. End If
      22. 'Das geht nur mit einer Ganzzahl, die aber oben ausgefiltert wurde
      23. If (param1.Length < 10) Then
      24. param1 = Conversions.ToString(CDbl((Conversions.ToDouble(param1) * 3)))
      25. End If
      26. 'Das ändert nichts an der Periode
      27. param1 = Conversions.ToString(CDbl((Conversions.ToDouble(param1) / 5)))
      28. 'Immer erfüllt, falls der Bruch nicht zu kürzen war (es entsteht eine Periode)
      29. If (param1.Length > 13) Then
      30. Return False
      31. End If
      32. 'Tests weiter unten nicht erfüllbar


      Edit: Double-Genauigkeit korrigiert
      Edit2: Wenn du den Komma-Test (Zeilen 20-22) rausnimmst, ist es zumindest ein Stück weiter lösbar :)
      Gruß
      hal2000

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „hal2000“ ()