Schutz vor dekompilieren von C#-Anwendungen bzw. von .NET

Hallo Leute,

wenn ich nun einen Obfuscator verwende, dann wird der Quellcode so umgestellt, sprich andere Namen der Methoden, Variablen, Klassen ect. Wenn ich dann nun einfach, wie CDW schon sagte, im ganzen Code überall Timer, Funktionen, usw. verwende, also den Algorithmus im ganzen Code verteile wird es für den Cracker schwieriger die richtigen Funktionen für die Berechnung zu finden. Wenn man das so betrachtet, würde es auch Sinn machen, wenn ich einfach unsinnigen Code verwende, um Beispielsweise den Cracker auf eine andere Spur zu bringen und ihn immer weiter zu verwirrgen ... . Würde das auch Sinn machen?

Aber was soll das ganze? Nach etwas Suche wird der Cracker es so oder so finden. Man kann sagen, dass es keine wirklich sichere Methode ist so an den Algorithmus zu kommen! Gibt es keine andere Möglichkeiten, abgesehen von den Obfuscator, sich vor dem Dekompilieren zu schützen? Was denken sich die Leute die .NET entwickelt haben? Das ist doch ein riesiger Schwachpunkt! Das man wirklich nie sicher ist, ist mir klar, jedoch etwas Sicherheit sollte es schon sein.

Wie sieht es nun aus? Gibt es irgendwelche Möglichkeiten sich davor zu schützen?

Daniel

P.S.: Vielen Dank an CDW für die sehr ausführlichen Texte! ;)
 
Du könntest deine .net-Anwendung verschlüsselt in eine normale Win32-Anwendung packen, die dann die enthaltene .net-Anwendung entschlüsselt und startet, hier gab es mal ein CrackMe von KarlRanseier, das so eine Technik demonstrierte. Aber wirklich sicher ist auch das nicht.
Das beste ist in meinen Augen wirklich ein Obfuscator, da du damit die Lesbarkeit in fast auf die Stufe von normalen Assembly reduzieren kannst. Aber du hast das schon richtig erkannt, mit genügend Aufwand kann ein Angreifer jeden Schutz brechen. Es geht also lediglich darum, den Aufwand für den Reverser größer als den Nutzen zu gestalten.
 
Hallo Leute,

gibt es somit keine andere Möglichkeit, abgesehen von Obfuscatoren, sich davor zu schützen?


Hallo Lesco,

wenn ich meine .NET Anwendung in eine Win32-Anwendung packe, wo bleibt dann das .NET? Ich versteh nicht ganz. Ich hab mir das CrackMe von KarlRanseier angeschaut, jedoch nicht ganz die Funktionsweise verstanden. Kannst du es etwas erläutern, wie das arbeitet?

An diese Stelle möchte ich mich an CDW für die wirklich sehr ausführlichen Tutorials und Informationen bedanken!

Daniel
 
Original von the_uxreal
Hallo Lesco,

wenn ich meine .NET Anwendung in eine Win32-Anwendung packe, wo bleibt dann das .NET? Ich versteh nicht ganz. Ich hab mir das CrackMe von KarlRanseier angeschaut, jedoch nicht ganz die Funktionsweise verstanden. Kannst du es etwas erläutern, wie das arbeitet?

Das funktioniert folgendermaßen: Du schreibst ganz normal deine .net-Anwendung. Dann wird diese Datei verschlüsselt als Resource einer normalen Anwendung verwendet, welche dann die .net-Anwendung beim Ausführen wieder entpackt/entschlüsselt und ausführt.
Das war die generelle Funktionsweise des Crackmes, wenn ich mich recht erinnere. Natürlich ist das auch nicht wirklich sicher, doch es ist zumindest ein weiteres Hindernis.
 
Hallo Lesco,

muss man dazu eine Programmiersprache verwenden, die nicht .NET ist, sondern Win32? Gibt es ein Beispiel oder Tutorial dazu? Die Idee hört sich gut an.

Daniel
 
Zurück
Oben