Laden...

Projekt-Verschlüsselungssoftware

Erstellt von Dolce vor 2 Jahren Letzter Beitrag vor 2 Jahren 1.005 Views
D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 2 Jahren
Projekt-Verschlüsselungssoftware

Hallo zusammen

Mich würde es interessieren, welche Verschlüsselungssoftware Ihre bei euren Projekten nutzt.
Damit meine Ich, ich möchte den Source-Code vor dem Rollout verschlüsseln, damit das auslesen mittels Reflection etwas erschwert wird.

Beste Grüsse
Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

2.078 Beiträge seit 2012
vor 2 Jahren

Verschlüsseln geht nicht, wie soll der PC es sonst ausführen?
Und wenn das Programm sich selbst entschlüsselt, muss der Key irgendwo stehen und den kann man dann wieder auslesen und den Code selber entschlüsseln.
Und Reflection kannst Du auch nicht verhindern, das liest nur die Metadaten jeder .NET-Assembly und ohne diese Metadaten funktioniert .NET nicht mehr.

Reflection dürfte auch weniger das Problem sein, sondern dass jemand deine Assembly dekompilieren möchte, richtig?
Auch das kannst Du nicht verhindern, aber Du kannst es erschweren, den Code zu verstehen. Dafür gibt's Obfuscation, bzw. Tools, die das anbieten.
Empfehlen kann ich da aber nichts, ich habe damit noch keine wirklichen Erfahrungen, aber wenn Du nach "Obfuscation" suchst, findest Du garantiert einige Artikel im Internet.

16.807 Beiträge seit 2008
vor 2 Jahren

Das Thema Obfuscation kommt hier im Forum alle halbe Jahr hoch und zeigt immer wieder: lohnt sich nicht. Hättest einfach ein paar Sekunden in die Suche stecken können 🙂Forumsuche nach "Obfuscator"

Mittlerweile gibt so gute Deobfuscators, dass jegliche Obfuscation mit sehr hoher Qualität aufgelöst werden kann.
Derjenige, der weiß, wie man an den ILCode kommt, der nimmt einfach nen Open Source Tool und hat in wenigen Minuten C# Code.

Die einzige wirklich sichere Variante ist ein nativer Weg, zB. mit Rust, C++ oder .NET Native (das seit .NET Core 3 (maßgeblich) über den sogenannten Ready to Run Weg funktioniert).
https://docs.microsoft.com/de-de/dotnet/core/deploying/ready-to-run

J
61 Beiträge seit 2020
vor 2 Jahren

Die einzige wirklich sichere Variante ist ein nativer Weg, zB. mit Rust, C++ oder .NET Native (das seit .NET Core 3 (maßgeblich) über den sogenannten Ready to Run Weg funktioniert).

>

Wie erzeugt man ausschließlich .NET Native mit ReadyToRun?

Denn ist nicht üblicherweise auch der IL Code enthalten? Wo liegt da der Vorteil bzgl. Obfuscation?

16.807 Beiträge seit 2008
vor 2 Jahren

Uh, da muss ich zugeben, dass mein Begleitsatz nich sonderlich gut ist. Eigentlich wollte ich ausdrücken, dass mit .NET Core 3 und Ready To Run .NET Native maßgeblich breiter bekannt ist.

Aber um die Frage zu beantworten:
Ursprünglich kommt .NET Native aus CoreRT und hier hat der Compiler IIRC den ILCode in C++ umgewandelt und das Resultat nativ kompiliert (nicht festnageln, ob das mittlerweile immer noch so funktioniert 🙂 )
Der ILCode ist auch nicht Bestandteil des Endresultats.

Der Invest in .NET Native ist mittlerweile sehr hoch; Michal Strehovsky (ist im .NET Runtime Team von Microsoft) hat nen Repo (https://github.com/MichalStrehovsky/zerosharp), in dem er zeigt wie man mit C# völlig natives Zeug umsetzen kann bzw. hat er viele verschiedene Repos, in dem er die native Nutzungsmöglichkeiten zeigt.
https://github.com/MichalStrehovsky

6.911 Beiträge seit 2009
vor 2 Jahren

Hallo,

native Übersetzung für .NET läuft unter "AOT" (ahead of time compilation) und wird mittels crossgen2 durchgeführt.
Weitere Infos können z.B. in Conversation about crossgen2 nachgelesen werden.

Aktuell passiert da recht viel im "runtimelab"-Repo auf GitHub, da es für einen wirklichen produktiven Einsatz mit voller Unterstützung seitens .NET doch ein paar Sonderfälle (v.a. alles reflektion-basierte) gibt die noch gelöst werden müssen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"