Wie Sie verhindern, dass das dekompilieren von C# - Anwendung
Planen wir die Entwicklung einer client-server-Anwendung mit C# und MySQL. Wir planen, verkaufen das Produkt auf dem Regal wie jedes andere software-Dienstprogramm. Wir sind besorgt über die Dekompilierung unserer Produkte, die nicht irgendeine Art von Rand über unseren Konkurrenten in Bezug auf Benutzerfreundlichkeit und Funktionalität gebündelt.
Wie können wir verhindern, dass unsere software von Dekompilierung, also die business-Logik des Produktes intakt bleibt?
Wir haben gehört, über den Reflektor und andere decompilers wodurch unser code sehr anfällig für Vervielfältigung.
Unser Kundenstamm ist nicht Corporates, aber auch Heilpraktiker, die selbst kann es nicht tun, aber unsere Konkurrenten können kopieren möchten/deaktivieren, Lizenzierung oder sogar replizieren die code/Funktionalität, so dass der Wert unserer Ware geht in den Markt.
Jeder Vorschlag, um dies zu verhindern ist herzlich willkommen.
- Da hat niemand erwähnt noch, ich denke ich werde: Es gibt keine 100% narrensicher Weg, um zu verhindern, dass die Dekompilierung der software. Wenn jemand wirklich wollte, um zu sehen, Ihre algorithmen, Sie wäre in der Lage, dies zu tun. Sie können jedoch die verschleiern Ihren code ein, und während dies nicht verhindern, Dekompilierung, es ist eine Hündin zu tun. 🙂
- Siehe auch diese Frage: stackoverflow.com/questions/59893/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie bereitstellen .NET-Assemblys, auf den client-Maschinen, eine Art von Dekompilierung wird immer möglich sein, mit Reflektor und ähnliche tools.
Aber diese situation ist nicht wesentlich anders, was würden Sie begegnen, wenn Sie schrieb, wird die Anwendung in native C++. Es ist immer möglich, zu dekompilieren Dinge - wenn es unmöglich ist, den Prozessor konnte es nicht verstehen entweder.
Du wirst niemals besiegen, der Experte cracker - Sie behandeln Ihre Sicherheit als ein intellektuelles Rätsel gelöst werden, für die Herausforderung alleine stellen.
Die Frage kreist, wie schwer es ist Sie zu besiegen Sie Ihre Lizenzierungspraxis und die return-on-investment.
Setzen Sie sich mit einer Tabellenkalkulation und schauen Sie durch den möglichen Szenarien - die Gefahr ist wahrscheinlich weniger als Sie denken.
Faktoren wie "ease of use" sind sichtbar in Ihre software für andere Nutzer zu beobachten, so würden Sie denken, dass es leicht zu kopieren. Aber, gute User experience ist selten (und selten kopiert auch), weil die meisten Entwickler (mich eingeschlossen) sind nichts, wie die typischen Anwender.
Ich würde vorschlagen, Sie konzentrieren sich auf die Aufgabe, ein cracker schwieriger, denn du kannst nie machen es unmöglich, einfach nicht rentabel.
Eine Möglichkeit, es zu versuchen: ist Es möglich, pre-compile-Baugruppen in nativen code als Teil der installation. Paint.NET tut dies aus performance-Gründen. Ich glaube, dass sobald Sie dies getan haben, können Sie verwerfen die original-Baugruppen und verwenden der optimierten native-code-Editionen.
Wenn es nach mir ginge, würde ich nicht versuchen zu verschleiern; ich würde:
Aber zweitens
Google für .NET Obfuscator. Finden Sie eine Menge von Produkten, die helfen, in diesem. Auch gibt es ähnliche Fragen schon gestellt in Stack-Überlauf.
Hier sind einige:
BEARBEITEN: Während der Suche nach De-Verschleierung tools, stieß ich auf ein open-source-tool De4Dot. Dieses tool unterstützt Dekompilierung obfucated dlls erstellt, die von den meisten kommerziellen tools und hat einen ziemlich guten job auch.
Das Letzte mal als ich in diese sah, Spices.Net Obfuscator sah aus wie das beste, was auf dem Markt ist.
Nein, ich arbeite nicht für Sie. 🙂
Benutze ich smartassembly. Es ist einfach zu bedienen und hat auch die Fähigkeit zum senden crash-Berichte zurück zu, die du gebaut hast.
Des obfuscators andere erwähnt haben, sind wahrscheinlich sehr gut.
Einen alternativen Ansatz, den Sie möglicherweise nicht betrachtet haben, ist code, der einige der zentralen business-Logik über eine Sprache, die vollständig kompiliert zu Maschinencode, wie beispielsweise C++.
Der Vorteil dabei ist, dass es macht es viel schwieriger für jemanden zu dekompilieren den code. Ein Nachteil ist, dass Sie code in zwei Sprachen zu pflegen. Könnte dies nicht die beste Vorgehensweise für Ihre situation, aber es ist nützlich in Fällen, in denen nur ein kleiner Teil von dem code muss verschleiert werden, während der Rest des Codes ist UI Flusen.
Als ein Beispiel, Ihre medizinische software-Paket möglicherweise die Durchführung werden Kantenerkennung, sagen wir, gewisse Drüsen, die für den Zweck, zu sagen, ein Doktor der Größe der besagten Drüse. Der Algorithmus für die Berechnung der Größe der Drüse aus einem bitmap-Bild enthalten ist, das in einer DLL in C++ geschrieben.
zur Beantwortung Ihrer Frage über den C++ wrapper um die .net-code; ich glaube nicht, dass es funktionieren würde, weil, wenn Sie die Anwendung bereitstellen, die die Letzte c++ - dll und die .net-dll mit dem code für die Geschäftslogik wird in separate Einheiten und diejenigen, die wollen, um auf Ihre Geschäft Logik wäre immer noch in der Lage, nur wählen Sie aus die .net-dll und Blick hinein zu werfen.
möchten Sie vielleicht zu prüfen, Remotesoft Salamander Protector
das ist viel besser als alles andere, dass es macht es unmöglich, zu dekompilieren, um die high-level-Sprache.
Natürlich, wer ist ein Experte kann verbringen Sie genug Zeit mit Ihrer software, und es herauszufinden, weil es nicht dekompilieren,aber es blendet alle set-und get-Methoden
So, Sie können Holen Sie sich ein peak,aber das ist über es. Sie haben, um herauszufinden, den rest-das senkt die Wahrscheinlichkeit, dass jemand nur das knacken es.
hoffe, das hilft
Schreiben auf diesen thread nach langer Zeit. Wir haben gekauft, eine software namens Intellilock, die hilfreich bei der Verhinderung der Dekompilierung, Verschleierung und hat auch eine starke Lizenz-Modul.
Wir nicht für .Net Reactor, obwohl es mehr Prävention-Steuerelemente als Intellilock war für unsere Zwecke gut genug.
Obfuscator verwirrt den code aber protector schützt.
Die Sie verwenden können .Net protector: NetWinProtector
Intellilock diente unsere Zwecke auch in Bezug auf die Verschleierung sowie Lizenzierung. Aber ich würde nicht empfehlen das Produkt, wie der support ist nicht bis zu der Marke. Wir haben nie Antworten in der Zeit für das problem, das wir konfrontiert waren. Wir hatten die Suche und die Erforschung unseres eigenen oder sogar ändern Sie die business-Anforderung zu erreichen, einige Ziele.
Über diese Antwort bin ich nicht die Absicht, höher-oder Tieferstufen von irgendeiner software, sondern wollen einfach nur den Menschen bewusst machen über das Produkt, das wir verwenden, so dass Sie Weise Entscheidung.