(solved) Mein erstes CrackMe

Soderle :)

Lange Zeit habe ich hier nur interessiert mitgelesen, aber jetzt habe ich mich auch mal drangesetzt ein CrackMe zu schreiben.

Patchen ist nicht erlaubt.

Ziel ist es gültige Keys zu finden, und das Prinzip warum ein Key als gültig angesehen wird.

Einziger Tipp: Es funktionieren nur Zahlen.

Einfach entpacken und die .jar Datei ausführen. Entweder durch doppelklick, oder in der Konsole:
java -jar CrackMe0.jar

Viel Erfolg!
 
Erstmal ist java eine schlechte Wahl für ein Crackme. Bei nativen Programmen bekommt man meistens nur Assembler zurück, aber bei java kann man wunderbar mit einem Decompiler den richtigen Source-Code wiederbekommen. (Zumindest einen funktional identischen Source-Code.)
Das lässt dich dann sehr einfach analysieren.
Im übrigen lässt ein Integer.valueOf(tmp0).intValue(); alle Zeichen zu, wenn tmp0 ein Array of char ist. Also auch Buchstaben und Sonderzeichen.
Der kurze Code, der die ersten 9 Zeichen auf eine Matrix abbildet und dann nur die Summe aller Elemente, bzw die einer Spalte berechnet und prüft ob deren Produkt in einem bestimmten Intervall liegt, ist recht einfach in einen Brute-Force umzusetzen. Die Beschränkung auf Ziffern und 9 Zeichen macht das ganze auch in einer realistischen Zeit lösbar.

EDIT: 5610 Keys in 11 Minuten. Und es gibt bestimmt noch Optimierungsmöglichkeiten.
Code:
011222936
011222963
011223926
011223962
011226923
011226932
011232926
011232962
011236922
011262923
...
98282782
98287282
98722288
98722882
98728282
98782282
98822287
98822782
98827282
98872282
 
Stimmt alles so, vollkommen!

Was ich nicht wusste ist, dass sich java bytecode so einfach in den source zurückwandeln lässt... Also wird mein nächstes dann wohl in c++ sein :)
 
Es ist prinzipiell besser, erstmal selber ein paar crackmes zu lösen. Wenn man sich etwas Wissen anließt bekommt man das Problem von Java, .NET, ... recht zügig mit. Und man weiß auch, worauf man achten sollte ;)

Und zu C++, das ist richtig scheußlicher Assembler Code. Aber nun gut, wird das dann nur für MacOS?
 
Original von lagalopex
... Und zu C++, das ist richtig scheußlicher Assembler Code. Aber nun gut, wird das dann nur für MacOS?

Ich denke ich kann gcc doch sagen für welche Platform er das kompilieren soll, oder geht das nicht so einfach? Wenn das so klappen sollte wirds dann denke ich ein Build für Linux und eins für Windows geben.

Und weiterhin danke für die Hinweise! Für CrackMes ist es doch nur förderlich, wenn der Assembler Code scheußlich ist, oder? ;) Ich werd mich mit C++ erstmal richtig bekannt machen müssen. Bisher musste ich nur Kleinigkeiten in C machen für die Uni. Hauptsächlich wird dort Java verwendet.
 
Zurück
Oben