Frage

Mir scheint, Verschleierung ist eine Idee, die irgendwo in die Kategorie „Sicherheit durch Dunkelheit“ oder „falsches Gefühl des Schutzes“ fällt.Zum Schutz des geistigen Eigentums gibt es das Urheberrecht.Um zu verhindern, dass Sicherheitsprobleme gefunden werden, gibt es Behebung dieser Probleme.Kurz gesagt, ich betrachte es als eine technische Lösung für ein soziales Problem. Die funktionieren fast nie.

Allerdings scheine ich der Einzige in unserem Entwicklerteam zu sein, der so denkt, also liege ich entweder falsch oder brauche einfach überzeugende Argumente.Unser Produkt verwendet .NET und ein Entwickler hat .NET Reactor vorgeschlagen (was übrigens wurde auch in diesem SO-Thread vorgeschlagen).

.NET Reactor stoppt jegliche Dekompilierung vollständig, indem es jede reine .NET-Assembly (geschrieben in C#, VB.NET, Delphi.NET, J#, MSIL...) mit nativem Maschinencode mischt.

Sie werfen also im Grunde alle Vorteile von Bytecode auf einmal weg?

Gibt es gute Maschinenbau Vorteile der Verschleierung?

War es hilfreich?

Lösung

Ich habe eine Frage gepostet, die Ihnen helfen könnte, da sie einige der Probleme bespricht:Sollte ich mir Sorgen machen, dass mein Netzcode verschleiert wird?

Andere Tipps

Sie haben aus technischen Gründen gefragt, daher ist dies streng genommen keine Antwort auf die Frage.Aber ich denke, es ist eine gültige Klarstellung.

Wie Sie sagen, soll Verschleierung ein soziales Problem angehen.Und im Gegensatz zu technischen Problemen gibt es für soziale (oder geschäftliche) Probleme selten eine vollständige Lösung.Bei der Bewältigung oder Minimierung des Problems gibt es nur unterschiedliche Erfolgsgrade.

In diesem Fall erhöht die Verschleierung die Hürden dafür, dass jemand Ihren Code dekompiliert und stiehlt.Es schreckt gelegentliche Angriffe ab und verringert durch die Trägheit möglicherweise die Wahrscheinlichkeit, dass Ihr geistiges Eigentum gestohlen wird.Um eine ermüdende Analogie zu ziehen: Eine Wegfahrsperre verhindert nicht, dass Ihr Auto gestohlen wird, aber sie verringert die Wahrscheinlichkeit, dass Ihr Auto gestohlen wird.

Natürlich gibt es Kosten für die Wartbarkeit, (möglicherweise) für die Leistung und vor allem dafür, dass es für Benutzer schwieriger wird, Fehlerberichte korrekt einzureichen.

Wie GateKiller sagte, wird Verschleierung ein entschlossenes Team nicht davon abhalten, zu dekompilieren, aber (und es hängt davon ab, um welches Produkt es sich handelt), wie entschlossen wird ein Team wahrscheinlich sein, Sie anzugreifen?

Es handelt sich also nicht um eine technische Lösung eines sozialen Problems, sondern um eine technische Entscheidung, die einer komplexen sozialen Struktur einen Einfluss verleiht.

Wenn ein großes Team von Programmierern wirklich an Ihren Quellcode herankommen möchte und dafür Zeit, Geld und Mühe hat, dann wäre es erfolgreich.

Die Verschleierung sollte daher Leute davon abhalten, die nicht die Zeit, das Geld oder die Mühe haben, Ihre Quelle herauszufinden, wie Passanten sie vielleicht nennen.

Wenn Sie sich an die reine Verschleierung verwalteten Codes halten, können Sie die Assemblygröße erheblich einsparen, und verschleierte Klassen-/Funktionsnamen (auf einzelne Buchstaben reduziert) bedeuten einen geringeren Speicherbedarf.Dies ist fast immer vernachlässigbar, hat jedoch Auswirkungen (und wird auf einigen mobilen/eingebetteten Geräten verwendet) (allerdings hauptsächlich in Java).

Ein potenzieller technischer Vorteil besteht darin, dass durch die Verschleierung in manchen Fällen kleinere ausführbare Dateien oder andere Artefakte entstehen können – z. B.Das Verschleiern von Javascript führt zu kleineren Dateien (da alle Variablen „a“ und „b“ anstelle von „descriptiveNameOne“ heißen und alle Leerzeichen entfernt werden usw.).Dies führt zu schnelleren Ladezeiten für Webseiten, die verschleiertes Javascript verwenden.Offensichtlich gilt dies nicht (so sehr) für die .NET-Welt, aber es ist ein Beispiel für eine Situation, in der es einen direkten technischen Vorteil gibt.

Obwohl es nichts mit .net zu tun hat, würde ich eine Verschleierung in Javascript und möglicherweise anderen interpetierten Sprachen in Betracht ziehen.Javascript profitiert stark von der Verschleierung, da es die benötigte Bandbreite und die vom Parser zu lesenden Token reduziert.

Aber die Verschleierung kompilierten Bytecodes scheint mir nicht wirklich nützlich zu sein.Ich meine, was würden Sie versuchen und erreichen?Ich kann mir nur vorstellen, dass die Verschleierung bei der Lizenzprüfung von Code nützlich ist, um zu verhindern, dass sie zu leicht umgangen wird.

Der Hauptgrund für den Einsatz der Verschleierung ist, wie Sie angegeben haben, der Schutz des geistigen Eigentums.Im Allgemeinen ist es für ein Unternehmen wesentlich kostengünstiger, ein Verschleierungsprodukt wie .NET Reactor zu kaufen, als zu versuchen, seine Urheberrechte rechtlich durchzusetzen.

Die Verschleierung kann auch andere, eher nebensächliche Vorteile bieten, wie z. B. Leistungsverbesserungen und eine Reduzierung der Baugruppengröße.Dies wären die Maschinenbau Vorteile, die Sie suchen.

Nutzen Sie Verschlüsselung, um Informationen unterwegs zu schützen.

Nutzen Sie die Verschleierung, um Informationen zu schützen, solange sie noch in Ihrem Programm vorhanden sind.

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