Frage

Ich kam über diesen Beitrag auf dem MSMobiles.com Blog, das das folgende sagt unter anderem:

  

.Net ist groß in vielerlei Hinsicht, aber für   kommerzielle Anwendungen? Auf keinen Fall! Jeder kann   Schauen Sie einfach in Ihrem Quellcode. Ein hoch   Ende obfuscator wird viel helfen, aber jeder   entschlossener Hacker wird Ihr Code beheben   in weniger als einem Tag. Ich weiß das aus   traurige Erfahrung trotz 1000er Ausgaben $   auf Anti-Piraterie und Verschleierung Tool.

Er sagt dann folgend über kommerzielle Windows Mobile-Anwendungen in .NET Entwicklung:

  

bereit sein, für 1 Tag Verzögerung nach   die Ihre Wettbewerber kopieren Sie Ihre   Funktionalität und legen ihre eigenen Anwendungen   mit der gleichen Funktionalität in der   Skymarket

Für .NET-Kenner: ist diese Wahrheit oder Unsinn? Ist das Problem irgendwie spezifisch für Windows Mobile, oder es gilt auf Windows als auch auf .NET? Dies ist nur schien mich überraschend, weil ich weiß, dass Microsoft eine gute Menge an seine eigenen Client-Software in .NET (und dass viele Anbieter schreiben teure Anwendungen in Java, die offenbar die gleichen Probleme) schreibt, und es scheint seltsam, dass ihre IP so leicht gestohlen werden könnte.

War es hilfreich?

Lösung

Ich würde behaupten, es weitgehend nicht-Sinn aus dem einfachen Grund, dass, wenn Sie Ihren Wettbewerbsvorteil und den geschäftlichen Erfolg auf einem gewissen Algorithmus in Ihrem Code abhängig ist dann bereits geschraubt Sie. Erfolgreiche Anwendungen sind so viel mehr als nur der Code, es ist eines von vielen Stücken.

Ist dies etwas, was Sie wirklich fürchten, dann würde ich in Verschleierung und Pre-Pay für einige Rechtsberater investieren (ziemlich billig es glauben oder nicht), die aufhören senden und Buchstaben in Ihrem Namen an einen Wettbewerber zu unterlassen, die Sie stahlen Ihre Meinung Code. Dies ist zwar fast nirgendwo rechtlich gehen -. Die Bedrohung der Aktion ist nur über Ihr effektivste Werkzeug

Andere Tipps

Es ist etwas Wahres noch um die Leichtigkeit der decompiling einer .NET-Anwendung. (Dies gilt für alle .NET-Anwendung, nicht nur diejenigen, läuft auf Windows Mobile).

Es ist relativ einfach, eine kompilierte Assembly zu nehmen und den Quellcode erhalten sowohl kostenlose als auch kommerzielle Tools. (Einfach einen Blick auf Reflektor nehmen.) Dass gesagt wird, können Sie eine obfuscator verwenden, was die Mehrheit der Menschen zu stoppen, sondern nur einen entschlossenen Hacker verlangsamen.

Trotz all das gibt es Decompiler für fast jede Sprache und wenn ein Unternehmen (oder Person) ist fest entschlossen, die Interna des Produkts zu sehen, werden sie einen Weg, egal was finden.

Lesen der Post, den Sie wirklich Referenz klingt wie es von jemandem, der hatte eine sehr schlechte Erfahrung mit Microsoft, .NET und / oder Windows Mobile und einige der gemachten Aussagen sind falsch besten geschrieben wurde. (Vor allem der Punkt, um dies kein Problem auf einem iPhone zu sein, weil sie in „native“ Code geschrieben ist.)

Während es mit Zwischen Bytecode Sprachen etwas einfacher sein könnte, ist die Tatsache der Angelegenheit, die Sie dies mit jeder beliebigen Sprache zu tun.

Executable Code kann durch leicht auseinandergenommen und verschwunden sein. IDA-Pro nativen ausführbare Dateien laden kann, zerlegt sie und mit der Hex-Rays Plugin kann es bietet auch C wie Pseudo-Code zu gehen. Auch ohne Hex-Rays ist es nicht sehr schwierig, durch den Assembler-Code zu treten und ableiten, was geschieht. Dies ist, wie keygens sind für lizenzierte Produkte hergestellt. Sie werden zerlegt und Programmierer studieren den entsprechenden Assembler-Code für die Erzeugung und Überprüfung des Produktschlüssels.

Allerdings sind die Kosten jeder Hauptmerkmal aus einer Anwendung der Umkehr ist ziemlich hoch. So sei denn, es ist etwas in hohem Maße wettbewerbsfähige Funktion, die Algorithmen handels Geheimnis geht es fast immer einfacher und kostengünstiger, einfach Programmierer einstellen, um es zu schreiben, von Grund auf als Reverse Engineering es.

