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
Schutz vor Deobfuscation

Moderationshinweis von herbivore (10.10.2013 - 15:46)

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!

theYoRecords
myCSharp.de - Member



Dabei seit:
Beiträge: 73

Themenstarter:

Schutz vor Deobfuscation

beantworten | zitieren | melden

Hallo,

Es gibt schon unzählige Threads zum Thema obfuscation, wie sinnvoll es ist und welcher wohl der beste Obfuscator ist.. Aber hier mal was anderes:

Gibt es eine Möglichkeit Programme aufzuhalten, die sich ums Gegenteil kümmern?

Ich habe vor ein Paar Tagen den Confuser kennengelernt, der an sich ein sehr guter Obfuscator zu sein scheint. Heute musste ich leider feststellen, dass es da ja z.b. NETDeob gibt, wodurch das ja alles noch weniger Sinn hat.

Mir war klar, dass obfuscation kein wirklicher Schutz ist. Aber dass 1 Klick reicht ist ja wirklich nicht mehr lustig..

Kennt jenand eine Möglichkeit so einer automatisierten Umkehrung vorzubeugen?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.928

beantworten | zitieren | melden

Ich weiß nicht, wie oft man dieses Thema noch durchkauen muss: Nein, nein und wieder nein. Es gibt keine Möglichkeit (Stand heute).
Einfach mal mit .NET beschäftigen, wie das Framework funktioniert und man versteht auch wieso.

Update 06.01.2015: mittlerweile gibt es .NET native, mit dem dies möglich ist.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo theYoRecords, hallo zusammen,

ich stimme Abt zu, dass wir das Thema "obfuscation, wie sinnvoll es ist und welcher wohl der beste Obfuscator ist" nicht noch mal durchkauen sollten und bitte alle darum, sich daran zu halten.

Das Thema Deobfuscation ist aus meiner Sicht allerdings noch recht neu und wurde auf myCSharp.de bisher wohl nur in WinRT Codesicherheit: Kann der "Quellcode" wie bei .NET angesehen werden? Welche Obfuscatoren gibts? und auch dort nur am Rande behandelt.

Praktisch kenne ich mich damit leider nicht aus und weiß nicht, wie gut Deobfuscatoren tatsächlich arbeiten. Aber Grundsätzlich ist klar, dass auch der beste Obfuscatior am Ende nur CIL-Code erzeugen kann und daher eine Umkehrung in einem gewissen Maße immer möglich sein wird. Die Frage ist, wie gut menschenlesbar das Ergebnis ist. Die meisten Obsfucatoren werden möglichst viel Information, die ein Mensch zum Verständnis des Codes benötigt, also z.B. Variablennamen, möglichst rückstandsfrei entfernen. Und was weg ist, ist weg. Aus meiner Sicht kann ein Deobfuscator nur weniger kryptische Namen verwenden, aber nicht die Originalnamen wieder herstellen.

Manche Namen können allerdings nicht entfernt werden, ohne die Schnittstelle einer Assembly nach außen zu verändern. Diese Namen muss ein Deobfuscator gar nicht wiederherstellen, sondern die waren ja nie weg.

herbivore
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.928

beantworten | zitieren | melden

Zitat von herbivore
Und was weg ist, ist weg. Aus meiner Sicht kann ein Deobfuscator nur weniger kryptische Namen verwenden, aber nicht die Originalnamen wieder herstellen.

Manche Obfs verwenden leider keine numerischen Variablen, sondern haben einen Algorithmus, wie sie Variablen nennen.
Und mittlerweile ist in vielen Fällen bekannt, wie die Namen zusammen gesetzt werden und daher können einige Deobfs diese auch zurück wandeln.
private Nachricht | Beiträge des Benutzers
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 520
Herkunft: Münster

beantworten | zitieren | melden

Ich hole den Thread mal wieder raus, weil ich kürzlich eine tolle Alternative zur Obfuscation gefunden habe: http://www.infralution.com/netencryptor.html

Das Produkt wurde hier Erfahrungen mit dem Infralution NetEncryptor (Obfuscator) auch schonmal angesprochen. Ich habe mir es kürzlich gekauft und konnte bisher keinerlei Probleme feststellen.

Damit werden .NET Reflector, ILSpy und Konsorten nutzlos :)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von hypersurf am .

Moderationshinweis von herbivore (20.12.2013 - 09:14)

Kurze Erklärung: Im Unterschied zur normalen Obfuscation, bei dem die originale Assembly umgebaut wird, indem z.B. sprechende Namen durch kryptische ersetzt werden, aber die Assembly direkt ausführbar bleibt, wird sie beim .NET Encryptor verschlüsselt als Ressource in einer Bootstrapper EXE hinzugefügt, die die Assembly erst zur Laufzeit wieder entschlüsselt.

private Nachricht | Beiträge des Benutzers