Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ILDASM verhindern

Moderationshinweis von herbivore (12.04.2005 - 17:54)

Dies ist ein Thread, auf den aus der FAQ verwiesen wird. Bitte keine weitere Diskussion, sondern nur wichtige Ergänzungen und diese bitte knapp und präzise. Vielen Dank!

NewYoda
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

ILDASM verhindern

beantworten | zitieren | melden

Wenn ich eine Assembly erstelle, dann kann man mit ILDASM mein gesamtes Programm als IL-Code sehen. So toll Open Source auch ist, ich möchte nicht, dass jeder meinen Quellcode einsehen kann.
Kann man das irgendwie verhindern? Das signieren der Datei schützt ja nur vor Veränderungen.
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

Es gibt Programme (obfuscators), die den IL Code so verschleiern, dass es schwierig wird, etwas sinnvolles daraus zu interpretieren. Ein obfuscator ist Dotfuscator, welches in der Community-Edition bei VS.NET2003 mitgeliefert wird. Für einen besseren obfuscator muss man allerdings oft tief in die Tasche greifen.


MfG VizOne
private Nachricht | Beiträge des Benutzers
NewYoda
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Danke, hab' auch noch ein weiteres Programm gefunden:
Spices
Leider sind diese Programme ziemlich teuer.
Mein eigentliches Problem liegt darin, dass ich ein Programm schreibe, dass die Konfiguration in einer Datei speichert. Dabei werden auch Passwörter gespeichert.
Damit die nicht im Klartext abgespeichert werden, kann man ja die Ausgabedatei verschlüsseln. Nur leider steht dann der Schlüssel, mit dem man die Datei verschlüsselt auch im Klartext in der Assembly, der Algorithmus ist in der Datei auch problemlos abzulesen.
private Nachricht | Beiträge des Benutzers
Pulpapex
myCSharp.de - Member



Dabei seit:
Beiträge: 939
Herkunft: Rostock

beantworten | zitieren | melden

Passwörter werden häufig mit Einweg-Funktionen verschlüsselt. Ergebnis ist ein Hashwert, der keine Rückschlüsse auf das verwendete Passwort zulässt (der Hashwert kann nicht dekodiert werden). Um das Passwort zu prüfen, wird das eingegebene Passwort kodiert und der resultierende Hashwert mit dem gespeicherten Hashwert verglichen. Dazu kommt meistens noch das "Salz", ein geheimer Wert, der angehängt wird, um Wörterbuch-Attacken zu verhindern.

Die Klasse in .Net heisst System.Security.Cryptography.PasswordDeriveBytes.

Gruss
Pulpapex
private Nachricht | Beiträge des Benutzers
NewYoda
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Danke, aber das wusste ich bereits, ich speichere die Passwörter nicht, um sie später abzufragen, sondern um sie später aus der Datei einzulesen, damit sie der User nicht mehr eingeben braucht aber da gibt es wohl keine sichere Methode, es sei denn, man lässt den User beim Start wirklich immer ein Passwort eingeben, mit dem man die Config-Datei verschlüsselt, is schließlich die Sicherheit des Users, da kann er auch ma die 2 Sekunden investieren, um das Passwort einzugeben *g*.
private Nachricht | Beiträge des Benutzers
NoOneKnows
myCSharp.de - Member

Avatar #avatar-1526.gif


Dabei seit:
Beiträge: 333
Herkunft: Hannover

beantworten | zitieren | melden

Zitat
Original von NewYoda
Danke, hab' auch noch ein weiteres Programm gefunden:
Spices
Leider sind diese Programme ziemlich teuer.
Deshalb hatte ich auch mal vorgeschlagen das man so einen Obfuscator vielleicht mal hier in der Community entwickeln könnte. Kostenlos gibts ja sonst scheinbar nichts vernünftiges.
([bb]|[^b]{2})
private Nachricht | Beiträge des Benutzers
NewYoda
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Eine einigermaßen gut funktionierende kostenlose Variante habe ich jetzt gefunden:
Aspose.Obfuscator
Hier fehlt nur die Option ILDASM ganz zu verhindern, welche in Dotfuscator und Spikes angeboten wird (soll wohl durch das Hinzufügen von Meta-Tags in der Assembly funktionieren).
private Nachricht | Beiträge des Benutzers
NoOneKnows
myCSharp.de - Member

Avatar #avatar-1526.gif


Dabei seit:
Beiträge: 333
Herkunft: Hannover

beantworten | zitieren | melden

Hab mir den Aspose.Obfuscator mal angeschaut. Nunja, das übliche Mit einer kleiner Assembly hats funktioniert, aber bei einer größeren Anwendung mit diversen Abhängigkeit läuft der Obfuscator auf Fehler. Auf das Freeware-Zeugs ist eben weniger verlass. Ich bin immer noch für selbstschreiben, aber allein hab ich da keinen Nerv drauf *g*
([bb]|[^b]{2})
private Nachricht | Beiträge des Benutzers
sarabande
myCSharp.de - Member

Avatar #avatar-2450.jpg


Dabei seit:
Beiträge: 230

beantworten | zitieren | melden

Zitat
Original von NewYoda
Wenn ich eine Assembly erstelle, dann kann man mit ILDASM mein gesamtes Programm als IL-Code sehen. So toll Open Source auch ist, ich möchte nicht, dass jeder meinen Quellcode einsehen kann.
Kann man das irgendwie verhindern? Das signieren der Datei schützt ja nur vor Veränderungen.
Seit Net 2.0 gibt es die SuppressIldasmAttribute Klasse, die ein disassemblieren eines Assembly verhindert!

[MSDN: SuppressIldasmAttribute-Klasse]
http://msdn2.microsoft.com/de-de/library/system.runtime.compilerservices.suppressildasmattribute(VS.80).aspx
private Nachricht | Beiträge des Benutzers
onlinegurke
myCSharp.de - Member



Dabei seit:
Beiträge: 779
Herkunft: Dresdner in Karlsruhe

beantworten | zitieren | melden

Zitat
Seit Net 2.0 gibt es die SuppressIldasmAttribute Klasse, die ein disassemblieren eines Assembly verhindert!

Aber verhindert das wirklich, das das Disassemblieren gar nicht mehr geht? Mit den Bordmitteln geht's nicht mehr, ja. Und wenn es gehen sollte, dann ist es definitiv verdammt schwer, aber gar nicht?
private Nachricht | Beiträge des Benutzers
Timur Zanagar
myCSharp.de - Member

Avatar #avatar-3412.jpg


Dabei seit:
Beiträge: 1.457

beantworten | zitieren | melden

Also in der MSDN Dokumentation steht folgendes drin:
Zitat
Wenden Sie das SuppressIldasmAttribute-Attribut auf eine Assembly oder ein Modul an, um ein Disassemblieren der Assembly oder des Moduls mit MSIL Disassembler-Tool (Ildasm.exe) zu verhindern.
Dieses Attribut verhindert nicht, dass eine Assembly mithilfe der Reflektion angezeigt wird.
Beachten Sie, dass das SuppressIldasmAttribute-Attribut die Anzeige von Header- und Metainformationen in MSIL Disassembler-Tool (Ildasm.exe) nicht blockiert.

Ich selber benutze den .NET Reactor und bin mit den Ergebnissen sehr zufrieden. Es ist auch nicht ganz so teuer wie die Konkurenz Produkte.
private Nachricht | Beiträge des Benutzers