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!
Hallo,
unter uns sind sicher einige die bereits mit WinRT gearbeitet haben.
Ich möchte demnächst ebenfalls in diese Richtung gehen und frage mich ob es, wie bei dem bisherigen .NET, so einfach ist den Code einzusehen und falls ja welche Möglichkeiten es derzeit gibt um das zu erschweren.
Gehen evtl. die normalen Obfuscatoren, die bereits jetzt für .Net2/4 angeboten werden?
Cu
Neidhard
Das Thema ist doch bereits ein klassiker oder?
Da du weißt wie der aktuelle Stand mit einsehen von Code ist, ist das Thema an sich doch beantwortet oder?
Da .Net so oder so auf dem IL Code arbeitet wirst du deinen Code nicht zu 100% unlesbar machen.
Ein Obfuscator erschwert zwar das lesen aber es gibt auch dafür Mittel und Wege um den Code wieder lesbar zu machen.
Wenn du deinen Code unlesbar machen willst entwickle mit nativem Sprachen wie C/C++.
Da ist man besser beraten.
T-virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Hallo T-Virus,
Das Thema ist doch bereits ein klassiker oder?
das sehe ich nicht so, zumindest nicht in Bezug auf WinRT. Es heißt ja immer, dass WinRT ein natives, COM-basiertes API ist. Das spricht nicht für die Einsehbarkeit des Codes. Und obwohl auch im Zusammenhang mit WinRT von einer Runtime und eine Sandbox gesprochen wird, ist zumindest in dem deutschen und englischen Wikipedia-Artikel zu WinRT nicht die Rede von IL-Code oder ähnlichem. Also ich muss sagen, ich wüsste momentan gar nicht so genau, ob der Code bei WinRT genauso einsehbar ist wie bei .NET einsehbar ist. Wobei wohl auch WinRT eine bestimme Art von Reflection ermöglicht.
Ich würde bezweifeln, dass man .NET-Obfuscatoren auch für WinRT verwenden kann, wenn es da denn überhaupt nötig ist.
herbivore
Hi Kollegen,
schelchte Nachricht an euch:
Man kommt relativ Problemlos ran. Jede WinRT App wird in C:\Program Files\WindowsApps installiert. Zwar hat der Ordner standardmäßig einen anderen Besitzer, den kann man aber umstellen, damit man den Ordner anguken kann. Ist man erst drin, kann man von verwalteten Programmen die Assemblies per ILSpy angucken.
EDIT: Hier noch ein Artikel dazu:
Reverse Engineering and Modifying Windows 8 apps
Gruß
Roland
Das ist schlecht. Gibt es denn derzeit Gegenmaßnahmen?
Mit Google relativ schnell zu finden:
Babel Obfuscator
EDIT: Soll keine Werbung sein. Kannte den hier bis vor 5 Minuten nicht und es gibt sicherlich auch andere 😉
Wichtig ist auch zu wissen, dass das Gleiche auch für Html/Javascript Apps gilt. Auch hier müsste man den Quellcode obfuscieren.
Gruß
Roland
Hallo Blacal,
We are now working on version 6.0.0.0 to support WinRT and we plan to release this new version in September.
Aktuell ist Version 5.6.0.0 vom 04.08.12. Die hat entsprechend wohl noch keine Unterstützung für WinRT. Da wir schon fast Mitte Oktober haben, kann man natürlich darüber spekulieren, ob die Verzögerung daher kommt, dass die WinRT Unterstützung doch nicht so einfach einzubauen ist. Aber das ist wie gesagt nur eine reine Vermutung. Vielleicht weiß jemand anders aus dem Forum mehr.
herbivore
de4dot: .NET deobfuscator and unpacker
Die gängigen Obfuscatoren werden damit 1 click reversed , auch das oben genannte Babel.
Momentan bietet confuser die beste Sicherheit, aber es ist auch nur eine Frage der Zeit bis das mit 1 click Tools umgangen wird.
mfg iSliver
edit:/
It currently supports the following .NET obfuscators:
Babel.NET
CliSecure / Agile.NET
CodeFort
CodeVeil
CodeWall
Crypto Obfuscator
DeepSea
Dotfuscator
Eazfuscator.NET
Goliath.NET
ILProtector
MPRESS
.NET Reactor
MaxtoCode
Rummage
Skater.NET
SmartAssembly
Spices.Net
Xenocode
Hallo iSliver,
Information, die verloren ist, z.B. die originalen Variablennamen oder die Namen von privaten Methoden, können prinzipiell nicht wiederhergestellt werden. Diese Namen können höchstens durch weniger kryptische, aber noch lange nicht sprechende Namen ersetzt werden.
Davon abgesehen vermisse ich bei deinem Beitrag den Bezug zu WinRT.
herbivore
WTF?
Supports some popular obfuscators
Deobfuscates control flow
Cross-assembly symbol renaming
Decrypts strings
Decrypts resources
Dumps embedded assemblies
Dumps encrypted methods
Deobfuscated files are runnable
Removes other obfuscator junk
Supports pure managed .NET files only
Fixes peverify errors created by the obfuscator
100% Open Source
Wenn es solche Tools gibt, kann man sich ja wirklich die Mühe sparen, seine Assemblys zu obfuszieren.
Christian
Weeks of programming can save you hours of planning
Wenn ihr das Thema _De_obfuscatoren weiter diskutieren wollt, dann bitte in einem neuen Thread. Hier geht es um Codesicherheit von WinRT. Dafür spielt es natürlich auch eine Rolle, dass es Deobfuscatoren gibt, aber Details würden wie gesagt in einen extra Thread gehören, zumal die genannten (De)Obfuscator sich in er erster Linie auf .NET und (noch) nicht auf WinRT beziehen.
Ich habe heute mein Babel-Lizenzupgrade auf 6.0.0 erhalten, welches Support für WinRT bietet. Fertig war die Version wohl schon seit ein paar Tagen, die Lizenzupgrades wurden aber erst jetzt verteilt. Es gibt damit also schon den ersten (wohl auch ein paar mehr) Obfuscator, der WinRT unterstützt. Ausprobiert habe ich das, mangels Testgerät, allerdings noch nicht.
Hat schon jemand einen obfuscator erfolgreich bei WinRT Apps benutzt?
Ich möchte eine App einrechen. Aber davor möchte ich es mit einem Obfuscator bearbeiten. Noch gibt es nicht viele Informationen dazu. Weder bei den Entwicklern von den Obfuscators, noch allgemein im Netz.
Weeks of programming can save you hours of planning
Wie soll mir der Link helfen? Dort wird nicht erwähnt mit welchem Obfuscator es funktioniert.
Bevor ich jetzt 200$ und mehr für einen obfuscator ausgebe, würde ich gerne sicher sein, dass der auch wirklich mit WinRt funktioniert und ob behandelte Apps durch die Kontrolle von Microsoft durchkommen.
Obfuscatoren haben Demoversionen zum ausprobieren und Webseiten, wo man sich informieren kann.
Weeks of programming can save you hours of planning
Mit einer Demo-Version behandelte App reiche ich doch nicht bei MS ein.
Ich würde gerne Erfahrungen von Leuten hören die bereits ein Obfuscator bei einer eingereichten Windows Store App erfolgreich genutzt haben.
Und ich habe bei keinem der Hersteller auf der Webseite genaue Informationen zu deren Programmen im Bezug auf WinRT gefunden. Höhstens Werbetexte, dass es jetzt auch mit WinRT funktioniert. Mehr leider nicht.
Hallo el_vital,
ich will sicher nicht vereiteln, dass noch jemand von seinen Erfahrungen berichtet. Immer her damit!
Auf der anderen Seite vermute ich, dass solche Erfahrungen noch so dünn gesät sind, dass sich vielleicht keiner findet, der davon berichten kann. Deshalb lass mich sagen, dass wenn auf einer Webseite steht, dass der Obfuscator für WinRT geeignet ist, ich dies als Zusicherung dieser Eigenschaft verstehen würde und sich der Händler aus meiner Sicht nicht darauf zurückziehen kann, dass dies nur als unverbindliche Werbeaussage zu verstehen gewesen wäre. Nach deutschem Recht würde dann ein wesentlicher Sachmangel vorliegen, der den Händler aus meiner Sicht auf Wunsch des Kunden zur Rücknahme des Produkts und Erstattung des Kaufpreises verpflichten würde.
Du kannst natürlich versuchen, dir die Eignung des Produkts für die Verwendung im Zusammenhang mit dem Windows App Store vorher vom Händler verbindlich bestätigen zu lassen.
Wichtig: Ich habe extra immer Händler geschrieben, weil der nach deutschem Recht der Vertragspartner und damit in der Pflicht ist. Natürlich kann man auch beim Hersteller nachfragen, nur ist fraglich, in wieweit eine Aussage/Auskunft des Herstellers den Händler verpflichtet. Der ist eigentlich nur für seine eigenen Aussagen und die Aussagen des Herstellers, die er übernimmt oder sich auf andere Weise zu eigen macht, verantwortlich.
herbivore
Ich werde mir ein Programm kaufen und hier berichten. Ich hätte nach der Beschreibung des Herstellers gerne den ".Net Obfuscation | Dotfuscator" in PRO von preemptive.com, aber dort ist nichteinmal ein Preis angegeben.
Auf nem Event neulich hat nen MS Guru gesagt, dass es voellig sinnfrei ist irgendwelches Geld oder Aufwaende in ein Obfuscator zu setzen.
Wenn man Business-Logik vor anderen wirklich schuetzen will, ist der einzige Weg, einen WebService zu konsumieren.
Es gibt einfach zuviel gute Tools, die einen verschleierten Code innerhalb weniger Sekunden brauchbar zurueckwandelt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Es geht mir bei dieser App nicht um Business-Logic oder um Daten.
Es geht um von mir programmierte Benutzersteuerelemente und bestimmte Algorithmen.
Es ist mir klar, dass es wieder in einigermaßen brauchbaren Code wandeln kann, aber ich möchte durch Obfuscator verhindern, dass meine App mit einem etwas anderem Aussehen und einem anderen Namen eine Woche später mehrfach in dem Store landet.
Es ist keine sehr komplexe App, aber etwas Programmieraufwand steckt schon drin.
Den Code in klarer Form zu lassen wäre Wahnsinn.
Du verstehst es nicht.
Es spielt keine Rolle ob Benutzer-Steuerelement oder Algorithmen oder Business-Code. Es gibt Tools, die verschleierten Code binnen Sekunden mit einem Tastendruck in lesbaren Code umwandelt.
Wenn jemand Deine Steuerelemente will, dann kriegt er die ohne großen Aufwand - mit ohne oder verschleiern.
Wenn Dir die Tatsache egal ist oder Du sie verdrängst dann gib ruhig ein paar Hundert Euro sinn-frei für so ein Tool aus.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich verstehe es schon. Ich möchte nur nicht, dass jeder Hinz und Kunz, der ein Programm zum wandeln in den sichtbaren Code nicht hat oder damit nicht umgehen kann, meine app vollständig oder in Teilen ohne Aufwand kopieren kann.
Ich habe eben gesehen, dass die appx-Datei neben der EXE und den DLL's auch die xaml Dateien im Klartext beinhaltet.
Wenn das alles in dem WindowsApps Ordner landet, ist es auch unschön
Ich nutze jetzt den "Crypto Obfuscator For .Net" von LogicNP Software.
Damit funktioniert es gut und meine App wurde erfolgreich zertifiziert und in den Shop gestellt.