2017-08-14 2 views
-1

Ich habe eine WPF-App zur Verfügung gestellt und die Lösungskonfigurationen auf "Release" geändertWird App von Visual Studio sicher freigegeben?

Ich habe eine .exe-Datei von der Freigabe. Ist das sicher zu teilen? Kann jemand auf den Code dieser EXE-Datei zugreifen? Ich meine, gibt es keine App, um eine .exe-Datei in Code zu konvertieren?

Bitte lassen Sie mich wissen, wie ich es vor dem Teilen schützen könnte.

+0

Sie können * jede * Assembly oder ausführbare Datei, die mit einer .NET-Sprache kompiliert wurde, dekompilieren. Dies hat nichts mit der Verwendung der Release- oder Debug-Konfiguration zu tun. Wenn Sie dies wirklich vermeiden oder zumindest schwer machen wollen, verwenden Sie einen Obfuscator. Was Sie jedoch wirklich speichern möchten, ist nicht Ihr Programm, sondern Ihre Daten, daher wird oft keine Verschleierung benötigt. – HimBromBeere

+0

@HimBromBeere Danke, kann jemand meine .exe-Datei in Code konvertieren oder nicht? – alihaghdoust9

+0

Ja, umsonst. Sie können es nur schwerer machen, den konvertierten Code * zu lesen. – HimBromBeere

Antwort

1

Sie können jede Baugruppe oder ausführbare dekompilieren, die eine .NET-Sprache verwendet (das gleiche gilt für Java) kompiliert wurde. Dies liegt daran, .NET-Sprachen in den sogenannten kompiliert werden common intermediate language, die tatsächlichen Maschinencode isn't. So können Sie diese Datei einfach in Code dekompilieren. Je nachdem, welches Werkzeug für die Dekompilierung verwendet wird, haben Sie eine gute Chance, den Code so zu dekompilieren, als ob er vor der Kompilierung wäre. Das bedeutet, dass Sie leicht verstehen, was der Entwickler des Programmierers in den Code geschrieben hat.

Aber in vielen Fällen wirst du nicht wirklich für diese so viel kümmern. Zuerst gibt es nicht viele Leute, die diesen Code wirklich lesen würden, oder haben Sie jemals den JavaScript-Code einer berühmten Webseite gelesen, die sogar direkt lesbar ist?? Auch wenn es einige gibt, die daran interessiert sind, Ihren Code zu lesen, werden die meisten eine harte Arbeit haben, verstehen es sowieso on the fly. Dies setzt eine lange und harte Arbeit voraus, die die meisten Entwickler nicht tun werden. Sie können es nur härter machen zu lesen, dass der dekompilierte Code mit einem Obfuscator, diese Art von encrpyts Ihren Code vor der Compilation-Prozess macht es schwer, den Code zu verstehen, wenn die exe erstellt wurde.

Betrachten Sie diesen Code:

var myVariable = "Some Text"; 
var anotherVariable = myVariable; 
DoSomething(anotherVariable); 

Ganz selbsterklärend Code, es oder? Nun werden die folgenden berücksichtigen, die hergestellt werden können unter Verwendung von DotFuscator z.B .:

var a="Some Text";var b=a;hksdshd(b); 

viel schwerer zu verstehen, was dieser Code tut es oder?Im Grunde ersetzt ein Obfuscator einfach alle Kennungen in Ihrem Code durch zufällige Zeichen, was es ziemlich schwer macht zu erraten, was die beabsichtigte Verwendung oder Bedeutung ist. Danach wird dieser verschlüsselte Code wie jeder andere Code in eine Assembly oder eine ausführbare Datei kompiliert. Wenn dann jemand Ihr Programm wirklich dekompiliert, bekommen Sie nur schwer lesbare Namen und Fragmente.

Nachdem dies gesagt wurde, ist es ziemlich schwierig, Ihre App wirklich davor zu schützen, von irgendjemanden gelesen zu werden, und in den meisten Fällen ist dies nicht das, was Sie zu sehr beachten sollten. In der Regel, was Sie schützen möchten, ist Ihre Daten, z. die Informationen werden in einer Datenbank gespeichert.

Sie können auch einen Blick auf this question werfen, die sich etwas genauer mit den Verschleierungstools beschäftigt.

+0

Danke für Ihre Antwort, ich denke, jetzt mit etwas wie das ist genug https://www.nuget.org/packages/Obfuscar/, richtig? – alihaghdoust9

+0

Scheint das passt. Probieren Sie es aus und überprüfen Sie es. – HimBromBeere

0

Es spielt keine Rolle, ob Sie Ihre .exe-Datei im Debug- oder Release-Modus erstellt haben - alle ausführbaren Dateien (.EXE) können in Code dekompiliert werden.

Ein Decompiler ist ein Computerprogramm, das eine ausführbare Datei als Eingabe verwendet, und versucht, eine hohes Niveau, übersetzbar Quelldatei zu erstellen, die die gleiche Sache tut. Es ist also das Gegenteil von einem Compiler, der eine Quelldatei nimmt und eine ausführbare Datei erstellt. Decompiler werden als wichtiges Werkzeug im Prozess Reverse Engineering angesehen.

Sobald eine solche beliebtes Werkzeug ist hiew die jede exe in jeder Sprache in seinen High-Level-Code erstellt brechen bietet.

Für Binärdateien und EXE-Dateien, die mit dem .NET-Framework erstellt wurden, gibt es mehrere Tools, einschließlich this one, die die Dekompilierung sehr einfach und zugänglich machen.

Sie können die Dekompilierung mit Verschleierung verhindern. verschiedene Werkzeuge sind verfügbar, wie secureteam.net und Dotfuscator.

+0

@HimBromBeere Danke für Ihren Kommentar. Ich fügte eine paar Verschleierung von Werkzeugen hinzu, die das OP verwenden kann. –

+0

Btw .: Nicht alle exe-Dateien können dekompiliert werden, nur solche, die in einem Zwischenformat wie MSIL existieren. Selbst Java hat dafür einen Bytecode, allerdings kann man C-Code nicht wirklich dekompilieren, zumindest nicht so, wie man dies für C# erreicht. – HimBromBeere

+0

Danke, also bedeutet es, wenn ich meine Anwendung mit Benutzern teile, bedeutet das, dass ich meinen Code mit guten Entwicklern teile? :): | – alihaghdoust9

Verwandte Themen