Wenn Sie sich für ein höheres Maß an Schutz suchen, können Sie Ihren Code verschleiern und einen kommerziellen Packer verwenden, die das Programm schwieriger macht Demontage (und verhindert Reflektoren aus verwendet wird, während die Anwendung verpackt ist). Diese können jedoch umgangen und ausgepackt und Code verschleiert werden, dass es nicht eine gute RE gar verlangsamen. Also, nicht über sie zu viel Stress, .NET ist ebenso geeignet wie jede andere nicht-Bytecode-Sprache in meine eigene Meinung.

Ihre einzige Option ist es, ein Netzwerk App haben - man muss nur Kunden verteilen, die einen Master-Server abfragen. Auf diese Weise der Quelle, die harte Arbeit tut, ist Ihr Geheimnis.

Es gilt auch auf Windows .NET. Sie gilt auch für Java.

Sie können den Code verschleiern, und einige der obfuscators sind gut (man leicht einen guten über Google finden), aber am Ende werden Sie Ihre IP in Schutz wachsam sein müssen, da obfuscators keine perfekt Technologie. Die obfuscators schlagen die Decompiler, die klüger zu bekommen, und schlagen die obfuscators, die schlauer bekommen, etc, etc.

Technically, können Sie herausfinden, wie ein C ++ Programm arbeitet, oder ein Programm funktioniert, indem an dem kompilierte Code suchen. Es ist nur so, dass das Niveau es kompiliert unten ist viel komplexer als sagen, IL (das ist, was .NET-Anwendungen zu kompiliert werden).

Gehen und eine Google auf Reflector tun. Ja, es ist real, ja es passiert, und ja, man Verschleierungs helfen kann, aber nicht perfekt. Und dann gehen und reflektieren Reflektor selbst. Nicht sicher, ob Redgate noch ist das Verschleiern aber der ursprüngliche Autor verschleierte es nicht druckbare Zeichen mit preety fiesen durch arbeiten.

Das gleiche Problem besteht jedoch mit Java, so wählen Sie Ihre posion. Ohh und ein echter entschlossener Hacker wird jede Anwendung auf jeder Plattform knacken, um eine Plattform für seine Funktionalität holen und das ist Geard, um Ihr Problem und Ihre Fähigkeiten.

Verwenden Sie Tools, um Ihre Sicherheit zu erhöhen und Ihre Bar erhöhen.

Eines der schönen Dinge über IL ist, dass es vollständig alle Arten von ihren vollständigen Namen qualifiziert. Also, wenn Sie bei verschleierten Code aussehen in, sagen wir, Reflektor, könnten Sie ein Dutzend Variablen in der gleichen Klasse mit dem gleichen Namen, aber da sie vollständig qualifiziert in der IL sind die Common Language Runtime hat kein Problem mit ihnen.

Es ist sehr einfach, eine .NET-Assembly zu lesen. Sie können selbst versuchen:

http://www.codeproject.com/KB/dotnet/NetDasm.aspx http://www.shutterspeaks.com / 2006/08/27 / how-to-disassemble-net-assembly-files /

Es gibt obfuscators zur Verfügung, um den Job zu erschweren. Mit Mono (Open-Source-Implementierung von .Net), ist es auch möglich, .NET-Code in eine ausführbare Datei zu kompilieren, sollten taht Demontage viel härter machen.

Ja, casper sicher richtig ist, können Sie immer nur Blick auf den Maschinencode. Obwohl die komplexeren objektorientierten Beziehungen wie Polymorphismus sind schwer zu erkennen, wenn sie bei der Montage Codeebene suchen.

Aber meiner Meinung nach, die insgesamt zu schützen Quellcode Mentalität ist fehlerhaft. Die Open-Source-Philosophie ist, dass der Code der öffentlichen Kontrolle eröffnet hilft die Software besser zu machen, weil mehr Menschen gibt es zu finden, Bugs und Sicherheitslücken. Auch Linus Gesetz wird von immer mehr großen Unternehmen wie Sun, Google umarmt, etc.

Geistiges Eigentum der Software wirklich nicht nur im Code selbst ist, es in der Idee, das Produkt gestartet, die gewonnenen Erkenntnisse bei der Entwicklung, das Testen und das Produkt bereitstellen, und die Infrastruktur bei der Festsetzung beteiligt, die Aufrechterhaltung und Verbesserung der Produkt .

Sie den Code in eine Anwendung zu haben, ist ein viel wie ein Auto. Sicher, können Sie es auseinander nehmen und genau sehen, wie es zusammengesetzt wurde, aber können Sie beginnen, Autos nur nächste Woche drehen, weil Sie dieses Wissen haben? Wohl kaum.

Ich habe es nicht in eine Weile benutzt, aber Salamander.NET wird .NET-Anwendungen auf Win32 native Anwendungen (ohne Rahmen Abhängigkeiten) zu konvertieren. bekam nicht sicher, ob es jemals ein Upgrade auf .NET 2.0 oder höher, aber es funktionierte in 1.1 im Jahr 2005 zurück.

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