Wie um Sie zu schützen .Net exe Dekompilieren/Cracking
Ich bin wirklich traurig, weil vor ein paar Tagen starteten wir unsere software entwickelt .Net 4.0 (Desktop-Anwendung). Nach 3 Tagen seine crack war über das internet verfügbar. Wir haben versucht, zu schützen, die software von dieser aber irgendwie haben es die Leute davongekommen zu knacken.
Hier ist das Szenario:
Wenn die Anwendung startet, das erste mal, es kommuniziert mit dem web-server und überprüft die Anmeldeinformationen, die vom Benutzer übergebene. Wenn die Anmeldeinformationen korrekt sind, speichert die software die Werte in der Registrierung, sendet die MachineID an den server und speichert Sie in der Datenbank.
Nun, der hacker hat ersetzt der Server die Kommunikation mit einem "return true;" - Anweisung (ich habe das mit Telrik JustDecompile). und er hat hochgeladen das geknackte software auf dem internet.
Nun folgenden sind meine Fragen:
1 - Wie stellen Sie sicher, dass .Net-Anwendung wird auch nicht gebrochen ?
2 - Der hacker weiß jetzt meinen code, da er getan hat, die änderung. Welche Schritte sollte ich nehmen ?
3 - ich habe gelesen über das internet - obfuscators . Aber der hacker weiß, mein code was soll ich tun ?
4 - Alle anderen pro-Tipps, die ich verwenden können, um zu vermeiden, dass die software geknackt ?
5 - bin ich nicht sicher, aber kann diese Reflektor-Software auch dekompilieren der App.Config mit sensiblen Daten ?
Die Tatsache, dass Sie mit C# nicht helfen, können Sie sowieso nicht allzu viel davon, nur Arbeit, die auf die business-Logik und der Algorithmus und verbessern.
Es ist hell Seite, um all dies. Anscheinend ist Ihre Anwendung lohnt sich das knacken, sollten Sie Bedenken, dass ein Kompliment.
Gut, wir haben verbrachte eine Menge Zeit bei der Herstellung, und die Zielgruppe war auch groß. Mann, ich sah noch nie diese neu zu kompilieren, was kommt :@
Eine Sache zum nachdenken: die Leute, die es illegal, waren Sie immer t das bezahlen? Sind diese tatsächlich "lost sales"? Ich würde Wetten, dass in vielen Fällen: Nein. Das macht es nicht weniger ärgerlich, natürlich.
InformationsquelleAutor Behroz Sikander | 2012-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ein computer ausführen, können Sie Ihren code + Der hacker kann seinen eigenen code in eine höhere Privileg-Ebene hat als du, da ist nichts 100% verhindern, dass Ihre app aus geknackt. Auch wenn Sie nur Zugriff auf die ausführbare Datei, aber nicht die target-Plattform, Sie kann immer noch durch den Schritt und imitieren, was die target-Plattform tun würde, und herauszufinden, wie sich der Schutz getan wird.
Total schreiben Sie die Authentifizierung Teil, also müssen Sie von vorne beginnen, aber Sie werden es wieder zu bekommen, es ist nur eine Frage der wie lange.
Den Dschinni ist aus der Flasche jetzt, dass Sie das non-obfuscated code. Es gibt nicht viel Sie tun können, es sei denn, Sie drastisch zu re-schreiben der software, so dass Sie von vorn beginnen müssen. Ein obfuscateor wird nicht verhindern, dass ein entschlossener Angreifer, Sie einzige Sache, die verhindern können, es ist das halten der binären aus Ihren Händen.
Der einzige Kopierschutz, die ich gesehen habe, um aus der Ferne Verzögerung für jede Zeit ist das, was Ubisoft hat mit Assassin ' s Creed: Brotherhood. Sie verschlüsselt ther Ebenen mit der Spiel-CD und musste es download der Entschlüsselungs-Schlüssel aus dem internet, wie es nötig war (Dies ist die Haltung der binären aus Ihren Händen-Ansatz). Aber das funktionierte nicht immer, schließlich sind die Hacker haben diese Ebenen entschlüsselt und es war komplett gerissen. Dieser Ansatz ist genau das, was ich sah, nehmen Sie die längste Zeit herum zu erhalten, ohne rechtliche Beteiligung (Siehe Punkt 2 unten)
Alle Reflektor-software tun muss, ist Blick für den Abschnitt, der lädt die App.config und Lesen, was die Standardeinstellungen sind. Es ist keine sicheren Ort zum speichern von Informationen auf einem computer, der nicht die volle Kontrolle über. Wenn Sie auf dem computer, kann es gelesen werden. Wenn es gelesen werden kann, kann es zerlegt werden.
Die einzige wirkliche Lösung, die ich sehen kann, um zu verhindern, dass die Piraterie ist eine von zwei Optionen.
Die person, die nie Ihre app, es ist Streaming von einem server unter Ihrer Kontrolle, und Sie nie zu sehen bekommen, die binäre. Die einzige Sache, die Sie Sie senden die Informationen, die Sie benötigen, um zu fahren das UI. Dies ist der Ansatz, dass alle MMO ' s zu arbeiten. Menschen können sich zurückentwickeln, was Sie senden, um die Benutzeroberfläche und imitieren die Logik, die da auf Ihren Servern, aber Sie werden nie in der Lage sein geradezu sehen, was es tut, und wenn Ihre software ist Komplex genug, es kann nicht sein, feeseable für den Angreifer zu erstellen der server-Seite code. Der Nachteil dieses Ansatzes ist, müssen Sie zum host-Server für Ihre Benutzer eine Verbindung herstellen, dies wird eine wiederkehrende Kosten, die Sie brauchen, Sie zu re-coup. Oft wird diese Methode aufgerufen wird, eine "Rich-Client" oder "Thin Client" je nachdem, wie viel Verarbeitung erfolgt client-Seite und wie viel Verarbeitung erfolgt serverseitig. Sehen Kapitel 22"Microsoft Application Architecture Guide, 2nd Edition". Insbesondere beschreibe ich, was gezeigt wird, in Abbildung 4 und 5
Den seccond option ist wer Sie verkaufen Ihre software zu haben, die Sie Unterschreiben einen rechtlichen Vertrag, nicht um die software zu verteilen (und nicht eine EULA, einen eigentlichen Vertrag, die müssen physisch vom Kunden unterschrieben). In diesem Vertrag haben zu hohen Geldstrafen angewendet werden, um die person, die Lecks der software, dann Rätsel Ihr Programm mit Fingerabdrücken, die einzigartig für die person, die kauft die software, so dass, wenn das Programm zugespielt wird, die Sie sehen können, wer es getan hat. (Dies ist die Methode, die der Verkäufer Hex-Rays verwenden Sie für Ihre disassembler IDA. Eine schnelle google-Suche konnte sich nicht drehen, bis keine gecrackten Versionen, die neuer als 6.1, sind Sie auf 6.3). Diese Methode wird nicht von stop piracy, aber es kann entmutigen die Kopie durchgesickert sein in den ersten Platz. Diese können Sie auch wieder einige verlorene Kosten, die im Zusammenhang mit dem Programm durchgesickert in den ersten Platz. Ein Problem ist, dass Sie brauchen, um eine Menge von Fingerabdrücken und Sie müssen subtil sein, wenn ein Angreifer kann zwei Kopien des Programms und der kann die Dateien vergleichen zwischen den beiden, er wird in der Lage sein zu sagen, was ist die Identifizierung von Informationen und setzen Sie einfach, was Sie wollen, so dass Sie nicht sagen können, wer Sie bekam es von. Der einzige Weg, dies zu tun ist eine Menge von roten Heringen in, können nicht einfach abgestreift oder randomisierte, auch die Identifizierung von code non-critical, um den Betrieb der software, wenn Sie nicht arbeiten müssen, um es zu knacken, sind Sie wahrscheinlicher, es zu verlassen in.
Update: Nach dem erneuten Besuch dieser Antwort zu link, um es für eine andere Frage ich dachte an eine einfache Art und Weise der Umsetzung der #2 die Lösung.
Alles, was Sie tun müssen, ist, führen Sie den code durch ein obfuscateor und lassen Sie es benennen Sie Ihre Klassen für jede person, die Sie verkaufen Ihre software (würde ich trotzdem machen Sie unterzeichnen eine Lizenzvereinbarung, die sich nicht nur auf die EULA so können Sie erzwingen, der nächste Teil). Sie machen dann eine Datenbank der Verbergung mapping, wenn Sie sehen, eine durchgesickerte Kopie auf das internet Sie müssen nur eine Klasse irgendwo im Projekt, suchen Sie es in Ihrer Datenbank, und Sie werden wissen, wer geleckt und wissen, wen Sie brauchen, um nach für gesetzlichen Schadensersatz.
Nicht streamen, der binären stream nur Präsentationsschicht in einer 3-tier-Programm, Die business-Logik-Schicht und der Datenbank-Schicht wäre die server-Seite.
Behalten der binäre code scheint der Letzte Ausweg.
"Die person, die nie Ihre app, es ist Streaming von einem server unter Ihrer Kontrolle, und Sie nie zu sehen bekommen, die binäre." <-- was tun Sie nennen das in der Fachsprache, damit ich suchen kann ? Smart client ?
Das wäre der "Thin Client" oder "Rich Client" abhängig davon, wie viel Verarbeitung, die Sie wollen, zu tun client-Seite. Siehe Kapitel 22 der "Microsoft Application Architecture Guide, 2nd Edition". Insbesondere beschreibe ich, was gezeigt wird, in Abbildung 4 und 5
InformationsquelleAutor Scott Chamberlain
1: Sie können nicht. Sie können verschleiern, aber der einzige Weg verhindern das ist: geben Sie nicht jemand die exe-Datei. Schauen Sie, wie viel Spiele Unternehmen geben auf dieser; Sie haben sich nicht gelöst.
2: Verschleierung helfen würde ein wenig, obwohl es ein Wettrüsten zwischen obfuscators und de-obfuscators
3: zu spät, zurück zu gehen und machen Sie die Aktion rückgängig, aber die Verschleierung wird Sie verlangsamen ein bisschen in die Zukunft
5: app.config ist in der Regel sehr gut lesbar, Sie nicht viel Sie hier tun können; die Verschlüsselung wird nur langsam nach unten ein wenig, wenn die Schlüssel in Ihre app und somit erhältlich
Zumindest eine universal-launcher existiert für Steam-Spiele, und ein paar Emulatoren, die alle bypass alle Ihre Sicherheit. Auch online kann gebrochen werden (server-Emulatoren existieren für Ubisoft - always-on). Marc ist richtig, diese ist nicht lösbar.
Oh mein Gott. Dies ist eine schlechte neue :@. Also, wahrscheinlich um eine desktop-Anwendung, war eine schlechte Entscheidung.
Okay, wenn ich nicht viel über diese. Können Sie mir bitte sagen, ein "Must Do" - Liste vor dem starten einer desktop-Applikation ?
InformationsquelleAutor Marc Gravell
Wie schon andere gesagt haben es ist wirklich nicht alles, was Sie tun können gegen einen entschlossenen cracker, wenn Sie Zugriff auf Ihren code. Verschleierung bieten einen gewissen Schutz gegen einen faulen cracker. Dotfuscator in VS kannst du es ja versuchen. Beachten Sie, dass es einen realen Kosten zu verbergen. Es macht es sehr schwierig zu Debuggen Probleme von stack-traces, Ihre (zahlenden) Kunden senden Sie.
InformationsquelleAutor ishanrc
Die beste Antwort ist eine, die Sie haben, zu akzeptieren. Das können Sie nicht. Konzentrieren Sie sich nur auf das geben Ihren Anwendern eine großartige Nutzererfahrung, und stellen Sie die Lizenzierung sehr einfach. Die Möglichkeit, dass Ihre Anwendung geknackt werden kann, bedeutet nicht, dass die Wahl zum Aufbau einer desktop-Anwendung für eine schlechte Idee. Piraten, werden die Piraten und die ehrlichen Kunden werden ehrliche Kunden.
InformationsquelleAutor David Anderson
Anscheinend gibt es genug, kommerziellen oder geistigen Wert das knacken Ihrer app, dass jemand mit angemessenen Fähigkeiten versucht es fast sofort.
Den nur Weise werden Sie gewinnen, der Krieg ist zu verwenden kommerzielle software-Schutz-Pakete.
Wenn Sie versuchen, zu implementieren, kopieren Sie den Schutz sich selbst, werden Sie ein leichtes Ziel für hack wieder.
Wenn Sie schreiben, ein business-Anwendung, die Sie würde nicht auch schreiben der Datenbank-engine, die die Daten speichert. Sie sollte auch nicht schreiben, das knacken Prävention-code für Ihre Anwendung. Das ist nicht das, was löst Ihre Kunden das problem, und es erfordert eine ungeheure Fähigkeiten, um es richtig zu machen.
The only way you will win that war is to use commercial software protection packages.
es könnte Ihnen ein wenig Rand für eine Weile, aber du bist immer noch in eine verlorene Schlacht, selbst wenn Sie gewerbliche Schutz-Pakete.Nicht einverstanden mit Liegen Ryan--es gibt viele sehr starke anti-Kopier-tools, die kommerziell verfügbar-schauen für die Antworten, die ich schon gepostet habe ähnliche Fragen. Versuchen Sie unsere (CodeMeter) oder andere (SafeNet oder KeyLoc). Sie müssen nicht zu bekommen, rissig, trotz was viele Menschen glauben.
Sie können gewinnen in einem kommerziellen Sinn. Wenn die Welten #1 der hacker nimmt ein Interesse an brechen Ihre app, kann er das tun. Mit starken kommerziellen software-Schutz neigt, um sicherzustellen, dass die überwiegende Mehrheit der Ihre echte Benutzer-Basis (diejenigen, die wirklich zahlen würde für die app) eine Lizenz erwerben. Nachdem alle, die weltweit #1 hacker wird sich wohl auch legen Sie einen spam-bot in der gehackten version.
InformationsquelleAutor Eric J.
Was Sie tun können, zusätzlich zu den code-Verschleierung ist, indem ein Mechanismus der code-Entschlüsselung basiert auf hardwareID, im Sinn haben, das folgende Szenario, das senden Sie Ihre HwID zu Ihrem server, identifizieren Sie die kopieren - /Eigentümer - /installation Anzahl/etc mit, HwID, und Sie Antworten mit einer Beschreibung Schlüssel mit Sitz in, HwID, die für dieses bestimmte binäre (die Fingerabdrücke erwähnt), so dass die hacking-würde härter werden, da für die voll Funktionalität, die Sie brauchen einen gültigen Zugriff auf Ihren server, ansonsten können Sie die software nicht verwenden.
Cheers,
InformationsquelleAutor ngenen