Wie kann ich mich gegen .net reflector schützen?

4 Antworten

Du kannst deine Software obfuscaten und damit kann man es nicht mehr auslesen.

Dafür kann man z.B .Net Reactor usen oder Themida nutzen.

https://www.eziriz.com/dotnet_reactor.htm

https://www.oreans.com/Themida.php

Jedoch kann man fast jede Obfuscation auch wieder unobfuscaten.

Auch kannst du mit Base64 + Salt die Sicherheit ein ganz kleines wenig erhöhen bzw die Arbeit für Leute die es cracken wollen maximieren.

Form Ladecode:

Label1.Visible = False
Label1.Text = ("YourSalt-PasswortInBase64")

Login-Button Code:

Label1.Text = Label1.Text.Split("-")(1)
Dim base64Encoded As String = Label1.Text
Dim base64Decoded as String
Dim data() As Byte
data = System.Convert.FromBase64String(base64Encoded)
base64Decoded = System.Text.ASCIIEncoding.ASCII.GetString(data)
Label1.Text = base64Decoded

If TextBox1.Text = Label1.Text Then
// Code der bestimmt was passieren soll wenn man das richtig Passwort eingibt //
End IF

If Not TextBox1.Text = Label1.Text Then
MsgBox("Falsches Passwort", MsgBoxStyle.Critical, "Fehler")
End If

Label1.Text = ("YourSalt-PasswortInBase64")

Ich empfehle Natürlich YourSalt gegen ne random nummer zu ersetzen weil es sonst aufällig af ist.

MFG

Indem du dein Konzept überarbeitest.

Im Klartext (^^): Sorge dafür, dass das Passwort nicht im Klartext verwendet wird.

Je nachdem, wofür das Passwort drin ist:

  • Um eine Verbindung zu einem Datenbankserver o.ä. herzustellen: Implementiere auf Serverseite eine Abstraktionsebene (z.B. ein REST-API).
  • Um bestimmte Funktionen im Code auszulösen/zu aktivieren: Entweder speichere einen Hash (aber NICHT MD5) anstelle des Passwortes im Code, oder aber (und das wäre die erheblich bessere, aber auch kompliziertere Methode) pack die gewünschte Funktionalität in ein verschlüsseltes Assembly, das z.B. über einen System.Security.Cryptography.CryptoStream geladen wird und pack den Ladevorgang in einen try-catch-Block (Passwort korrekt: Assembly wird geladen, Klassen und Methoden per Reflection verfügbar gemacht und schon kanns losgehen. Passwort falsch: Assembly kann nicht geladen werden und dem Benutzer wird "Alda, issisch nix koreggte passwoad, ey." angezeigt. ^^).

Das ist technisch nicht machbar. Wenn der Code das Passwort benutzen soll, dann muss er das Passwort kennen. Selbst wenn du es unkenntlich machst, dass es nicht direkt im dekompilierten Code erkennbar ist, musst du dem Programm ja die Fähigkeit geben, das unkenntlich gemachte Passwort zu entschlüsseln. Wer den Code dekompiliert findet auch dieses Rezept. Ist etwas mehr Arbeit, aber mehr auch nicht.

Daher darf das Passwort erst gar nicht im Quellcode auftauchen. Eine Möglichkeit wäre, wie NaIchHalt09 schrieb, das Passwort zu hashen und nur den Hash zu speichern. D.h. das Programm kennt das Passwort gar nicht - es kann aber feststellen, ob ein vom Benutzer eingegebenes Passwort falsch ist.

Passwörter werden nie im Klartext hinterlegt sondern mindestens gehasht und gesalted .


tigertropfen119 
Fragesteller
 02.07.2020, 22:46

Also ich habe in meien Programm was in Klartext in code reingeschrieben und es wird mir einfach angezeigt kann man da was gehgen machen

0
tigertropfen119 
Fragesteller
 02.07.2020, 22:55
@ArchEnema

Und wie soll man dann eine Abfrage machen ob das passwort richtig ist ?

0
ArchEnema  02.07.2020, 23:01
@tigertropfen119

Indem das vom User eingegebene Passwort genauso gehasht wird, wie du das gemacht hast, um den Passworthash zu erhalten, der im Code steht.

Wenn der selbe Hash rauskommt, dann war das PW mit an Sicherheit grenzender Wahrscheinlichkeit korrekt. Wenn nicht, dann war es falsch.

Aus dem Hash ein Passwort zurückzurechnen ist praktisch unmöglich, weil Hashfunktionen so konstruiert sind, dass das die Rechenleistung sprengt.

https://de.wikipedia.org/wiki/Hashfunktion

Um auch vor Rainbow-Tables (aus Wortlisten vorberechnete Hashes) sicher zu sein packst du noch einen (sicher nicht im Wörterbuch vorkommenden, d.h. zufallsgenerierten) Salt dran. Ein genügend sicheres Zufallspasswort kommt ggf. auch ohne aus - das kannst du dir aber selber nicht merken.

3