Frage

Wir planen eine Client-Server-Anwendung mit C # und MySQL zu entwickeln. Wir planen, das Produkt im Regal wie jede andere Software-Dienstprogramm zu verkaufen. Wir sind besorgt über die Dekompilierung unseres Produktes, die irgendeine Art von Vorteil gegenüber unseren Mitbewerbern in Bezug auf Benutzerfreundlichkeit und Funktionalität gebündelt hat.

Wie können wir unsere Software von Dekompilierung zu verhindern, so dass die Geschäftslogik des Produkts bleibt intakt?

Wir haben über Reflektor und andere decompilers gehört, die unseren Code zum Kopieren sehr verletzlich macht.

Unser Kundenstamm ist nicht Corporates aber Ärzte, die sie es nicht tun können, aber unsere Konkurrenten mögen / deaktivieren Lizenzierung kopieren oder sogar den Code / Funktionalität replizieren so dass der Wert unseres Produktes auf dem Markt geht nach unten.

Jeder Vorschlag, um dies zu verhindern ist höchst willkommen.

War es hilfreich?

Lösung

Wenn Sie .NET-Assemblies auf Ihren Client-Rechner einsetzen, wird eine Art von Dekompilierung immer möglich sein, mit Reflektor und ähnlichen Werkzeugen.

Allerdings ist diese Situation nicht wesentlich anders, was Sie stoßen würden, wenn Sie die Anwendung in native C ++ geschrieben. Es ist immer möglich, Dinge zu dekompilieren -., Wenn es unmöglich wäre, der Prozessor es auch nicht verstehen konnte,

Sie werden nie den Experten Cracker zu besiegen -. Sie Ihre Sicherheit als intellektuelle Rätsel behandeln werden allein für die Herausforderung gelöst werden

Die Frage dreht sich um, wie schwer es ist, Ihre Lizenzpraktiken und die Return on Investment zu besiegen .

Setzen Sie sich mit einer Tabelle nach unten und rufen Sie die möglichen Szenarien - die Gefahr wahrscheinlich weniger ist, als Sie denken.

Faktoren wie „ease of use“ in der Software sichtbar sind für jeden Benutzer zu beobachten - so denken Sie, würde es einfach zu kopieren. Aber, gute User Experience ist selten (und selten kopiert gut), weil die meisten Entwickler (mich eingeschlossen) nichts sind wie typische Anwender.

Ich würde vorschlagen, Sie machen den Job eines Crackers konzentrieren härter, weil du nie unmöglich machen kann, nur nicht rentabel.

Eine Möglichkeit, um zu versuchen: Es ist möglich, Baugruppen in nativen Code als Teil des Installationsprozesses vorge kompiliert. Paint.NET tut dies aus Performance-Gründen. Ich glaube, dass, sobald Sie dies getan haben, können Sie die Original-Baugruppen verwerfen und die optimierten, nativen Code Ausgaben verwenden.

Andere Tipps

Wenn es nach mir ginge, würde ich nicht zu verschleiern versuchen werden; Ich würde:

  1. nicht darum kümmern und das Ziel kontinuierlich zu verbessern und vor
  2. bleiben

Aber zweitens

  1. Betrachten Sie die ‚geheime‘ Dienstleistungen über das Web bereitstellt. Es liegt an Ihnen zu entscheiden, wie wichtig und möglich, dies ist; aber es funktioniert „verhindern“ Dekompilierung, weil der Endbenutzer nicht einmal den Code hat.

Google für .NET Obfuscator. Sie werden eine Menge von Produkten, die in dieser helfen. Auch gibt es Fragen schon gefragt in Stack-Überlauf.

Hier sind einige:

Bearbeiten : Während für De-Verschleiern Tools suchen, ich auf ein Open-Source-Tool kam

Das letzte Mal, dass ich in diesen sah, Spices.Net Obfuscator sah aus wie das beste, was auf dem Markt.

Nein, ich nicht für sie arbeiten. :)

Ich benutze Smartassembly . Es ist einfach zu bedienen und hat auch die Möglichkeit, Absturzberichte zu Ihnen in gebaut zurück zu senden.

Die anderen obfuscators erwähnt haben, sind wahrscheinlich sehr gut.

Ein alternativer Ansatz Sie nicht haben könnten betrachtet ist ein Teil des Kerngeschäftslogik zu codieren, in eine Sprache, die vollständig in Maschinencode kompiliert wird, wie zum Beispiel C ++.

Der Vorteil dabei ist, dass es deutlich schwieriger macht für jemanden, den Code zu dekompilieren. Ein Nachteil ist, dass Sie Code in zwei Sprachen haben zu halten. Dies ist vielleicht nicht der beste Ansatz für Ihre Situation sein, aber ist nützlich in Fällen, in denen nur ein kleinen Teil des Codes verschleiert werden muss, während der Rest des Codes UI Flaum ist.

Als Beispiel Ihr medizinischen Software-Paket könnte Kantenerkennung von etwa bestimmten Drüsen zum Zweck eines Arzt der Größe der Drüse aufführen sagte zu erzählen. Der Algorithmus für die Größe der Drüse aus einem Bitmap-Bild in der Berechnung einer DLL in C ++ geschrieben enthalten wäre.

Ihre Frage über die C ++ Wrapper um den .net Code zu beantworten; Ich denke nicht, dass es funktionieren würde, denn wenn Sie die Anwendung die endgültige c ++ dll und .net dll die Business-Logik-Code enthält, bereitstellen werden getrennte Einheiten und diejenigen, die auf Ihre Business-Logik erhalten möchten noch in der Lage wäre, nur das herausgreifen .net dll und Blick ins Innere.

Sie können Remotesoft Salamander-Schutz zu prüfen, das ist viel besser als alles andere, dass sie es unmöglich macht, auf der Hochsprache zu dekompilieren.

Natürlich jemand, der ein Experte ist, kann genug Zeit mit der Software verbringen und es herausfinden, weil es einige nicht dekompilieren, aber es verbirgt sich die ganze Reihe und bekommen Methoden

So können sie einen Höhepunkt bekommen, aber das wars auch schon. sie müssen den Rest herauszufinden, welche die Wahrscheinlichkeit von jemandem senkt es nur knacken.

hoffe, das hilft

Schreiben auf diesem Thread nach einer langen Zeit. Wir haben eine Software namens gekauft IntelliLock , die bei der Verhinderung Dekompilierungsprozeß Verschleierungs hilfreich und hat auch eine starke Lizenzierungsmodul.

Wir sind nicht für Net Reactor obwohl es mehr Prävention Kontrollen als IntelliLock hat unser Zweck gut genug bedient.

Obfuscator verwirrt den Code aber Protektor schützt. Sie können .Net Schutz verwenden: NetWinProtector

IntelliLock hat unseren Zweck gut in Bezug auf die Verschleierung sowie Lizenzierung serviert. Aber ich würde das Produkt nicht empfehlen, da der Träger nicht bis zu der Marke ist. Wir haben nie Antworten rechtzeitig für das Problem, das wir konfrontiert waren. Wir hatten suchen und Forschung auf eigene Faust oder auch die geschäftlichen Anforderungen ändern einige Ziele zu erreichen.

Über diese Antwort, die ich keine Software zu fördern oder zu degradieren habe vor, sondern will nur Menschen bewusst machen, über das Produkt, das wir verwenden, so dass sie weise Entscheidung treffen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top