| Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert. |
Diskussion: [schwer] KeygenMe! im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hallo Leute, da ich zur Zeit an einem Projekt am entwickeln bin, welches ein Testversion ist und gerne wissen ...
![]() |
| | #1 (permalink) |
| Registriert seit: 28.05.08 ![]() Likes: 0 | Anzeige Hallo Leute, da ich zur Zeit an einem Projekt am entwickeln bin, welches ein Testversion ist und gerne wissen würde ob diese sicher genug ist, möchte ich ein KeygenMe eröffnen. Das das KeygenMe ist C# geschrieben. Der Serial besteht aus drei Teilen z.B. für den Namen "Daniel" wäre es "XXXXXX-XXXXXXXXX-XXXXXXX". Statt den "X" stehen Zahlen. Die Zahlen stehen nicht in Hex. oder ähnliches. Abweichungen zwischen den "X"en sind möglich. Die Verschlüsselung ist von mir eine eigen ausgedachte. Wenn es jemand schafft dies zu knacken bzw. den Lösungsweg oder einen Keygen zu erstellen werde ich vielleich den Quellcode der Verschlüsselung posten. Ich wünsche euch viel spaß und Kopfzerbrechen bei der Sache, nicht negativ gemeint :P . Das Programm befindet sich im Anhang. Schönes Wochenende! Daniel |
| | |
| | #2 (permalink) |
| Code: private void button1_Click(object sender, EventArgs e)
{
int num = this.textBox1.Text[0] * '?';
num += num + (this.textBox1.Text.Length * 0x1ee8f);
int num2 = this.textBox1.Text[this.textBox1.Text.Length / 2] * '㣨';
num2 *= 0x7b;
num2 += (this.textBox1.Text.Length * 2) % 2;
num2 *= num2 - Convert.ToString(num2).Length;
int num3 = this.textBox1.Text.Length * this.textBox1.Text[this.textBox1.Text.Length - 1];
num3 *= 0x19d5;
num3 += this.textBox1.Text[this.textBox1.Text.Length - 1] + '忻';
string str = string.Concat(new object[] { num, "-", num2, "-", num3 });
if (this.textBox2.Text == str)
{
MessageBox.Show("Gratulation! Der Serial ist richitig.", "Richtig", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
MessageBox.Show("Der Serial ist falsch!", "Versuch es nochmal ;)", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
} Ist also nicht wirklich schwer :p Mfg Inliferty | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Und vor allem sind Plaintextvergleiche IMMER böse beispiel, ganz ohne Reflector Sonst nimmt man einfach den Code aus Reflector und lässt ihn die Serial ausgeben
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #4 (permalink) |
| Themenstarter Registriert seit: 28.05.08 ![]() Likes: 0 | Hallo ihr Beiden, ging ja wirklich schnell! Gibt es Möglichkeiten zu verhindern, dass es möglich ist die Anwendung zu dekompilieren? ![]() @CDW: Wie ist es sonst möglich den Serial zu vergleichen ob diese gültig oder ungültig? Eine Abfrage mit beispielsweise "if" muss doch stattfinden, wie soll es sonst gehen? Daniel |
| | |
| | #5 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Naja, in dem man vielleicht keine fertige Serial generiert, sondern Teile davon überprüft. Bsp: Code: int k=name[1]*serial[1]; if serial[2]!=k return false; Wenn man es richtig "professionell" machen möchte, sucht man sich paar gute mathematische Funktionen, die nicht so schnell umkehrbar sind. Z.B RSA Verfahren - man verschlüsselt als Programmierer seine Serials mit dem Privatkey und lässt das Programm mit dem öffentlichen (im Programm hinterlegten) Key diese Eingabe entschlüsseln. Die Werte nutzt man nun (ungeprüft) als Initialisierungswerte in irgendwelchen Funktionen. D.h wenn jemand das Programm soweit manipuliert, dass es jeden Schlüssel als richtig annimmt, wird es anschließen mit falschen Werten arbeiten. Auch beliebt sind Spielereien mit Hashverfahren (SHA1 usw). Ist aber in jeder Hinsicht eine komplizierte Sache (Usergängelung vs. Schutzfaktor) - sonst würde sich ja auch die gaaanz großen Firmen nicht den Kopf darüber zerbrechen
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #6 (permalink) |
| Themenstarter Registriert seit: 28.05.08 ![]() Likes: 0 | Hallo CDW, wenn ich jetzt nun ein zweites Programm programmiere, wo ich aber die RSA-Verschlüsselungssystem verwende, dann muss es doch möglich sein über den .NET Reflector den Quelltext meinenes Programmes auszulesen und dessen Schüssel zu bekommen! Jetzt bin ich verwirrt. Wenn es mit den .NET Reflector möglich ist den Quelltext meines Programmes fast 1:1, sprich 1 zu 1 darzustellen, dann bleiben mir sogut wie keine Möglichkeiten. Entweder ich habe eure "Gedankengänge" nicht verstanden oder ich verstehe irgendwie etwas falsch. So wie ich es verstanden habe, muss ich einen RSA-Schlüssel haben um den Lizenzschlüssel zu entschlüsseln. Aber ist das nicht ein Wiederspruch in sich? Macht das die Sache nicht nur noch unsinniger? Bin ich auf dem falschen "Denk-Trip"? Nochmal kurz gefasst wie ich das verstanden habe: Ich brauche einen RSA-Schüssel wo mit ich den Lizenzschlüssel meines Programms ver- bzw. entschlüsseln kann. Dieser RSA-Schlüssel muss doch irgendwo liegen, somit kann ein Anderer diesen Schlüssel benutzen und selber einen Serial generieren. Der zweite Aspekt ist, dass man via .NET Reflector den Quelltext meines Programms auslesen! ?( Daniel |
| | |
| | #7 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Also, gegen den Reflektor gibt es Obfuscatoren: http://de.wikipedia.org/wiki/Obfuscator da ich mich nicht wirklich mit NET befasse, kann ich Dir leider da keine genaueren Programmnamen nennen (außer denen, die schon im Wikiartikel stehen). Zu RSA: es eignet sich jedes asynchrone Verschlüsselungsverfahren. http://de.wikipedia.org/wiki/Asymmet...s_Kryptosystem Vielleicht habe ich mich nur missverständlich ausgedruckt - es ist nicht der wirklich private Key von RSA gemeint, sondern der, mit dem man verschlüsselt. Der andere, mit dem man entschlüsselt, kann öffentlich sein. Alternativ verwendet man RSA nur zur Signierung und von übermittelten Keys. Dabei geht es eigentlich nur darum, dem Angreifer möglichst viele Informationen über die Serial vorzuenthalten und die Werte der Serial für irgendwelche "Lebenswichtigen" Funktionen des Programms zu benutzen - es ist dann die bestverfügbare Überprprüfung. Falls Du magst, kannst Du Dir das hier anschauen: http://www.buha.info/board/showthread.php?t=52103 http://www.buha.info/board/showthrea...754#post381754 ist zwar lang, aber da werden so einige Ansätze besprochen.
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| schwer zustellende frage | gugugs | (Web-) Design und webbasierte Sprachen | 8 | 12.03.08 16:34 |
| sehr schwer! | ^mn =) | Hacks & Crackmes | 23 | 06.08.06 00:55 |
| IP-Spoofing: Wie schwer? | Elderan | (In)security allgemein | 24 | 26.11.04 16:48 |